61 Commits

Author SHA1 Message Date
Egon Rijpkema
1f1679fef1 Crude playbook to set virsh ceph secrets. 2018-07-23 13:32:52 +02:00
Egon Rijpkema
624326aaef Get rid of deprication warnings 2018-07-20 11:49:20 +02:00
Egon Rijpkema
4933956416 re-enabled post install 2018-07-20 11:02:10 +02:00
Egon Rijpkema
38936554bd We actually need the merlin images
It's needed for ceph, for instance

Revert "Reverting to standard docker images"

This reverts commit 3083a84b19.
2018-07-20 10:07:15 +02:00
Egon Rijpkema
3083a84b19 Reverting to standard docker images 2018-07-19 16:35:07 +02:00
Egon Rijpkema
c49db46a4d Create vlan985 subnet like in gearshift 2018-07-19 15:42:19 +02:00
Egon Rijpkema
b4d9eed775 This step sometimes fails inexplicably
..and succeeds on retry.
2018-07-19 15:06:12 +02:00
Egon Rijpkema
50d5c672d0 This makes a neutron net-list possible
as well as a openstack network list.
2018-07-19 13:59:55 +02:00
Egon Rijpkema
e9c62529ad Cleanup network namespaces (vxlans) 2018-07-19 13:19:25 +02:00
Egon Rijpkema
3369b5d9d9 added virsh destroy to nuke 2018-07-18 14:05:27 +02:00
Egon Rijpkema
0b92467965 Bind mounting /var/run/netns
After reading:
https://www.slideshare.net/clayton_oneill/dockerizing-the-hard-services-neutron-amp-nova
2018-07-16 16:38:34 +02:00
Wim Nap
8942c31edc removed configuration ceph keyring 2018-07-16 14:17:13 +02:00
Wim Nap
4e2477bb94 changed inventory file, removed vlan-tag for physical interface 2018-07-13 15:01:40 +02:00
Egon Rijpkema
b692f83b61 Should be group_vars 2018-07-06 10:48:29 +02:00
Wim Nap
a6b1f53f90 some ceph changes 2018-07-06 09:56:05 +02:00
Wim Nap
239daeceee changed keyring name for glance 2018-06-29 14:03:44 +02:00
Wim Nap
d013500aae changes in ceph-configs 2018-06-29 14:03:44 +02:00
Egon Rijpkema
d447413dee Grouovars for ceph setup 2018-06-29 13:41:58 +02:00
Egon Rijpkema
75f384c579 Added variables ceph for glance and cinder. 2018-06-20 16:39:18 +02:00
Egon Rijpkema
c0555cdcfa Fixes for variable ceph use 2018-06-20 16:01:30 +02:00
Egon Rijpkema
7cc4e17189 Added variables for ceph and nova compute 2018-06-20 15:48:31 +02:00
Egon Rijpkema
06db21ef4c added reference to secrets file 2018-06-20 13:44:55 +02:00
Egon Rijpkema
3f8e213bbc Speed up 2018-06-12 15:01:07 +02:00
Egon Rijpkema
2c6f89a6c3 trew in update cache 2018-06-12 14:15:12 +02:00
Egon Rijpkema
594edf728f Added storage nodes here, too
might dissappear again and moved to ceph-ansible repo.
2018-06-04 16:21:03 +02:00
Egon Rijpkema
056f2bb9fd Playbook to add the ubuntu cloud repoo on all hosts. 2018-06-04 16:06:23 +02:00
Egon Rijpkema
9af8291517 Removed app armor 2018-05-04 15:40:38 +02:00
Egon Rijpkema
2effda6f58 setting debug to true 2018-05-02 19:37:18 +02:00
Wim Nap
afa6dddb6b added ceph-conf to systemd-unitfile nova-compute 2018-04-17 15:38:02 +02:00
Wim Nap
e188ea4915 added ceph.conf for nova-compute to systemd-unitfile 2018-04-17 11:13:44 +02:00
Wim Nap
693b20e3bf small change in systemd-file glance-controller 2018-04-17 10:28:06 +02:00
Wim Nap
6a5b46ace7 added ceph.conf for glance-controller 2018-04-17 10:03:26 +02:00
Wim Nap
4d43334cb3 new ceph.conf for nova-compute and cinder-storage 2018-04-16 17:08:49 +02:00
Wim Nap
0c705f4c7a changed file permissions ceph.conf 2018-04-16 11:16:37 +02:00
Wim Nap
5a375bc850 added ceph.conf for nova-compute 2018-04-16 10:48:27 +02:00
Wim Nap
c89cf9065f adding backslash to cinder-storage systemd-unitfile 2018-04-16 10:34:15 +02:00
Wim Nap
62be5bd6b5 changed docker-image for cinder-storage to merlin 2018-04-16 09:59:41 +02:00
Wim Nap
28431dca51 removed lvm-references 2018-04-13 17:56:04 +02:00
Wim Nap
016405ffd7 removed lvm-references 2018-04-13 17:17:37 +02:00
Wim Nap
240a1f22f3 git push --set-upstream origin merlin 2018-04-13 16:19:17 +02:00
Egon Rijpkema
a150b58aaa Added more nodes 2018-03-14 08:54:18 +01:00
Egon Rijpkema
cc18e247c4 Using half the cluster for linuxbridge. 2018-03-01 15:17:50 +01:00
Egon Rijpkema
7114509697 More sleep for cluster 2018-02-28 10:36:17 +01:00
Egon Rijpkema
6a6ebd0c60 current state merlin 2018-02-22 16:32:40 +01:00
Egon Rijpkema
7a41ca4187 iEnsure installation of same openstack client 2018-02-22 16:31:18 +01:00
Egon Rijpkema
469bcd769c Added local_ip 2018-02-20 16:24:26 +01:00
Egon Rijpkema
598cbeec9d hope retries will work this way. 2018-02-20 15:29:14 +01:00
Egon Rijpkema
20ce7bcfc3 set overlay ip 2018-02-20 15:28:54 +01:00
Egon Rijpkema
1bbf1e4270 added retry 2018-02-20 14:24:41 +01:00
Egon Rijpkema
84b901c8b3 make keystone install more resiliant... 2018-02-16 13:39:21 +01:00
Egon Rijpkema
e3f3d5d3b7 Fix syntax error. 2018-02-16 11:45:53 +01:00
Egon Rijpkema
68ac7a0a6d Added some explanations. 2018-02-06 13:34:56 +01:00
Egon Rijpkema
8da96590ac It's horizon not glance. 2018-02-05 16:29:12 +01:00
Egon Rijpkema
fea7aaaff6 using the proper test machines 2018-02-05 15:23:33 +01:00
Egon Rijpkema
fb2bdfe543 added missing secrets 2018-01-30 14:50:08 +01:00
Egon Rijpkema
3347fa7c25 switched to nuclear fusion 2018-01-30 14:49:39 +01:00
Egon Rijpkema
f776756205 fixed interface mappings 2018-01-30 14:48:52 +01:00
Egon Rijpkema
59233d8019 playbook to reset a cluster 2018-01-30 09:57:11 +01:00
Egon Rijpkema
35551f69c1 inventory for the merlin cluster 2018-01-30 09:56:45 +01:00
Egon Rijpkema
85dcae1baf added heat password 2018-01-30 09:55:27 +01:00
Egon Rijpkema
99eba86794 removed depricated hosts key 2018-01-30 09:55:06 +01:00
33 changed files with 458 additions and 85 deletions

