diff --git a/hosts b/hosts index 268bb96..42615d3 100644 --- a/hosts +++ b/hosts @@ -37,6 +37,9 @@ run_options="" [next_cassandra:vars] run_options="-e CASSANDRA_SEEDS=172.23.41.1" +[neutron-controller] +openstack01-node01 + [nova-controller] openstack01-node01 diff --git a/neutron-controller.yml b/neutron-controller.yml new file mode 100644 index 0000000..8ce60b7 --- /dev/null +++ b/neutron-controller.yml @@ -0,0 +1,9 @@ +--- +- hosts: all + name: Dummy to gather facts + tasks: [] + +- hosts: neutron-controller + become: True + roles: + - neutron-controller diff --git a/roles/neutron-controller/tasks/main.yml b/roles/neutron-controller/tasks/main.yml new file mode 100644 index 0000000..af83aca --- /dev/null +++ b/roles/neutron-controller/tasks/main.yml @@ -0,0 +1,44 @@ +# Build and install a docker image for neutron-controller. +--- +- set_fact: + env_vars: > + -e "KEYSTONE_HOST={{ hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address'] }}" + -e "METADATA_SECRET=geheim" + -e "MY_IP={{ hostvars[groups['neutron-controller'][0]]['ansible_default_ipv4']['address'] }}" + -e "MYSQL_HOST={{ hostvars[groups['databases'][0]]['ansible_default_ipv4']['address'] }}" + -e "MYSQL_ROOT_PASSWORD=geheim" + -e "NEUTRON_PASSWORD=geheim" + -e "NEUTRON_USER=neutron" + -e "NOVA_CONTROLLER_HOST={{ hostvars[groups['nova-controller'][0]]['ansible_default_ipv4']['address'] }}" + -e "NOVA_PASSWORD=geheim" + -e "NOVA_USER=nova" + -e "OVERLAY_INTERFACE_IP_ADDRESS={{ hostvars[groups['neutron-controller'][0]]['ansible_default_ipv4']['address'] }}" + -e "PROVIDER_INTERFACE_NAME={{ hostvars[groups['neutron-controller'][0]]['ansible_default_ipv4']['interface'] }}" + -e "RABBIT_PASSWORD=geheim" + -e "RABBIT_USER=openstack" + +- name: install service file. + template: + src: templates/neutron-controller.service + dest: /etc/systemd/system/neutron-controller.service + mode: 644 + owner: root + group: root + +- command: systemctl daemon-reload + +- name: Initialize neutron + command: > + /usr/bin/docker run --rm + {{ env_vars }} + --add-host=mariadb:{{ hostvars[groups['databases'][0]]['ansible_default_ipv4']['address'] }} + --add-host=keystone:{{ hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address'] }} + --network host + hpc/neutroncontroller + /etc/bootstrap.sh + tags: bootstrap + +- name: make sure service is started + systemd: + name: neutron-controller.service + state: restarted diff --git a/roles/neutron-controller/templates/neutron-controller.service b/roles/neutron-controller/templates/neutron-controller.service new file mode 100644 index 0000000..485d4e1 --- /dev/null +++ b/roles/neutron-controller/templates/neutron-controller.service @@ -0,0 +1,22 @@ +[Unit] +Description=Openstack neutron-controller Container +After=docker.service +Requires=docker.service + +[Service] +TimeoutStartSec=0 +Restart=always +ExecStartPre=-/usr/bin/docker rm -f %n +ExecStart=/usr/bin/docker run --name %n \ + {{ env_vars | replace('\n', '') }} \ + --add-host=nova-controller:{{ hostvars[groups['nova-controller'][0]]['ansible_default_ipv4']['address'] }} \ + --add-host=mariadb:{{ hostvars[groups['databases'][0]]['ansible_default_ipv4']['address'] }} \ + --add-host=keystone:{{ hostvars[groups['keystone'][0]]['ansible_default_ipv4']['address'] }} \ + --privileged \ + --network host \ + -p 8774:8774 \ + -p 8778:8778 \ + hpc/neutroncontroller /etc/run.sh + +[Install] +WantedBy=multi-user.target