From 7da0b2a80c093661766f9998760be8844584b0cc Mon Sep 17 00:00:00 2001 From: Sam Yaple Date: Sun, 12 Jul 2015 03:02:33 +0000 Subject: [PATCH] Ansible Nova w/ libvirt support Initial support for Nova in Ansible Partially-Implements: blueprint ansible-service Change-Id: I4b0a74bd3e5daa5664f5e1e622bfb40c3285949e --- ansible/inventory/all-in-one | 35 +++++ ansible/inventory/multinode | 35 +++++ ansible/roles/glance/defaults/main.yml | 3 - ansible/roles/nova/defaults/main.yml | 71 +++++++++++ ansible/roles/nova/tasks/bootstrap.yml | 12 ++ ansible/roles/nova/tasks/config.yml | 120 ++++++++++++++++++ ansible/roles/nova/tasks/main.yml | 8 ++ ansible/roles/nova/tasks/register.yml | 21 +++ ansible/roles/nova/tasks/start.yml | 76 +++++++++++ ansible/roles/nova/templates/nova.conf.j2 | 69 ++++++++++ ansible/site.yml | 5 + .../common/nova-controller/nova-api/start.sh | 7 + .../nova-controller/nova-conductor/start.sh | 7 - etc/kolla/config/nova.conf | 0 etc/kolla/config/nova/nova-api.conf | 0 etc/kolla/config/nova/nova-compute.conf | 0 etc/kolla/config/nova/nova-conductor.conf | 0 etc/kolla/config/nova/nova-consoleauth.conf | 0 etc/kolla/config/nova/nova-novncproxy.conf | 0 etc/kolla/config/nova/nova-scheduler.conf | 0 etc/kolla/defaults.yml | 14 ++ etc/kolla/globals.yml | 2 - etc/kolla/passwords.yml | 7 + 23 files changed, 480 insertions(+), 12 deletions(-) create mode 100644 ansible/roles/nova/defaults/main.yml create mode 100644 ansible/roles/nova/tasks/bootstrap.yml create mode 100644 ansible/roles/nova/tasks/config.yml create mode 100644 ansible/roles/nova/tasks/main.yml create mode 100644 ansible/roles/nova/tasks/register.yml create mode 100644 ansible/roles/nova/tasks/start.yml create mode 100644 ansible/roles/nova/templates/nova.conf.j2 create mode 100644 etc/kolla/config/nova.conf create mode 100644 etc/kolla/config/nova/nova-api.conf create mode 100644 etc/kolla/config/nova/nova-compute.conf create mode 100644 etc/kolla/config/nova/nova-conductor.conf create mode 100644 etc/kolla/config/nova/nova-consoleauth.conf create mode 100644 etc/kolla/config/nova/nova-novncproxy.conf create mode 100644 etc/kolla/config/nova/nova-scheduler.conf diff --git a/ansible/inventory/all-in-one b/ansible/inventory/all-in-one index 621a9c778a..5b4a915681 100644 --- a/ansible/inventory/all-in-one +++ b/ansible/inventory/all-in-one @@ -1,6 +1,14 @@ +# These initial groups are the only groups required to be modified. The +# additional groups are for more control of the environment. [support] localhost ansible_connection=local +[compute] +localhost ansible_connection=local + + +# You can explicitly specify which hosts run each project by updating the +# groups in the sections below. Common services are grouped together. [database:children] support @@ -12,3 +20,30 @@ support [glance:children] support + +[nova:children] +support + + +# Additional control implemented here. These groups allow you to control which +# services run on which hosts at a per-service level. +# +# Word of caution: Some services are required to run on the same host to +# function appropriately. For example, neutron-metadata-agent must run on the +# same host as the l3-agent and (depending on configuration) the dhcp-agent. + +# Nova +[nova-api:children] +nova + +[nova-conductor:children] +nova + +[nova-consoleauth:children] +nova + +[nova-novncproxy:children] +nova + +[nova-scheduler:children] +nova diff --git a/ansible/inventory/multinode b/ansible/inventory/multinode index a38f7c035d..5df5a783fe 100644 --- a/ansible/inventory/multinode +++ b/ansible/inventory/multinode @@ -1,3 +1,5 @@ +# These initial groups are the only groups required to be modified. The +# additional groups are for more control of the environment. [support] # These hostname must be resolvable from your deployment host support01 ansible_ssh_user=sam @@ -7,6 +9,12 @@ support03 ansible_ssh_user=sam # The above can also be specified as follows: #support[01:03] ansible_ssh_user=sam +[compute] +compute01 + + +# You can explicitly specify which hosts run each project by updating the +# groups in the sections below. Common services are grouped together. [database:children] support @@ -18,3 +26,30 @@ support [glance:children] support + +[nova:children] +support + + +# Additional control implemented here. These groups allow you to control which +# services run on which hosts at a per-service level. +# +# Word of caution: Some services are required to run on the same host to +# function appropriately. For example, neutron-metadata-agent must run on the +# same host as the l3-agent and (depending on configuration) the dhcp-agent. + +# Nova +[nova-api:children] +nova + +[nova-conductor:children] +nova + +[nova-consoleauth:children] +nova + +[nova-novncproxy:children] +nova + +[nova-scheduler:children] +nova diff --git a/ansible/roles/glance/defaults/main.yml b/ansible/roles/glance/defaults/main.yml index b1b14aaf4c..cce4f70fd8 100644 --- a/ansible/roles/glance/defaults/main.yml +++ b/ansible/roles/glance/defaults/main.yml @@ -40,9 +40,6 @@ glance_public_address: "{{ kolla_external_address }}" glance_admin_address: "{{ kolla_internal_address }}" glance_internal_address: "{{ kolla_internal_address }}" -glance_registry_port: "9191" -glance_api_port: "9292" - glance_logging_verbose: "{{ openstack_logging_verbose }}" glance_logging_debug: "{{ openstack_logging_debug }}" diff --git a/ansible/roles/nova/defaults/main.yml b/ansible/roles/nova/defaults/main.yml new file mode 100644 index 0000000000..82490ac633 --- /dev/null +++ b/ansible/roles/nova/defaults/main.yml @@ -0,0 +1,71 @@ +--- +project_name: "nova" + +#################### +# Database +#################### +nova_database_name: "nova" +nova_database_user: "nova" +nova_database_address: "{{ kolla_internal_address }}" + +# Do not override "service_*" variables +service_database_name: "{{ nova_database_name }}" +service_database_user: "{{ nova_database_user }}" +service_database_password: "{{ nova_database_password }}" + + +#################### +# Docker +#################### +docker_nova_registry: "{{ docker_registry }}" +docker_nova_namespace: "{{ docker_namespace }}" +kolla_nova_base_distro: "{{ kolla_base_distro }}" +kolla_nova_install_type: "{{ kolla_install_type }}" + +kolla_nova_libvirt_container_name: "nova-libvirt" +docker_nova_libvirt_image: "{{ docker_nova_registry }}{{ docker_nova_namespace }}/{{ kolla_nova_base_distro }}-{{ kolla_nova_install_type }}-{{ kolla_nova_libvirt_container_name }}" +docker_nova_libvirt_tag: "{{ openstack_release }}" +docker_nova_libvirt_image_full: "{{ docker_nova_libvirt_image }}:{{ docker_nova_libvirt_tag }}" + +kolla_nova_api_container_name: "nova-api" +docker_nova_api_image: "{{ docker_nova_registry }}{{ docker_nova_namespace }}/{{ kolla_nova_base_distro }}-{{ kolla_nova_install_type }}-{{ kolla_nova_api_container_name }}" +docker_nova_api_tag: "{{ openstack_release }}" +docker_nova_api_image_full: "{{ docker_nova_api_image }}:{{ docker_nova_api_tag }}" + +kolla_nova_conductor_container_name: "nova-conductor" +docker_nova_conductor_image: "{{ docker_nova_registry }}{{ docker_nova_namespace }}/{{ kolla_nova_base_distro }}-{{ kolla_nova_install_type }}-{{ kolla_nova_conductor_container_name }}" +docker_nova_conductor_tag: "{{ openstack_release }}" +docker_nova_conductor_image_full: "{{ docker_nova_conductor_image }}:{{ docker_nova_conductor_tag }}" + +kolla_nova_consoleauth_container_name: "nova-consoleauth" +docker_nova_consoleauth_image: "{{ docker_nova_registry }}{{ docker_nova_namespace }}/{{ kolla_nova_base_distro }}-{{ kolla_nova_install_type }}-{{ kolla_nova_consoleauth_container_name }}" +docker_nova_consoleauth_tag: "{{ openstack_release }}" +docker_nova_consoleauth_image_full: "{{ docker_nova_consoleauth_image }}:{{ docker_nova_consoleauth_tag }}" + +kolla_nova_novncproxy_container_name: "nova-novncproxy" +docker_nova_novncproxy_image: "{{ docker_nova_registry }}{{ docker_nova_namespace }}/{{ kolla_nova_base_distro }}-{{ kolla_nova_install_type }}-{{ kolla_nova_novncproxy_container_name }}" +docker_nova_novncproxy_tag: "{{ openstack_release }}" +docker_nova_novncproxy_image_full: "{{ docker_nova_novncproxy_image }}:{{ docker_nova_novncproxy_tag }}" + +kolla_nova_scheduler_container_name: "nova-scheduler" +docker_nova_scheduler_image: "{{ docker_nova_registry }}{{ docker_nova_namespace }}/{{ kolla_nova_base_distro }}-{{ kolla_nova_install_type }}-{{ kolla_nova_scheduler_container_name }}" +docker_nova_scheduler_tag: "{{ openstack_release }}" +docker_nova_scheduler_image_full: "{{ docker_nova_scheduler_image }}:{{ docker_nova_scheduler_tag }}" + +kolla_nova_compute_container_name: "nova-compute" +docker_nova_compute_image: "{{ docker_nova_registry }}{{ docker_nova_namespace }}/{{ kolla_nova_base_distro }}-{{ kolla_nova_install_type }}-{{ kolla_nova_compute_container_name }}" +docker_nova_compute_tag: "{{ openstack_release }}" +docker_nova_compute_image_full: "{{ docker_nova_compute_image }}:{{ docker_nova_compute_tag }}" + + +#################### +# Openstack +#################### +nova_public_address: "{{ kolla_external_address }}" +nova_admin_address: "{{ kolla_internal_address }}" +nova_internal_address: "{{ kolla_internal_address }}" + +nova_logging_verbose: "{{ openstack_logging_verbose }}" +nova_logging_debug: "{{ openstack_logging_debug }}" + +nova_keystone_user: "nova" diff --git a/ansible/roles/nova/tasks/bootstrap.yml b/ansible/roles/nova/tasks/bootstrap.yml new file mode 100644 index 0000000000..39f32a97e6 --- /dev/null +++ b/ansible/roles/nova/tasks/bootstrap.yml @@ -0,0 +1,12 @@ +--- +- include: ../../bootstrap.yml + vars: + container_detach: False + container_environment: + KOLLA_BOOTSTRAP: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + container_image: "{{ docker_nova_api_image_full }}" + container_name: "bootstrap_nova" + container_restart_policy: "no" + container_volumes: + - "{{ node_config_directory }}/nova-api/:/opt/kolla/nova-api/:ro" diff --git a/ansible/roles/nova/tasks/config.yml b/ansible/roles/nova/tasks/config.yml new file mode 100644 index 0000000000..b1ea0df055 --- /dev/null +++ b/ansible/roles/nova/tasks/config.yml @@ -0,0 +1,120 @@ +--- +- include: ../../config.yml + vars: + service_name: "nova-api" + config_source: + - "roles/{{ project_name }}/templates/nova.conf.j2" + - "/etc/kolla/config/global.conf" + - "/etc/kolla/config/database.conf" + - "/etc/kolla/config/messaging.conf" + - "/etc/kolla/config/{{ project_name }}.conf" + - "/etc/kolla/config/{{ project_name }}/{{ service_name }}.conf" + config_template_dest: + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_minimal" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_global" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_database" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_messaging" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_augment" + - "{{ node_templates_directory }}/{{ service_name }}/{{ service_name }}.conf_augment" + config_dest: "{{ node_config_directory }}/{{ service_name }}/nova.conf" + when: inventory_hostname in groups['nova-api'] + +- include: ../../config.yml + vars: + service_name: "nova-conductor" + config_source: + - "roles/{{ project_name }}/templates/nova.conf.j2" + - "/etc/kolla/config/global.conf" + - "/etc/kolla/config/database.conf" + - "/etc/kolla/config/messaging.conf" + - "/etc/kolla/config/{{ project_name }}.conf" + - "/etc/kolla/config/{{ project_name }}/{{ service_name }}.conf" + config_template_dest: + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_minimal" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_global" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_database" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_messaging" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_augment" + - "{{ node_templates_directory }}/{{ service_name }}/{{ service_name }}.conf_augment" + config_dest: "{{ node_config_directory }}/{{ service_name }}/nova.conf" + when: inventory_hostname in groups['nova-conductor'] + +- include: ../../config.yml + vars: + service_name: "nova-consoleauth" + config_source: + - "roles/{{ project_name }}/templates/nova.conf.j2" + - "/etc/kolla/config/global.conf" + - "/etc/kolla/config/database.conf" + - "/etc/kolla/config/messaging.conf" + - "/etc/kolla/config/{{ project_name }}.conf" + - "/etc/kolla/config/{{ project_name }}/{{ service_name }}.conf" + config_template_dest: + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_minimal" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_global" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_database" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_messaging" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_augment" + - "{{ node_templates_directory }}/{{ service_name }}/{{ service_name }}.conf_augment" + config_dest: "{{ node_config_directory }}/{{ service_name }}/nova.conf" + when: inventory_hostname in groups['nova-consoleauth'] + +- include: ../../config.yml + vars: + service_name: "nova-scheduler" + config_source: + - "roles/{{ project_name }}/templates/nova.conf.j2" + - "/etc/kolla/config/global.conf" + - "/etc/kolla/config/database.conf" + - "/etc/kolla/config/messaging.conf" + - "/etc/kolla/config/{{ project_name }}.conf" + - "/etc/kolla/config/{{ project_name }}/{{ service_name }}.conf" + config_template_dest: + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_minimal" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_global" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_database" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_messaging" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_augment" + - "{{ node_templates_directory }}/{{ service_name }}/{{ service_name }}.conf_augment" + config_dest: "{{ node_config_directory }}/{{ service_name }}/nova.conf" + when: inventory_hostname in groups['nova-scheduler'] + +- include: ../../config.yml + vars: + service_name: "nova-compute" + config_source: + - "roles/{{ project_name }}/templates/nova.conf.j2" + - "/etc/kolla/config/global.conf" + - "/etc/kolla/config/database.conf" + - "/etc/kolla/config/messaging.conf" + - "/etc/kolla/config/{{ project_name }}.conf" + - "/etc/kolla/config/{{ project_name }}/{{ service_name }}.conf" + config_template_dest: + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_minimal" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_global" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_database" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_messaging" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_augment" + - "{{ node_templates_directory }}/{{ service_name }}/{{ service_name }}.conf_augment" + config_dest: "{{ node_config_directory }}/{{ service_name }}/nova.conf" + when: inventory_hostname in groups['compute'] + +- include: ../../config.yml + vars: + service_name: "nova-novncproxy" + config_source: + - "roles/{{ project_name }}/templates/nova.conf.j2" + - "/etc/kolla/config/global.conf" + - "/etc/kolla/config/database.conf" + - "/etc/kolla/config/messaging.conf" + - "/etc/kolla/config/{{ project_name }}.conf" + - "/etc/kolla/config/{{ project_name }}/{{ service_name }}.conf" + config_template_dest: + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_minimal" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_global" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_database" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_messaging" + - "{{ node_templates_directory }}/{{ service_name }}/{{ project_name }}.conf_augment" + - "{{ node_templates_directory }}/{{ service_name }}/{{ service_name }}.conf_augment" + config_dest: "{{ node_config_directory }}/{{ service_name }}/nova.conf" + when: inventory_hostname in groups['nova-novncproxy'] diff --git a/ansible/roles/nova/tasks/main.yml b/ansible/roles/nova/tasks/main.yml new file mode 100644 index 0000000000..5c48120b7c --- /dev/null +++ b/ansible/roles/nova/tasks/main.yml @@ -0,0 +1,8 @@ +--- +- include: register.yml + +- include: config.yml + +- include: bootstrap.yml + +- include: start.yml diff --git a/ansible/roles/nova/tasks/register.yml b/ansible/roles/nova/tasks/register.yml new file mode 100644 index 0000000000..5ca3d12354 --- /dev/null +++ b/ansible/roles/nova/tasks/register.yml @@ -0,0 +1,21 @@ +--- +- name: Creating the Nova service and endpoint + kolla_keystone_service: + service_name: "nova" + service_type: "compute" + description: "Openstack Compute" + endpoint_region: "{{ openstack_region_name }}" + admin_url: "http://{{ kolla_internal_address }}:{{ nova_api_port }}/v2/%(tenant_id)s" + internal_url: "http://{{ kolla_internal_address }}:{{ nova_api_port }}/v2/%(tenant_id)s" + public_url: "http://{{ kolla_external_address }}:{{ nova_api_port }}/v2/%(tenant_id)s" + auth: "{{ openstack_auth_v2 }}" + region_name: "{{ openstack_region_name }}" + +- name: Creating the Nova project, user, and role + kolla_keystone_user: + project: "service" + user: "nova" + password: "{{ nova_keystone_password }}" + role: "admin" + auth: "{{ openstack_auth_v2 }}" + region_name: "{{ openstack_region_name }}" diff --git a/ansible/roles/nova/tasks/start.yml b/ansible/roles/nova/tasks/start.yml new file mode 100644 index 0000000000..18b2f0e8cf --- /dev/null +++ b/ansible/roles/nova/tasks/start.yml @@ -0,0 +1,76 @@ +--- +- include: ../../start.yml + vars: + container_environment: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + container_image: "{{ docker_nova_libvirt_image_full }}" + container_name: "nova_libvirt" + container_privileged: "True" + container_volumes: + - "/run:/run" + - "/lib/modules:/lib/modules:ro" + when: inventory_hostname in groups['compute'] + +- include: ../../start.yml + vars: + container_environment: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + container_image: "{{ docker_nova_api_image_full }}" + container_name: "nova_api" + container_privileged: "True" + container_volumes: + - "{{ node_config_directory }}/nova-api/:/opt/kolla/nova-api/:ro" + - "/lib/modules:/lib/modules:ro" + when: inventory_hostname in groups['nova-api'] + +- include: ../../start.yml + vars: + container_environment: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + container_image: "{{ docker_nova_conductor_image_full }}" + container_name: "nova_conductor" + container_volumes: + - "{{ node_config_directory }}/nova-conductor/:/opt/kolla/nova-conductor/:ro" + when: inventory_hostname in groups['nova-conductor'] + +- include: ../../start.yml + vars: + container_environment: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + container_image: "{{ docker_nova_consoleauth_image_full }}" + container_name: "nova_consoleauth" + container_volumes: + - "{{ node_config_directory }}/nova-consoleauth/:/opt/kolla/nova-consoleauth/:ro" + when: inventory_hostname in groups['nova-consoleauth'] + +- include: ../../start.yml + vars: + container_environment: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + container_image: "{{ docker_nova_novncproxy_image_full }}" + container_name: "nova_novncproxy" + container_volumes: + - "{{ node_config_directory }}/nova-novncproxy/:/opt/kolla/nova-novncproxy/:ro" + when: inventory_hostname in groups['nova-novncproxy'] + +- include: ../../start.yml + vars: + container_environment: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + container_image: "{{ docker_nova_scheduler_image_full }}" + container_name: "nova_scheduler" + container_volumes: + - "{{ node_config_directory }}/nova-scheduler/:/opt/kolla/nova-scheduler/:ro" + when: inventory_hostname in groups['nova-scheduler'] + +- include: ../../start.yml + vars: + container_environment: + KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}" + container_image: "{{ docker_nova_compute_image_full }}" + container_name: "nova_compute" + container_volumes: + - "{{ node_config_directory }}/nova-compute/:/opt/kolla/nova-compute/:ro" + - "/run:/run" + - "/lib/modules:/lib/modules:ro" + when: inventory_hostname in groups['compute'] diff --git a/ansible/roles/nova/templates/nova.conf.j2 b/ansible/roles/nova/templates/nova.conf.j2 new file mode 100644 index 0000000000..b44168837e --- /dev/null +++ b/ansible/roles/nova/templates/nova.conf.j2 @@ -0,0 +1,69 @@ +[DEFAULT] +verbose = true +debug = true + +state_path = /var/lib/nova +lock_path = /var/lock/nova +api_paste_config = /etc/nova/api-paste.ini + +osapi_compute_listen = {{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }} +ec2_listen = {{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }} + +notification_driver = nova.openstack.common.notifier.rpc_notifier + +virt_type = kvm +security_group_api = neutron +network_api_class = nova.network.neutronv2.api.API +firewall_driver = nova.virt.firewall.NoopFirewallDriver +linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver + +compute_driver = libvirt.LibvirtDriver +allow_resize_to_same_host = true + +vnc_enabled = true +my_ip = {{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }} +vncserver_listen = {{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }} +vncserver_proxyclient_address = {{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }} +novncproxy_base_url = http://{{ kolla_internal_address }}:6080/vnc_auto.html + +[oslo_messaging_rabbit] +rabbit_host = {{ kolla_internal_address }} +rabbit_userid = {{ rabbitmq_user }} +rabbit_password = {{ rabbitmq_password }} +rabbit_ha_queues = true + +[oslo_concurrency] +lock_path = /var/lib/nova/tmp + +[glance] +host = {{ kolla_internal_address }} + +[cinder] +catalog_info = volume:cinder:internalURL + +[neutron] +url = http://{{ kolla_internal_address }}:{{ neutron_server_port }} +auth_strategy = keystone +admin_auth_url = http://{{ kolla_internal_address }}:{{ keystone_admin_port }}/v2.0 +admin_tenant_name = service +admin_username = neutron +admin_password = {{ neutron_keystone_password }} +metadata_proxy_shared_secret = {{ metadata_secret }} +service_metadata_proxy = true + +[database] +connection = mysql://{{ nova_database_user }}:{{ nova_database_password }}@{{ nova_database_address }}/{{ nova_database_name }} + +[keystone_authtoken] +auth_uri = http://{{ kolla_internal_address }}:{{ keystone_public_port }} +auth_url = http://{{ kolla_internal_address }}:{{ keystone_admin_port }} +auth_plugin = password +project_domain_id = default +user_domain_id = default +project_name = service +username = nova +password = {{ nova_keystone_password }} + +[libvirt] +connection_type = libivrt +inject_partition = -2 diff --git a/ansible/site.yml b/ansible/site.yml index 4ba9f95512..db3d31a823 100644 --- a/ansible/site.yml +++ b/ansible/site.yml @@ -18,3 +18,8 @@ roles: - glance tags: glance + +- hosts: nova + roles: + - nova + tags: nova diff --git a/docker/common/nova-controller/nova-api/start.sh b/docker/common/nova-controller/nova-api/start.sh index 0737ba0b76..0d7ffca9b5 100755 --- a/docker/common/nova-controller/nova-api/start.sh +++ b/docker/common/nova-controller/nova-api/start.sh @@ -10,4 +10,11 @@ source /opt/kolla/kolla-common.sh # Config-internal script exec out of this function, it does not return here. set_configs +# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases +# of the KOLLA_BOOTSTRAP variable being set, including empty. +if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then + su -s /bin/sh -c "nova-manage db sync" nova + exit 0 +fi + exec $CMD $ARGS diff --git a/docker/common/nova-controller/nova-conductor/start.sh b/docker/common/nova-controller/nova-conductor/start.sh index e3a3227197..4a0074d395 100755 --- a/docker/common/nova-controller/nova-conductor/start.sh +++ b/docker/common/nova-controller/nova-conductor/start.sh @@ -10,11 +10,4 @@ source /opt/kolla/kolla-common.sh # Config-internal script exec out of this function, it does not return here. set_configs -# Bootstrap and exit if KOLLA_BOOTSTRAP variable is set. This catches all cases -# of the KOLLA_BOOTSTRAP variable being set, including empty. -if [[ "${!KOLLA_BOOTSTRAP[@]}" ]]; then - su -s /bin/sh -c "nova-manage db sync" nova - exit 0 -fi - exec $CMD $ARGS diff --git a/etc/kolla/config/nova.conf b/etc/kolla/config/nova.conf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/etc/kolla/config/nova/nova-api.conf b/etc/kolla/config/nova/nova-api.conf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/etc/kolla/config/nova/nova-compute.conf b/etc/kolla/config/nova/nova-compute.conf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/etc/kolla/config/nova/nova-conductor.conf b/etc/kolla/config/nova/nova-conductor.conf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/etc/kolla/config/nova/nova-consoleauth.conf b/etc/kolla/config/nova/nova-consoleauth.conf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/etc/kolla/config/nova/nova-novncproxy.conf b/etc/kolla/config/nova/nova-novncproxy.conf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/etc/kolla/config/nova/nova-scheduler.conf b/etc/kolla/config/nova/nova-scheduler.conf new file mode 100644 index 0000000000..e69de29bb2 diff --git a/etc/kolla/defaults.yml b/etc/kolla/defaults.yml index 3eda373979..e2ab12d111 100644 --- a/etc/kolla/defaults.yml +++ b/etc/kolla/defaults.yml @@ -18,3 +18,17 @@ node_templates_directory: "/usr/share/kolla/templates" # The directory to store the config files on the destination node node_config_directory: "/opt/kolla/config" + +# All services have ports that need to be referenced on a global scale between +# the different services. This prevents setting the ports in the defaults for +# each role. + +keystone_public_port: "5000" +keystone_admin_port: "35357" + +glance_api_port: "9292" +glance_registry_port: "9191" + +nova_api_port: "8774" + +neutron_server_port: "9696" diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml index e90380990d..63bf15f5f4 100644 --- a/etc/kolla/globals.yml +++ b/etc/kolla/globals.yml @@ -69,8 +69,6 @@ openstack_logging_verbose: "True" openstack_logging_debug: "False" openstack_region_name: "RegionOne" -keystone_public_port: "5000" -keystone_admin_port: "35357" openstack_auth: auth_url: "http://{{ kolla_internal_address }}:{{ keystone_admin_port }}" diff --git a/etc/kolla/passwords.yml b/etc/kolla/passwords.yml index 6089b283a0..754f112a69 100644 --- a/etc/kolla/passwords.yml +++ b/etc/kolla/passwords.yml @@ -25,6 +25,13 @@ keystone_database_password: "password" glance_database_password: "password" glance_keystone_password: "password" +nova_database_password: "password" +nova_keystone_password: "password" + +neutron_database_password: "password" +neutron_keystone_password: "password" + +metadata_secret: "password" #################### # RabbitMQ options