View File

@@ -1,2 +1,5 @@
[defaults] [defaults]
hostfile = hosts inventory = merlin
stdout_callback = debug
vault_password_file = .vault_pass.txt
forks = 20

9
group_vars/all.yml Normal file
View File

@@ -0,0 +1,9 @@
---
use_ceph: true
ceph_mon_initial_members:
ceph_mon_host:
ceph_public_network:
ceph_osd_pool_default_size:
ceph_compute_client_keyring:
ceph_cinder_client_keyring:
ceph_images_client_keyring:

26
hosts-openstack03 Normal file
View File

@@ -0,0 +1,26 @@
[databases]
openstack03.gcc.rug.nl
[keystone]
openstack03.gcc.rug.nl
[glance-controller]
openstack03.gcc.rug.nl
[horizon]
openstack03.gcc.rug.nl
[rabbitmq]
openstack03.gcc.rug.nl
[memcached]
openstack03.gcc.rug.nl
[neutron-controller]
openstack03.gcc.rug.nl
[nova-controller]
openstack03.gcc.rug.nl
[nova-compute]
openstack03.gcc.rug.nl

54
merlin Normal file
View File

@@ -0,0 +1,54 @@
[nova-compute]
merlin-managementnode002 physical_interface_mappings=provider:enp5s0f1 overlay_ip=172.23.43.102
merlin-managementnode003 physical_interface_mappings=provider:enp5s0f1 overlay_ip=172.23.43.103
merlin-node001 physical_interface_mappings=provider:enp130s0f0 overlay_ip=172.23.43.1
merlin-node002 physical_interface_mappings=provider:enp130s0f0 overlay_ip=172.23.43.2
merlin-node003 physical_interface_mappings=provider:enp130s0f0 overlay_ip=172.23.43.3
merlin-node004 physical_interface_mappings=provider:enp130s0f0 overlay_ip=172.23.43.4
merlin-node005 physical_interface_mappings=provider:enp130s0f0 overlay_ip=172.23.43.5
[databases]
merlin-managementnode001
merlin-managementnode002
merlin-managementnode003
[rabbitmq]
merlin-managementnode001
merlin-managementnode002
merlin-managementnode003
[horizon]
merlin-managementnode001
[memcached]
merlin-managementnode001
[nova-controller]
merlin-managementnode001
[keystone]
merlin-managementnode001
[neutron-controller]
merlin-managementnode001 physical_interface_mappings=provider:enp5s0f1 overlay_ip=172.23.43.101
[heat]
merlin-managementnode001
[glance-controller]
merlin-managementnode002
[cinder-controller]
merlin-managementnode003
[cinder-storage]
merlin-managementnode002
merlin-managementnode003
merlin-node001
merlin-node002
merlin-node003
merlin-node004
merlin-node005
[stor]
merlin-stor00[1:8]

37
merlinsdn Normal file
View File

@@ -0,0 +1,37 @@
[nova-compute]
merlin-managementnode002 physical_interface_mappings=provider:eno3
merlin-managementnode003 physical_interface_mappings=provider:eno3
merlin-node001 physical_interface_mappings=provider:eno3
merlin-node003 physical_interface_mappings=provider:eno3
merlin-node004 physical_interface_mappings=provider:eno3
[databases]
merlin-managementnode001
merlin-managementnode002
merlin-managementnode003
[rabbitmq]
merlin-managementnode001
merlin-managementnode002
merlin-managementnode003
[horizon]
merlin-managementnode001
[memcached]
merlin-managementnode001
[nova-controller]
merlin-managementnode001
[keystone]
merlin-managementnode001
[neutron-controller]
merlin-managementnode001 physical_interface_mappings=provider:eno3
[heat]
merlin-managementnode001
[glance-controller]
merlin-managementnode001

28
nuke.yml Normal file
View File

@@ -0,0 +1,28 @@
---
# This playbook will reset the instalation to facilitate a new installation.
# All data is lost!
- hosts: all
become: true
name: Dummy to gather facts
tasks:
- name: Stop docker service
shell: "systemctl stop docker"
- name: Verify docker is stopped.
systemd:
name: docker
state: stopped
- name: remove volumes
shell: "rm -rf /srv"
- name: remove network namespaces
shell: "rm /var/run/netns/*"
ignore_errors: true
- hosts: nova-compute
gather_facts: false
become: true
tasks:
- name: kill all vm's
shell: "for machine in $(virsh list --uuid ); do virsh destroy $machine ; done"
- name: wipe all vm's
shell: "for machine in $(virsh list --uuid --all); do virsh undefine $machine ; done"

View File

@@ -15,11 +15,11 @@
- name: post install configuration - name: post install configuration
command: docker exec -i keystone.service bash -c "source /root/admin-openrc.sh && {{ item }}" command: docker exec -i keystone.service bash -c "source /root/admin-openrc.sh && {{ item }}"
with_items: with_items:
- openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider - openstack network create --share --external --provider-physical-network provider --provider-network-type vlan --provider-segment 985 vlan985
- > - >
openstack subnet create --network provider openstack subnet create --subnet-range 172.23.59.0/22 --gateway 172.23.59.1
--allocation-pool start={{ allocation_pool['start'] }},end={{ allocation_pool['end'] }} --network vlan985 --allocation-pool start=172.23.59.75,end=172.23.59.100
--dns-nameserver {{ dns_nameserver }} --gateway {{ gateway }} --subnet-range {{ subnet_range }} providersub --dns-nameserver 172.23.32.248 vlan985_subnet
- openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano - openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
- openstack keypair create --public-key /root/id_rsa.pub adminkey - openstack keypair create --public-key /root/id_rsa.pub adminkey

View File

@@ -0,0 +1,9 @@
$ANSIBLE_VAULT;1.1;AES256
39313161646365373665646331613930316437363735326262376531636166346138303139613138
3361353633616136303365646165643339333130393031380a373934636436626336326436306666
34316532333165346139633239313930326238333134633365666138326338386632373937343335
3262383863653136300a393464646365623763663063303936646462313764633736613562633661
62313961626165363761656363393538396461653936353932303137626435626161316239623338
65656132353136656430613462663466616432643761303366396461653066616162366666356533
39386261623861323861633739343237386266306264356436666430313531303238636235393665
31396533306261393835

View File

@@ -0,0 +1,14 @@
[global]
fsid = ef0b40a2-bc8c-4432-9cde-0ca7c82c8717
mon_initial_members = merlin-managementnode002
mon_host = 172.23.59.102
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
# Your network address
public network = 172.23.59.0/24
osd pool default size = 2
[client.volumes]
keyring = /etc/ceph/ceph.client.volumes.keyring

View File

@@ -0,0 +1 @@
d0db6ba7-a0c9-4da6-b0bc-aa7846325333

View File

@@ -6,8 +6,11 @@
name: secrets name: secrets
tags: vars tags: vars
#- command: uuidgen
# register: uuid
- set_fact: - set_fact:
docker_image: registry.webhosting.rug.nl/hpc/openstack-cinder-storage:latest docker_image: registry.webhosting.rug.nl/hpc/openstack-cinder-storage-merlin:latest
env_vars: > env_vars: >
-e "MY_IP={{ listen_ip | default(ansible_default_ipv4.address) }}" -e "MY_IP={{ listen_ip | default(ansible_default_ipv4.address) }}"
-e "CINDER_HOST={{ listen_ip | default(hostvars[groups['cinder-storage'][0]]['ansible_default_ipv4']['address']) }}" -e "CINDER_HOST={{ listen_ip | default(hostvars[groups['cinder-storage'][0]]['ansible_default_ipv4']['address']) }}"
@@ -21,6 +24,11 @@
-e "RABBIT_HOST={{ listen_ip | default(hostvars[groups['rabbitmq'][0]]['ansible_default_ipv4']['address']) }}" -e "RABBIT_HOST={{ listen_ip | default(hostvars[groups['rabbitmq'][0]]['ansible_default_ipv4']['address']) }}"
-e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}" -e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}"
-e "RABBIT_USER=openstack" -e "RABBIT_USER=openstack"
-e "USE_CEPH={{ use_ceph }}"
-e "MON_INITIAL_MEMBERS={{ ceph_mon_initial_members }}"
-e "MON_HOST={{ ceph_mon_host }}"
-e "PUBLIC_NETWORK={{ ceph_public_network }}"
-e "OSD_POOL_DEFAULT_SIZE={{ ceph_osd_pool_default_size }}"
tags: vars tags: vars
- name: pull docker image - name: pull docker image
@@ -36,6 +44,7 @@
with_items: with_items:
- /srv/cinder-storage - /srv/cinder-storage
- /srv/cinder-storage/root - /srv/cinder-storage/root
- /srv/cinder-storage/etc/ceph
- name: initial setup - name: initial setup
command: > command: >
@@ -43,10 +52,21 @@
--privileged --privileged
{{ env_vars }} {{ env_vars }}
-v /srv/cinder-storage/root:/root \ -v /srv/cinder-storage/root:/root \
-v "{{ storage_volume }}":/dev/cinder_storage_volume \
{{ docker_image }} /etc/bootstrap.sh {{ docker_image }} /etc/bootstrap.sh
tags: bootstrap tags: bootstrap
- name: copy ceph-client configurationfile
copy:
src: files/ceph.conf
dest: /srv/cinder-storage/etc/ceph/ceph.conf
mode: 0644
- name: copy ceph-client-keyring
copy:
src: files/ceph.client.volumes.keyring
dest: /srv/cinder-storage/etc/ceph/ceph.client.volumes.keyring
mode: 0644
- name: install service file. - name: install service file.
template: template:
src: templates/cinder-storage.service src: templates/cinder-storage.service
@@ -56,6 +76,12 @@
group: root group: root
tags: systemd tags: systemd
#- name: set ceph client keyring
# copy:
# content: "{{ceph_cinder_client_keyring}}"
# dest: /srv/cinder-storage/etc/ceph
# when: use_ceph
- command: systemctl daemon-reload - command: systemctl daemon-reload
tags: systemd tags: systemd

View File

@@ -11,11 +11,8 @@ ExecStartPre=-/usr/bin/docker rm %n
ExecStart=/usr/bin/docker run --name %n \ ExecStart=/usr/bin/docker run --name %n \
--privileged \ --privileged \
{{ env_vars | replace('\n', '') }} \ {{ env_vars | replace('\n', '') }} \
-v "/dev/cinder-volumes/":/dev/cinder-volumes \
-v /srv/cinder-storage/root:/root \ -v /srv/cinder-storage/root:/root \
-v "{{ storage_volume }}":/dev/cinder_storage_volume \ -v /etc/ceph:/etc/ceph \
-v "/dev/lvm":/dev/lvm \
-v "/srv/cinder-storage/volumes/:/var/lib/cinder/volumes/" \
-p 8777:8776 \ -p 8777:8776 \
-p 3260:3260 \ -p 3260:3260 \
{{ docker_image }} {{ docker_image }}

View File

@@ -26,4 +26,7 @@
owner: root owner: root
group: root group: root
- name: disable apparmor
apt: pkg=apparmor state=absent
- include: docker.yml - include: docker.yml

View File

@@ -0,0 +1,2 @@
[client.images]
key = AQDCpDNbJ3DqDBAAvUOUcxEoZNvQUfoaU5i8iQ==

View File

@@ -0,0 +1,14 @@
[global]
fsid = ef0b40a2-bc8c-4432-9cde-0ca7c82c8717
mon_initial_members = merlin-managementnode002
mon_host = 172.23.59.102
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
# Your network address
public network = 172.23.59.0/24
osd pool default size = 2
[client.images]
keyring = /etc/ceph/ceph.client.images.keyring

View File

@@ -6,7 +6,7 @@
name: secrets name: secrets
- set_fact: - set_fact:
docker_image: registry.webhosting.rug.nl/hpc/openstack-glance:latest docker_image: registry.webhosting.rug.nl/hpc/openstack-glance-merlin:latest
env_vars: > env_vars: >
-e "GLANCE_HOST={{ listen_ip | default(hostvars[groups['glance-controller'][0]]['ansible_default_ipv4']['address']) }}" -e "GLANCE_HOST={{ listen_ip | default(hostvars[groups['glance-controller'][0]]['ansible_default_ipv4']['address']) }}"
-e "GLANCE_PASSWORD={{ secrets['GLANCE_PASSWORD'] }}" -e "GLANCE_PASSWORD={{ secrets['GLANCE_PASSWORD'] }}"
@@ -19,11 +19,16 @@
-e "RABBIT_HOST={{ listen_ip | default(hostvars[groups['rabbitmq'][0]]['ansible_default_ipv4']['address']) }}" -e "RABBIT_HOST={{ listen_ip | default(hostvars[groups['rabbitmq'][0]]['ansible_default_ipv4']['address']) }}"
-e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}" -e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}"
-e "RABBIT_USER=openstack" -e "RABBIT_USER=openstack"
-e "USE_CEPH={{ use_ceph }}"
-e "MON_INITIAL_MEMBERS={{ ceph_mon_initial_members }}"
-e "MON_HOST={{ ceph_mon_host }}"
-e "PUBLIC_NETWORK={{ ceph_public_network }}"
-e "OSD_POOL_DEFAULT_SIZE={{ ceph_osd_pool_default_size }}"
- name: pull docker image #- name: pull docker image
docker_image: # docker_image:
name: "{{ docker_image }}" # name: "{{ docker_image }}"
tags: pull # tags: pull
- name: Make build and persistent directories - name: Make build and persistent directories
file: file:
@@ -33,6 +38,25 @@
with_items: with_items:
- /srv/glance - /srv/glance
- /srv/glance/root - /srv/glance/root
- /srv/glance/etc/ceph
- name: copy ceph-client configurationfile
copy:
src: files/ceph.conf
dest: /srv/glance/etc/ceph/ceph.conf
mode: 0644
- name: copy ceph-client-keyring
copy:
src: files/ceph.client.images.keyring
dest: /srv/glance/etc/ceph/ceph.client.images.keyring
mode: 0644
#- name: set ceph client keyring
# copy:
# content: "{{ceph_images_client_keyring}}"
# dest: /srv/cinder-storage/etc/ceph/ceph.client.images.keyring
# when: use_ceph
- name: install service file. - name: install service file.
template: template:

View File

@@ -11,7 +11,7 @@ ExecStartPre=-/usr/bin/docker rm %n
ExecStart=/usr/bin/docker run --name %n \ ExecStart=/usr/bin/docker run --name %n \
{{ env_vars | replace('\n', '') }} \ {{ env_vars | replace('\n', '') }} \
-v /srv/glance/root:/root \ -v /srv/glance/root:/root \
-v /var/lib/glance/images:/var/lib/glance/images \ -v /etc/ceph:/etc/ceph \
-p 9292:9292 \ -p 9292:9292 \
{{ docker_image }} {{ docker_image }}

View File

@@ -1,5 +1,5 @@
[Unit] [Unit]
Description=Openstack Glance Container Description=Openstack Horizon Container
After=docker.service After=docker.service
Requires=docker.service Requires=docker.service

View File

@@ -45,14 +45,14 @@
MYSQL_ROOT_PASSWORD: "{{ secrets['MYSQL_ROOT_PASSWORD'] }}" MYSQL_ROOT_PASSWORD: "{{ secrets['MYSQL_ROOT_PASSWORD'] }}"
DB_HOST: "{{ listen_ip | default(hostvars[groups['databases'][0]]['ansible_default_ipv4']['address']) }}" DB_HOST: "{{ listen_ip | default(hostvars[groups['databases'][0]]['ansible_default_ipv4']['address']) }}"
register: result register: result
until: result|succeeded until: result is succeeded
# sometimes the initial connect fails. # sometimes the initial connect fails.
# Retry until it succeeds. # Retry until it succeeds.
retries: 7 retries: 7
delay: 3 delay: 3
ignore_errors: yes ignore_errors: yes
- name: keystone manage commands to setup db - name: keystone manage commands to setup db_sync
command: > command: >
/usr/bin/docker run --rm /usr/bin/docker run --rm
--add-host=mariadb:{{ listen_ip | default(hostvars[groups['databases'][0]]['ansible_default_ipv4']['address']) }} --add-host=mariadb:{{ listen_ip | default(hostvars[groups['databases'][0]]['ansible_default_ipv4']['address']) }}
@@ -69,6 +69,11 @@
--bootstrap-internal-url http://{{ listen_ip | default(hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address']) }}:35357/v3/ --bootstrap-internal-url http://{{ listen_ip | default(hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address']) }}:35357/v3/
--bootstrap-public-url http://{{ listen_ip | default(hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address']) }}:5000/v3/ --bootstrap-public-url http://{{ listen_ip | default(hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address']) }}:5000/v3/
--bootstrap-region-id RegionOne --bootstrap-region-id RegionOne
# sometimes the initial connect fails.
# Retry until it succeeds.
retries: 7
delay: 3
ignore_errors: yes
- name: make sure service is started - name: make sure service is started
systemd: systemd:
@@ -85,12 +90,19 @@
-e "OS_AUTH_URL=http://${KEYSTONE_HOST}:35357/v3" -e "OS_AUTH_URL=http://${KEYSTONE_HOST}:35357/v3"
-e "OS_PASSWORD={{ secrets['OS_PASSWORD'] }}" -e "OS_PASSWORD={{ secrets['OS_PASSWORD'] }}"
{{ docker_image }} bash /etc/bootstrap.sh {{ docker_image }} bash /etc/bootstrap.sh
register: result
retries: 7
delay: 3
- name: install openstack repo key host.
command: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5EDB1B62EC4926EA
tags: openstackclient
- name: install openstack repo on host. - name: install openstack repo on host.
command: > apt_repository:
echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/ocata main" > /etc/apt/sources.list.d/ocata.list && repo: "deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/ocata main"
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5EDB1B62EC4926EA filename: ocata
tags: openstackclient tags: openstackclient
- name: install openstack client for management - name: install openstack client for management

View File

@@ -1,3 +1,5 @@
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_TENANT_NAME=admin export OS_TENANT_NAME=admin
export OS_USERNAME=admin export OS_USERNAME=admin
export OS_PASSWORD={{ hostvars[groups['keystone'][0]]['OS_PASSWORD'] }} export OS_PASSWORD={{ hostvars[groups['keystone'][0]]['OS_PASSWORD'] }}

View File

@@ -70,3 +70,8 @@
- name: start service at boot. - name: start service at boot.
command: systemctl reenable mysql.service command: systemctl reenable mysql.service
- name: Give the cluster some time to initialize replication.
command: bash -c "sleep 60 && systemctl daemon-reload"
when: groups['databases'] | length >= 3

View File

@@ -6,7 +6,7 @@
name: secrets name: secrets
- set_fact: - set_fact:
docker_image: "registry.webhosting.rug.nl/hpc/openstack-neutron-controller:latest" docker_image: "registry.webhosting.rug.nl/hpc/openstack-neutron-controller-merlin:latest"
- name: pull docker image - name: pull docker image
docker_image: docker_image:
@@ -29,6 +29,7 @@
-e "NOVA_CONTROLLER_HOST={{ listen_ip | default(hostvars[groups['nova-controller'][0]]['ansible_default_ipv4']['address']) }}" -e "NOVA_CONTROLLER_HOST={{ listen_ip | default(hostvars[groups['nova-controller'][0]]['ansible_default_ipv4']['address']) }}"
-e "NOVA_PLACEMENT_PASSWORD={{ secrets['NOVA_PLACEMENT_PASSWORD'] }}" -e "NOVA_PLACEMENT_PASSWORD={{ secrets['NOVA_PLACEMENT_PASSWORD'] }}"
-e "NOVA_PLACEMENT_USER=placement" -e "NOVA_PLACEMENT_USER=placement"
-e "OVERLAY_IP={{ overlay_ip }}"
-e "OS_PASSWORD={{ secrets['OS_PASSWORD'] }}" -e "OS_PASSWORD={{ secrets['OS_PASSWORD'] }}"
-e "PHYSICAL_INTERFACE_MAPPINGS={{ physical_interface_mappings }}" -e "PHYSICAL_INTERFACE_MAPPINGS={{ physical_interface_mappings }}"
-e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}" -e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}"

View File

@@ -17,6 +17,7 @@ ExecStart=/usr/bin/docker run --name %n \
--privileged \ --privileged \
--network host \ --network host \
-v /lib/modules:/lib/modules \ -v /lib/modules:/lib/modules \
-v /var/run/netns:/var/run/netns \
{{ docker_image }} /etc/run.sh {{ docker_image }} /etc/run.sh
[Install] [Install]

View File

@@ -0,0 +1,14 @@
[global]
fsid = ef0b40a2-bc8c-4432-9cde-0ca7c82c8717
mon_initial_members = merlin-managementnode002
mon_host = 172.23.59.102
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
# Your network address
public network = 172.23.59.0/24
osd pool default size = 2
[client.compute]
keyring = /etc/ceph/ceph.client.compute.keyring

View File

@@ -0,0 +1 @@
b5044271-1918-4070-822c-f19ed14d7494

View File

@@ -7,7 +7,7 @@
tags: vars tags: vars
- set_fact: - set_fact:
docker_image: registry.webhosting.rug.nl/hpc/openstack-nova-compute:latest docker_image: registry.webhosting.rug.nl/hpc/openstack-nova-compute-merlin:latest
tags: vars tags: vars
- name: pull docker image - name: pull docker image
@@ -16,6 +16,27 @@
force: True force: True
tags: pull tags: pull
- name: Make build and persistent directories
file:
path: "{{ item }}"
state: directory
mode: 0777
with_items:
- /srv/nova-compute
- /srv/nova-compute/etc/ceph
- name: copy ceph-client configurationfile
copy:
src: files/ceph.conf
dest: /srv/nova-compute/etc/ceph/ceph.conf
mode: 0644
- name: copy ceph-client-keyring
copy:
src: files/ceph.client.compute.keyring
dest: /srv/nova-compute/etc/ceph/ceph.client.compute.keyring
mode: 0644
- name: install service file. - name: install service file.
template: template:
src: templates/nova-compute.service src: templates/nova-compute.service
@@ -25,6 +46,12 @@
group: root group: root
tags: systemd tags: systemd
#- name: set ceph client keyring
# copy:
# content: "{{ceph_compute_client_keyring}}"
# dest: /srv/nova-compute/etc/ceph
# when: use_ceph
- command: systemctl daemon-reload - command: systemctl daemon-reload
tags: systemd tags: systemd
@@ -47,3 +74,8 @@
- name: let nova controler discover new host - name: let nova controler discover new host
shell: "sleep 10 && docker exec -i nova-controller.service nova-manage cell_v2 discover_hosts" shell: "sleep 10 && docker exec -i nova-controller.service nova-manage cell_v2 discover_hosts"
delegate_to: "{{ hostvars[groups['nova-controller'][0]]['ansible_hostname'] }}" delegate_to: "{{ hostvars[groups['nova-controller'][0]]['ansible_hostname'] }}"
register: result
until: result is succeeded
retries: 7
delay: 3
ignore_errors: yes

View File

@@ -26,19 +26,27 @@ ExecStart=/usr/bin/docker run --name %n \
-e "NOVA_PLACEMENT_PASSWORD={{ secrets['NOVA_PLACEMENT_PASSWORD'] }}" \ -e "NOVA_PLACEMENT_PASSWORD={{ secrets['NOVA_PLACEMENT_PASSWORD'] }}" \
-e "NOVA_PLACEMENT_USER=placement" \ -e "NOVA_PLACEMENT_USER=placement" \
-e "NOVA_USER=nova" \ -e "NOVA_USER=nova" \
-e "OVERLAY_IP={{ overlay_ip }}" \
-e "OS_PASSWORD={{ secrets['OS_PASSWORD'] }}" \ -e "OS_PASSWORD={{ secrets['OS_PASSWORD'] }}" \
-e "PHYSICAL_INTERFACE_MAPPINGS={{ physical_interface_mappings }}" \ -e "PHYSICAL_INTERFACE_MAPPINGS={{ physical_interface_mappings }}" \
-e "RABBIT_HOST={{ hostvars[groups['rabbitmq'][0]]['listen_ip'] | default(hostvars[groups['rabbitmq'][0]]['ansible_default_ipv4']['address']) }}" \ -e "RABBIT_HOST={{ hostvars[groups['rabbitmq'][0]]['listen_ip'] | default(hostvars[groups['rabbitmq'][0]]['ansible_default_ipv4']['address']) }}" \
-e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}" \ -e "RABBIT_PASSWORD={{ secrets['RABBIT_PASSWORD'] }}" \
-e "RABBIT_USER=openstack" \ -e "RABBIT_USER=openstack" \
-e "USE_CEPH={{ use_ceph }}" \
-e "MON_INITIAL_MEMBERS={{ ceph_mon_initial_members }}" \
-e "MON_HOST={{ ceph_mon_host }}" \
-e "PUBLIC_NETWORK={{ ceph_public_network }}" \
-e "OSD_POOL_DEFAULT_SIZE={{ ceph_osd_pool_default_size }}" \
--add-host=keystone:{{ hostvars[groups['keystone'][0]]['listen_ip'] | default(hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address']) }} \ --add-host=keystone:{{ hostvars[groups['keystone'][0]]['listen_ip'] | default(hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address']) }} \
--add-host=mariadb:{{ hostvars[groups['databases'][0]]['listen_ip'] | default(hostvars[groups['databases'][0]]['ansible_default_ipv4']['address']) }} \ --add-host=mariadb:{{ hostvars[groups['databases'][0]]['listen_ip'] | default(hostvars[groups['databases'][0]]['ansible_default_ipv4']['address']) }} \
--privileged \ --privileged \
-v /dev:/dev \ -v /dev:/dev \
-v /var/run/libvirt/libvirt-sock:/var/run/libvirt/libvirt-sock \ -v /var/run/libvirt/libvirt-sock:/var/run/libvirt/libvirt-sock \
-v /var/lib/nova/instances:/var/lib/nova/instances \ -v /var/lib/nova/instances:/var/lib/nova/instances \
-v /var/run/netns:/var/run/netns \
-v /lib/modules:/lib/modules \ -v /lib/modules:/lib/modules \
-v /etc/machine-id:/etc/machine-id \ -v /etc/machine-id:/etc/machine-id \
-v /etc/ceph:/etc/ceph \
--network host \ --network host \
{{ docker_image }} /etc/run.sh {{ docker_image }} /etc/run.sh

View File

@@ -1,30 +1,35 @@
$ANSIBLE_VAULT;1.1;AES256 $ANSIBLE_VAULT;1.1;AES256
35643437313834633532373265366630663035336231306639623561613765386332663334343237 35313437313530623333636561373631393862663463323739353630313161303566353732633636
3339363162303463353437326331656532336138373066620a623137643762383532376361353364 3335626664346130646435613932326166366635326138640a363165366339393130306234633061
37646236386466353636396535376463333133323664316634663466663164303063383830653039 62646664313036616639643565396639303064323461633839633833393664373864653262393532
3535666361303562630a316137376531636537383138663662373865383431343035646539356137 3734333431353530650a333630343930313038613164303038306264306238333632363862313431
38323866643831353537366630363333663865383261633938346664633362343661343839383766 35303131623461303863646135313463363032396439623536353433386138613565383931333266
66363733356333303334323136376136353738376362376231353338343763663131363731343639 38636632363334336534336434303763616432366631343666343437316532313466396661656663
61383138626235633663666430383964616239363035663663646133636434363032626633663865 62316362336631663439656134623034626532653039323461373239376461636539393739346435
30663732646630393163653461626435333463396463333236313930346461626364626166386365 32623066656439326561663031303430316138353631366163373630343962666263663162636337
66323736316230376165666366363136666533376335316132343361393532616536383965363339 61393262393063626639623536656535623262386439633034393261323762633431363937613735
30376362356665633630393561653532613139366236663961643864383738353430666562623730 31373464646566646435323835393766396537333532623766333638626534336436373434633136
34663166393665653265663836623731386235633062306562373935633737363639383336303539 63653538326232356436303331636435316633363030386562663461353338663630613162313436
37663763623664623038316438356138363134646230643261646262353163333430616462393866 62333337666535353332366330326336313235353463373666343633666465616465383435333037
31666233636233356464633436626637313633623736343264613037353432386131393964386663 66306334313231356439343730386234396638633566653733393430636232353631346334653964
36353236613662633764366437306461316138366461653731373436613039346663663536653362 31663161633961383935613663336233666334393563643539373833633361323532656639656165
38656636303935626563303732666261373665303035333661643865393166653330646336393961 38396134346365653835383463333535393365306234656535623761343732386665396335376362
31646539396131626464313733383638656438613530663166393035343630353764313232323432 31343061313331373762353738333962343366663730303436353530653533613839363437643539
34386334666231323261343765623636313032373835396332623037613866613636393038653266 33646133626235613461383063363634653565363134343163343939633238636239343462656135
36336531356534633933383432646663663364376130386239613836336263623161326563346661 61356161306665383235393030653565646634656536396662346462313636326266633235643236
33636232313866613662353661373533383138393434396338343934326333326238336638396462 63636434646139386337356165613934323564316136373664643237376633313665653534393035
65376133343038313437343934373265333632663133653133656130636533663237623839623634 34363438303633323661313737363738346639393835336462363666643934383030373132363464
35363764363763363465363437623964363362616261663166633066373033633864336532633031 36326466336239666366363966313862616135623736323332393734313364353661653063303831
32323733616562663031303230383561373637326436336462363461313532623262653866323862 35366533333935343938653566326633353639323937616661316234353265383832346336343861
34643631333533626537373538353564306261313035303530666462326534633638363932363037 66623133316262623731353861333533623662663034376539613262653539353137643062306562
65336230373034643966656561303164373463353638316632613431643535303930373334383134 31663035653731393131333964383162653237373562666635356666646564373366303661383163
38323731363535313065326330653666323934636466386238616664316635303333653631396639 63346130333465326465656537336637323531363836643838313432643165663465326664656563
39303737613361653862343964303231393164346134633366633262326230643137303331373231 63323734663461346532353736343164323233343539663539343831383332336238643830663635
31323832363937663935333737613133323265323863623933633962633230386339636432643937 37306463373137386663363538376563653763383663326134663733366262363533343366323438
66653763376663666637353738646565343835333937343765356539383734316231623466343634 35613638316266393337363734313564353464316135353634323366303163376465656266656338
30663135663938393561333133663737653635393432333534306466366332333338 36313563303063613433653064363037636461636135373564653630626338646561663666353137
64353131643435616334323733663538663063323437323831353532653730313538303538653565
35313363323466663531396634323132316538616361343963393465323033643830653430633832
30306236616233353135353965373838396435323366653732353736363263643062636536626263
63373231396230656464393764333133653436656133653161663131333565373832303462663639
6563303036633864313533363164323964643662613537313136

13
set_ceph_secrets.yml Normal file
View File

@@ -0,0 +1,13 @@
---
- hosts: nova-compute
become: true
tasks:
- name: include secrets
include_vars:
file: secrets.yml
name: secrets
- command: virsh secret-define --file ceph.xml
- command: >
virsh secret-set-value --secret d0db6ba7-a0c9-4da6-b0bc-aa7846325333
--base64 {{ secrets['ceph_client_volumes_key'] }}

View File

@@ -10,3 +10,5 @@
- subnet_range: 172.23.128.0/24 - subnet_range: 172.23.128.0/24
- rsa_pub: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDStPUPXkcu81onUm/le54JCu174yXJJDsthDr96Mv8irBVBWuy5FxnaASuDpmC4QE4s0UAIg1iq/SWrr8qdBQ4OVuYFiW0S7ZJvcoKr/40Wh+T5MeltGQfmkDp6kBsfaMSo6M4tF1c8i+XgOgxb4fxHYb8mFhseztRLx6McxJJJLB0nu+T12WQ01nl0XtwD+3EsZWfxRH0KA59VHZSe3Anc5z+Fm7WU+1Vzy6/pkiIhVReI1L6VVhZsIdSu3fQK6fHQcujtfuw6RKEpisZQqnxMUviWQ98yeQXHk6Nx840WCh3vvKveEAoC4Y/UEZa1TMe6PczfUaLjaidUkpulJsP egon@egon-pc - rsa_pub: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDStPUPXkcu81onUm/le54JCu174yXJJDsthDr96Mv8irBVBWuy5FxnaASuDpmC4QE4s0UAIg1iq/SWrr8qdBQ4OVuYFiW0S7ZJvcoKr/40Wh+T5MeltGQfmkDp6kBsfaMSo6M4tF1c8i+XgOgxb4fxHYb8mFhseztRLx6McxJJJLB0nu+T12WQ01nl0XtwD+3EsZWfxRH0KA59VHZSe3Anc5z+Fm7WU+1Vzy6/pkiIhVReI1L6VVhZsIdSu3fQK6fHQcujtfuw6RKEpisZQqnxMUviWQ98yeQXHk6Nx840WCh3vvKveEAoC4Y/UEZa1TMe6PczfUaLjaidUkpulJsP egon@egon-pc
- use_ceph: True

View File

@@ -1,36 +1,48 @@
[databases] [databases]
ansible-test openstack-test05
ansible-test-2 openstack-test06
ansible-test-3 openstack-test07
[keystone] [keystone]
ansible-test-3 openstack-test05
[glance-controller] [glance-controller]
ansible-test-2 openstack-test05
[horizon] [horizon]
ansible-test-3 openstack-test05
[rabbitmq] [rabbitmq]
ansible-test openstack-test05
ansible-test-2 openstack-test06
ansible-test-3 openstack-test07
[cinder-storage]
ansible-test
[memcached] [memcached]
ansible-test-3 openstack-test05
[neutron-controller] [neutron-controller]
ansible-test physical_interface_mappings=provider:ens10 openstack-test05 physical_interface_mappings=provider:enp4s0f0
[nova-controller] [nova-controller]
ansible-test openstack-test05
[nova-compute] [cinder-controller]
ansible-test-2 physical_interface_mappings=provider:ens10 openstack-test05
[heat] [heat]
ansible-test openstack-test05
[cinder-storage]
openstack-test05 storage_volume=/dev/openstack-test05-vg/cinder
openstack-test06 storage_volume=/dev/openstack-test06-vg/cinder
openstack-test07 storage_volume=/dev/openstack-test07-vg/cinder
openstack-test08 storage_volume=/dev/openstack-test08-vg/cinder
openstack-test09 storage_volume=/dev/openstack-test09-vg/cinder
openstack-test10 storage_volume=/dev/openstack-test10-vg/cinder
[nova-compute]
openstack-test06 physical_interface_mappings=provider:enp4s0f0
openstack-test07 physical_interface_mappings=provider:enp4s0f0
openstack-test08 physical_interface_mappings=provider:enp4s0f0
openstack-test09 physical_interface_mappings=provider:enp4s0f0
openstack-test10 physical_interface_mappings=provider:enp4s0f0

18
ubuntucloudrepo.yml Normal file
View File

@@ -0,0 +1,18 @@
---
- hosts: all
name: Dummy to gather facts
become: true
tasks:
- name: install openstack repo key host.
command: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5EDB1B62EC4926EA
tags: openstackclient
- name: install openstack repo on host.
apt_repository:
repo: "deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/ocata main"
filename: ocata
tags: openstackclient
- apt:
update_cache: yes