├── tests ├── inventory ├── centos-7-test.yml ├── test.yml ├── ansible.cfg └── Dockerfile.centos-7 ├── vars ├── main.yml └── RedHat.yml ├── files └── ssh.config ├── templates └── secret.xml.j2 ├── tasks ├── nova_db_setup.yml ├── nova_install_RedHat.yml ├── nova_compute_ceph.yml ├── nova_post_install.yml ├── main.yml ├── nova_configure.yml ├── nova_service_setup.yml └── nova_compute.yml ├── meta └── main.yml ├── handlers └── main.yml ├── README.md ├── .travis.yml └── defaults └── main.yml /tests/inventory: -------------------------------------------------------------------------------- 1 | localhost -------------------------------------------------------------------------------- /vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for ansible-role-openstack-nova 3 | -------------------------------------------------------------------------------- /files/ssh.config: -------------------------------------------------------------------------------- 1 | Host * 2 | StrictHostKeyChecking no 3 | UserKnownHostsFile=/dev/null -------------------------------------------------------------------------------- /tests/centos-7-test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # test file 3 | 4 | - hosts: localhost 5 | roles: 6 | - role_under_test 7 | -------------------------------------------------------------------------------- /tests/test.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # test file 3 | 4 | - hosts: all 5 | remote_user: root 6 | roles: 7 | - ansible-role-openstack-nova 8 | -------------------------------------------------------------------------------- /tests/ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | roles_path = ../../ 3 | host_key_checking = False 4 | ansible_managed = Ansible managed: modified on %Y-%m-%d %H:%M:%S by {uid} on {host} 5 | -------------------------------------------------------------------------------- /templates/secret.xml.j2: -------------------------------------------------------------------------------- 1 | 2 | {{ openstack_libvirt_secret_uuid }} 3 | 4 | client.cinder secret 5 | 6 | -------------------------------------------------------------------------------- /tasks/nova_db_setup.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for nova DB Setup 3 | 4 | - name: DB sync for nova. 5 | shell: | 6 | nova-manage api_db sync 7 | nova-manage db sync 8 | become: yes 9 | become_user: "{{ nova_system_user_name }}" 10 | ignore_errors: True 11 | run_once: True 12 | -------------------------------------------------------------------------------- /meta/main.yml: -------------------------------------------------------------------------------- 1 | galaxy_info: 2 | author: z 3 | description: Installs and configures openstack nova. 4 | company: 5 | license: license (BSD, MIT) 6 | min_ansible_version: 1.9 7 | platforms: 8 | - name: EL 9 | versions: 10 | - 7 11 | galaxy_tags: 12 | - cloud 13 | - nova 14 | - openstack 15 | dependencies: [] 16 | -------------------------------------------------------------------------------- /handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # handlers file for ansible-role-openstack-nova 3 | 4 | - name: restart openstack-nova 5 | service: 6 | name: "{{ item }}" 7 | state: restarted 8 | with_items: 9 | - "{{ nova_system_service_name }}" 10 | 11 | - name: restart openstack-nova-compute-kvm 12 | service: 13 | name: "{{ item }}" 14 | state: restarted 15 | with_items: 16 | - "{{ nova_compute_kvm_system_service_name }}" 17 | -------------------------------------------------------------------------------- /tasks/nova_install_RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for nova install on RedHat 3 | 4 | - name: Install OpenStack nova controller packages. 5 | yum: 6 | name: "{{ item }}" 7 | state: installed 8 | with_items: "{{ nova_packages }}" 9 | when: 10 | - inventory_hostname in groups['nova_controller'] 11 | 12 | - name: Install OpenStack nova compute kvm packages. 13 | yum: 14 | name: "{{ item }}" 15 | state: installed 16 | with_items: "{{ nova_compute_kvm_packages }}" 17 | when: 18 | - inventory_hostname in groups['nova_compute'] 19 | -------------------------------------------------------------------------------- /tasks/nova_compute_ceph.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Copy openstack ceph cinder key. 3 | copy: 4 | src: "{{ inventory_dir }}/fetch/{{ ceph_fsid }}/{{ groups['ceph-mon'][0] }}/etc/ceph/ceph.client.cinder.keyring" 5 | dest: /etc/ceph/ceph.client.cinder.keyring 6 | 7 | - name: Copy secret file. 8 | template: src=secret.xml.j2 dest=/tmp/secret.xml 9 | 10 | - name: define secret. 11 | shell: | 12 | virsh secret-define --file /tmp/secret.xml 13 | virsh secret-set-value --secret {{ openstack_libvirt_secret_uuid }} --base64 $(tail -n 1 /etc/ceph/ceph.client.cinder.keyring | awk '{print $3}') 14 | rm /tmp/secret.xml 15 | -------------------------------------------------------------------------------- /vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # vars file for Redhat 3 | 4 | nova_packages: 5 | - openstack-nova-api 6 | - openstack-nova-conductor 7 | - openstack-nova-console 8 | - openstack-nova-novncproxy 9 | - openstack-nova-scheduler 10 | 11 | nova_compute_kvm_packages: 12 | - openstack-nova-compute 13 | 14 | nova_system_service_name: 15 | - openstack-nova-api 16 | - openstack-nova-consoleauth 17 | - openstack-nova-scheduler 18 | - openstack-nova-conductor 19 | - openstack-nova-novncproxy 20 | 21 | nova_compute_kvm_system_service_name: 22 | - libvirtd 23 | - openstack-nova-compute 24 | 25 | nova_config_location: /etc/nova/nova.conf 26 | -------------------------------------------------------------------------------- /tasks/nova_post_install.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for openstack-nova post install 3 | 4 | - name: Ensure openstack nova services is started and enabled at boot. 5 | service: 6 | name: "{{ item }}" 7 | state: started 8 | enabled: yes 9 | with_items: 10 | - "{{ nova_system_service_name }}" 11 | when: 12 | - inventory_hostname in groups['nova_controller'] 13 | 14 | - name: Ensure openstack nova kvm compute services is started and enabled at boot. 15 | service: 16 | name: "{{ item }}" 17 | state: started 18 | enabled: yes 19 | with_items: 20 | - "{{ nova_compute_kvm_system_service_name }}" 21 | when: 22 | - inventory_hostname in groups['nova_compute'] 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ansible Role: openstack-nova 2 | 3 | [![Build Status](https://travis-ci.org/devops/ansible-role-openstack-nova.svg?branch=master)](https://travis-ci.org/devops/ansible-role-openstack-nova) 4 | 5 | Ansible role that installs and configures openstack nova. 6 | 7 | ## Requirements 8 | 9 | None. 10 | 11 | ## Role Variables 12 | 13 | ### `defaults/main.yml` 14 | 15 | 16 | ### `vars/RedHat.yml` 17 | 18 | 19 | ## Dependencies 20 | 21 | None. 22 | 23 | ## Example Playbook 24 | 25 | 1) Install openstack-nova and use the default settings. 26 | 27 | - hosts: all 28 | roles: 29 | - ansible-role-openstack-nova 30 | 31 | 32 | ## License 33 | 34 | MIT / BSD 35 | 36 | ## Author Information 37 | 38 | z. 39 | -------------------------------------------------------------------------------- /tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for ansible-role-openstack-nova 3 | 4 | # Variable setup. 5 | - name: Include OS-specific variables. 6 | include_vars: "{{ ansible_os_family }}.yml" 7 | 8 | - include: nova_service_setup.yml 9 | run_once: True 10 | when: 11 | - "inventory_hostname in groups['nova_controller']" 12 | 13 | # Setup/Install tasks. 14 | - include: nova_install_RedHat.yml 15 | when: ansible_os_family == 'RedHat' 16 | 17 | # Configure tasks. 18 | - include: nova_configure.yml 19 | 20 | # DB tasks. 21 | - include: nova_db_setup.yml 22 | when: 23 | - "inventory_hostname in groups['nova_controller']" 24 | 25 | # Nova Compute 26 | - include: nova_compute.yml 27 | when: 28 | - "inventory_hostname in groups['nova_compute']" 29 | 30 | - include: nova_compute_ceph.yml 31 | when: 32 | - "inventory_hostname in groups['nova_compute']" 33 | - nova_compute_ceph_config 34 | 35 | # Finalize installation tasks. 36 | - include: nova_post_install.yml 37 | -------------------------------------------------------------------------------- /tasks/nova_configure.yml: -------------------------------------------------------------------------------- 1 | --- 2 | - name: Configure nova controller. 3 | shell: | 4 | openstack-config --set "{{ nova_config_location }}" "{{ item.section }}" "{{ item.param }}" "{{ item.value }}" 5 | with_items: 6 | - "{{ nova_config }}" 7 | when: 8 | - inventory_hostname in groups['nova_controller'] 9 | 10 | - name: Configure nova compute kvm. 11 | shell: | 12 | openstack-config --set "{{ nova_config_location }}" "{{ item.section }}" "{{ item.param }}" "{{ item.value }}" 13 | with_items: 14 | - "{{ nova_compute_kvm_config }}" 15 | when: 16 | - inventory_hostname in groups['nova_compute'] 17 | 18 | - name: Configure nova compute to use ceph. 19 | shell: | 20 | openstack-config --set "{{ nova_config_location }}" "{{ item.section }}" "{{ item.param }}" "{{ item.value }}" 21 | with_items: 22 | - "{{ nova_compute_ceph_config }}" 23 | when: 24 | - inventory_hostname in groups['nova_compute'] 25 | - "{{ nova_compute_ceph_config }}" 26 | -------------------------------------------------------------------------------- /tests/Dockerfile.centos-7: -------------------------------------------------------------------------------- 1 | FROM centos:7 2 | 3 | # Install systemd -- See https://hub.docker.com/_/centos/ 4 | RUN yum -y swap -- remove fakesystemd -- install systemd systemd-libs 5 | RUN yum -y update; yum clean all; \ 6 | (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ 7 | rm -f /lib/systemd/system/multi-user.target.wants/*; \ 8 | rm -f /etc/systemd/system/*.wants/*; \ 9 | rm -f /lib/systemd/system/local-fs.target.wants/*; \ 10 | rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ 11 | rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ 12 | rm -f /lib/systemd/system/basic.target.wants/*; \ 13 | rm -f /lib/systemd/system/anaconda.target.wants/*; 14 | 15 | # Install Ansible 16 | RUN yum -y install epel-release 17 | RUN yum -y install git ansible sudo iproute 18 | RUN yum clean all 19 | 20 | # Install Ansible inventory file 21 | RUN echo -e '[local]\nlocalhost ansible_connection=local' > /etc/ansible/hosts 22 | 23 | VOLUME ["/sys/fs/cgroup"] 24 | CMD ["/usr/sbin/init"] 25 | -------------------------------------------------------------------------------- /tasks/nova_service_setup.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for openstack-nova service setup 3 | 4 | - name: Create the service credentials for nova. 5 | shell: | 6 | openstack user create --domain default --password "{{ nova_keystone_password }}" "{{ nova_keystone_user }}" 7 | openstack role add --project service --user {{ nova_keystone_user }} admin 8 | environment: 9 | - "{{ token_auth_env }}" 10 | 11 | - name: Create the service entity for nova. 12 | shell: | 13 | openstack service create --name "{{ nova_service_name }}" --description "{{ nova_service_description }}" "{{ nova_service_type }}" 14 | environment: 15 | - "{{ token_auth_env }}" 16 | 17 | # Create the API endpoint for nova. 18 | - name: Check if API endpoint exists for service "{{ nova_service_type }}" 19 | shell: "openstack endpoint list --service {{ nova_service_type }}" 20 | register: check_endpoint_result 21 | environment: 22 | - "{{ token_auth_env }}" 23 | ignore_errors: True 24 | 25 | - name: "Specify API endpoints for {{ nova_service_type }} service" 26 | when: check_endpoint_result.rc == 0 27 | shell: | 28 | openstack endpoint create --region {{ nova_service_region }} {{ nova_service_type }} public {{ nova_service_public_url }} 29 | openstack endpoint create --region {{ nova_service_region }} {{ nova_service_type }} internal {{ nova_service_internal_url }} 30 | openstack endpoint create --region {{ nova_service_region }} {{ nova_service_type }} admin {{ nova_service_admin_url }} 31 | environment: 32 | - "{{ token_auth_env }}" 33 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | env: 3 | - distribution: centos 4 | version: 7 5 | init: /usr/lib/systemd/systemd 6 | run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro" 7 | playbook: centos-7-test.yml 8 | 9 | services: 10 | - docker 11 | 12 | before_install: 13 | # Pull container 14 | - 'sudo docker pull ${distribution}:${version}' 15 | 16 | # Customize container 17 | - 'sudo docker build --rm=true --file=tests/Dockerfile.${distribution}-${version} --tag=${distribution}-${version}:ansible tests' 18 | 19 | script: 20 | - container_id=$(mktemp) 21 | 22 | # Run container in detached state 23 | - 'sudo docker run --detach --volume="${PWD}":/etc/ansible/roles/role_under_test:ro ${run_opts} ${distribution}-${version}:ansible "${init}" > "${container_id}"' 24 | 25 | # Ansible syntax check. 26 | - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook} --syntax-check' 27 | 28 | # Test role. 29 | - 'sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook}' 30 | 31 | # Test role idempotence. 32 | - > 33 | sudo docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/role_under_test/tests/${playbook} 34 | | grep -q 'changed=0.*failed=0' 35 | && (echo 'Idempotence test: pass' && exit 0) 36 | || (echo 'Idempotence test: fail' && exit 1) 37 | 38 | # Some debugging (show all the logs). 39 | - sudo docker exec --tty "$(cat ${container_id})" env TERM=xterm ss -ntlup || true 40 | 41 | # Clean up 42 | - sudo docker stop "$(cat ${container_id})" 43 | 44 | notifications: 45 | webhooks: https://galaxy.ansible.com/api/v1/notifications/ 46 | -------------------------------------------------------------------------------- /tasks/nova_compute.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # tasks file for nova 3 | 4 | - name: configure libvirtd.conf. 5 | lineinfile: > 6 | dest="/etc/libvirt/libvirtd.conf" 7 | regexp="{{ item.regexp }}" 8 | line="{{ item.line }}" 9 | state=present 10 | with_items: 11 | - { regexp: "^#?listen_tls", line: 'listen_tls = 0' } 12 | - { regexp: "^#?listen_tcp", line: 'listen_tcp = 1' } 13 | - { regexp: "^#?tcp_port", line: 'tcp_port = "16509"' } 14 | - { regexp: "^#?auth_tcp", line: 'auth_tcp = "none"' } 15 | - { regexp: "^#?mdns_adv", line: 'mdns_adv = 0' } 16 | 17 | - name: configure UUID for livirtd.conf. 18 | shell: sed -i "/#host_uuid/ahost_uuid = \"`uuidgen`\"" /etc/libvirt/libvirtd.conf 19 | 20 | - name: configure sysconfig libvirtd. 21 | lineinfile: > 22 | dest="/etc/sysconfig/libvirtd" 23 | regexp="{{ item.regexp }}" 24 | line="{{ item.line }}" 25 | state=present 26 | with_items: 27 | - { regexp: "^#?LIBVIRTD_ARGS", line: 'LIBVIRTD_ARGS="--listen"' } 28 | 29 | - name: Restart libvirtd service. 30 | service: 31 | name: "libvirtd" 32 | state: restarted 33 | 34 | - name: Configure nova user. 35 | shell: usermod -s /bin/bash nova 36 | 37 | - name: Configure nova user ssh-key. 38 | authorized_key: 39 | user: "nova" 40 | key: "{{ item }}" 41 | path: "/var/lib/nova/.ssh/authorized_keys" 42 | with_file: 43 | - "{{ inventory_dir }}/fetch/compute/id_rsa.pub" 44 | 45 | - name: Copy id_rsa file to compute nodes. 46 | copy: 47 | src: "{{ inventory_dir }}/fetch/compute/{{ item }}" 48 | dest: /var/lib/nova/.ssh/ 49 | group: nova 50 | owner: nova 51 | mode: 0600 52 | with_items: 53 | - id_rsa 54 | - id_rsa.pub 55 | 56 | - name: Copy ssh config to compute nodes. 57 | copy: 58 | src: ssh.config 59 | dest: /var/lib/nova/.ssh/config 60 | group: nova 61 | owner: nova 62 | mode: 0600 63 | -------------------------------------------------------------------------------- /defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # defaults file for ansible-role-openstack-nova 3 | 4 | ## openstack public config 5 | # openstack_db_host: "" 6 | # openstack_memcached_servers: "" 7 | # openstack_controller_host: "" 8 | # openstack_keystone_auth_uri: "" 9 | # openstack_keystone_auth_url: "" 10 | # openstack_libvirt_secret_uuid: "" 11 | # openstack_admin_vip: "" 12 | # openstack_public_vip: "" 13 | # openstack_internal_vip: "" 14 | # openstack_rabbit_hosts: "" 15 | 16 | nova_system_user_name: nova 17 | 18 | # nova service 19 | nova_service_region: RegionOne 20 | nova_service_name: nova 21 | nova_service_type: compute 22 | nova_service_description: "OpenStack Compute" 23 | nova_service_admin_url: "http://{{ openstack_admin_vip }}:8774/v2.1/%\\(tenant_id\\)s" 24 | nova_service_internal_url: "http://{{ openstack_internal_vip }}:8774/v2.1/%\\(tenant_id\\)s" 25 | nova_service_public_url: "http://{{ openstack_public_vip }}:8774/v2.1/%\\(tenant_id\\)s" 26 | 27 | # nova db 28 | nova_db_host: "{{ openstack_db_host }}" 29 | nova_db_name: "nova" 30 | nova_db_user: "nova" 31 | nova_db_password: "nova" 32 | nova_db_priv: "{{ nova_db_name }}.*:ALL" 33 | 34 | nova_api_db_name: "nova_api" 35 | nova_api_db_user: "nova_api" 36 | nova_api_db_password: "nova_api" 37 | nova_api_db_priv: "{{ nova_api_db_name }}.*:ALL" 38 | 39 | # nova rabbitmq 40 | nova_rabbitmq_host: "{{ openstack_controller_host }}" 41 | nova_rabbitmq_userid: 'nova' 42 | nova_rabbitmq_password: 'nova' 43 | nova_rabbitmq_vhost: '/nova' 44 | 45 | # nova keystone 46 | nova_keystone_user: "nova" 47 | nova_keystone_password: "nova" 48 | 49 | # nova config 50 | ## common config 51 | nova_rpc_backend: rabbit 52 | nova_auth_strategy: keystone 53 | nova_my_ip: "{{ mgmt_ip }}" 54 | nova_network_api_class: "nova.network.neutronv2.api.API" 55 | nova_security_group_api: "neutron" 56 | nova_linuxnet_interface_driver: "nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver" 57 | nova_firewall_driver: "nova.virt.firewall.NoopFirewallDriver" 58 | nova_lock_path: "/var/lib/nova/tmp" 59 | nova_enabled_apis: "osapi_compute,metadata" 60 | nova_memcached_servers: "{{ openstack_memcached_servers }}" 61 | nova_glance_api_servers: "http://{{ openstack_controller_host }}:9292" 62 | nova_use_neutron: "True" 63 | 64 | ## controller config 65 | nova_ec2_listen: "{{ mgmt_ip }}" 66 | nova_osapi_compute_listen: "{{ mgmt_ip }}" 67 | nova_metadata_listen: "{{ mgmt_ip }}" 68 | nova_novncproxy_host: "{{ mgmt_ip }}" 69 | 70 | ## compute config 71 | nova_vnc_enabled: "True" 72 | nova_vncserver_listen: "0.0.0.0" 73 | nova_novncproxy_base_url: "http://{{ openstack_public_vip }}:6080/vnc_auto.html" 74 | nova_cpu_allocation_ratio: "4.0" 75 | nova_catalog_info: "volumev2:cinderv2:internalURL" 76 | 77 | ## nova rabbitmq config 78 | nova_rabbit_hosts: "{{ openstack_rabbit_hosts | default('{{ openstack_controller_host }}') }}" 79 | nova_rabbit_retry_interval: 1 80 | nova_rabbit_retry_backoff: 2 81 | nova_rabbit_max_retries: 0 82 | nova_rabbit_durable_queues: "true" 83 | nova_rabbit_ha_queues: "true" 84 | 85 | ## nova compute ceph config 86 | nova_images_type: "rbd" 87 | nova_images_rbd_pool: "nova" 88 | nova_images_rbd_ceph_conf: "/etc/ceph/ceph.conf" 89 | nova_rbd_user: "cinder" 90 | nova_rbd_secret_uuid: "{{ openstack_libvirt_secret_uuid }}" 91 | nova_disk_cachemodes: "network=writeback" 92 | nova_inject_password: "false" 93 | nova_inject_key: "false" 94 | nova_inject_partition: -2 95 | nova_live_migration_flag: "VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED" 96 | 97 | nova_config: 98 | - { section: "database", param: "connection", value: "mysql+pymysql://{{ nova_db_user }}:{{ nova_db_password }}@{{ nova_db_host }}/{{ nova_db_name }}" } 99 | - { section: "api_database", param: "connection", value: "mysql+pymysql://{{ nova_api_db_user }}:{{ nova_api_db_password }}@{{ nova_db_host }}/{{ nova_api_db_name }}" } 100 | - { section: "DEFAULT", param: "rpc_backend", value: "{{ nova_rpc_backend }}" } 101 | - { section: "DEFAULT", param: "auth_strategy", value: "{{ nova_auth_strategy }}" } 102 | - { section: "DEFAULT", param: "my_ip", value: "{{ nova_my_ip }}" } 103 | - { section: "DEFAULT", param: "network_api_class", value: "{{ nova_network_api_class }}" } 104 | - { section: "DEFAULT", param: "security_group_api", value: "{{ nova_security_group_api }}" } 105 | - { section: "DEFAULT", param: "linuxnet_interface_driver", value: "{{ nova_linuxnet_interface_driver }}" } 106 | - { section: "DEFAULT", param: "firewall_driver", value: "{{ nova_firewall_driver }}" } 107 | - { section: "DEFAULT", param: "enabled_apis", value: "{{ nova_enabled_apis }}" } 108 | - { section: "DEFAULT", param: "osapi_compute_listen", value: "{{ nova_osapi_compute_listen }}" } 109 | - { section: "DEFAULT", param: "metadata_listen", value: "{{ nova_metadata_listen }}" } 110 | - { section: "DEFAULT", param: "novncproxy_host", value: "{{ nova_novncproxy_host }}" } 111 | - { section: "DEFAULT", param: "ec2_listen", value: "{{ nova_ec2_listen }}" } 112 | - { section: "DEFAULT", param: "use_neutron", value: "{{ nova_use_neutron }}" } 113 | - { section: "glance", param: "api_servers", value: "{{ nova_glance_api_servers }}" } 114 | - { section: "keystone_authtoken", param: "auth_uri", value: "{{ openstack_keystone_auth_uri }}" } 115 | - { section: "keystone_authtoken", param: "auth_url", value: "{{ openstack_keystone_auth_url }}" } 116 | - { section: "keystone_authtoken", param: "memcached_servers", value: "{{ nova_memcached_servers }}" } 117 | - { section: "keystone_authtoken", param: "auth_type", value: "password" } 118 | - { section: "keystone_authtoken", param: "project_domain_name", value: "default" } 119 | - { section: "keystone_authtoken", param: "user_domain_name", value: "default" } 120 | - { section: "keystone_authtoken", param: "project_name", value: "service" } 121 | - { section: "keystone_authtoken", param: "username", value: "{{ nova_keystone_user }}" } 122 | - { section: "keystone_authtoken", param: "password", value: "{{ nova_keystone_password }}" } 123 | - { section: "vnc", param: "vncserver_listen", value: '\$my_ip' } 124 | - { section: "vnc", param: "vncserver_proxyclient_address", value: '\$my_ip' } 125 | - { section: "oslo_concurrency", param: "lock_path", value: "{{ nova_lock_path }}" } 126 | - { section: "oslo_messaging_rabbit", param: "rabbit_userid", value: "{{ nova_rabbitmq_userid }}" } 127 | - { section: "oslo_messaging_rabbit", param: "rabbit_password", value: "{{ nova_rabbitmq_password }}" } 128 | - { section: "oslo_messaging_rabbit", param: "rabbit_virtual_host", value: "{{ nova_rabbitmq_vhost }}" } 129 | - { section: "oslo_messaging_rabbit", param: "rabbit_hosts", value: "{{ nova_rabbit_hosts }}" } 130 | - { section: "oslo_messaging_rabbit", param: "rabbit_retry_interval", value: "{{ nova_rabbit_retry_interval }}" } 131 | - { section: "oslo_messaging_rabbit", param: "rabbit_retry_backoff", value: "{{ nova_rabbit_retry_backoff }}" } 132 | - { section: "oslo_messaging_rabbit", param: "rabbit_max_retries", value: "{{ nova_rabbit_max_retries }}" } 133 | - { section: "oslo_messaging_rabbit", param: "rabbit_durable_queues", value: "{{ nova_rabbit_durable_queues }}" } 134 | - { section: "oslo_messaging_rabbit", param: "rabbit_ha_queues", value: "{{ nova_rabbit_ha_queues }}" } 135 | 136 | nova_compute_kvm_config: 137 | - { section: "DEFAULT", param: "rpc_backend", value: "{{ nova_rpc_backend }}" } 138 | - { section: "DEFAULT", param: "auth_strategy", value: "{{ nova_auth_strategy }}" } 139 | - { section: "DEFAULT", param: "my_ip", value: "{{ nova_my_ip }}" } 140 | - { section: "DEFAULT", param: "network_api_class", value: "{{ nova_network_api_class }}" } 141 | - { section: "DEFAULT", param: "security_group_api", value: "{{ nova_security_group_api }}" } 142 | - { section: "DEFAULT", param: "linuxnet_interface_driver", value: "{{ nova_linuxnet_interface_driver }}" } 143 | - { section: "DEFAULT", param: "use_neutron", value: "{{ nova_use_neutron }}" } 144 | - { section: "DEFAULT", param: "firewall_driver", value: "{{ nova_firewall_driver }}" } 145 | - { section: "DEFAULT", param: "cpu_allocation_ratio", value: "{{ nova_cpu_allocation_ratio }}" } 146 | - { section: "keystone_authtoken", param: "auth_uri", value: "{{ openstack_keystone_auth_uri }}" } 147 | - { section: "keystone_authtoken", param: "auth_url", value: "{{ openstack_keystone_auth_url }}" } 148 | - { section: "keystone_authtoken", param: "memcached_servers", value: "{{ nova_memcached_servers }}" } 149 | - { section: "keystone_authtoken", param: "auth_type", value: "password" } 150 | - { section: "keystone_authtoken", param: "project_domain_name", value: "default" } 151 | - { section: "keystone_authtoken", param: "user_domain_name", value: "default" } 152 | - { section: "keystone_authtoken", param: "project_name", value: "service" } 153 | - { section: "keystone_authtoken", param: "username", value: "{{ nova_keystone_user }}" } 154 | - { section: "keystone_authtoken", param: "password", value: "{{ nova_keystone_password }}" } 155 | - { section: "vnc", param: "enabled", value: "{{ nova_vnc_enabled }}" } 156 | - { section: "vnc", param: "vncserver_listen", value: "{{ nova_vncserver_listen }}" } 157 | - { section: "vnc", param: "vncserver_proxyclient_address", value: '\$my_ip' } 158 | - { section: "vnc", param: "novncproxy_base_url", value: "{{ nova_novncproxy_base_url }}" } 159 | - { section: "cinder", param: "catalog_info", value: "{{ nova_catalog_info }}" } 160 | - { section: "glance", param: "api_servers", value: "{{ nova_glance_api_servers }}" } 161 | - { section: "oslo_concurrency", param: "lock_path", value: "{{ nova_lock_path }}" } 162 | - { section: "oslo_messaging_rabbit", param: "rabbit_userid", value: "{{ nova_rabbitmq_userid }}" } 163 | - { section: "oslo_messaging_rabbit", param: "rabbit_password", value: "{{ nova_rabbitmq_password }}" } 164 | - { section: "oslo_messaging_rabbit", param: "rabbit_virtual_host", value: "{{ nova_rabbitmq_vhost }}" } 165 | - { section: "oslo_messaging_rabbit", param: "rabbit_hosts", value: "{{ nova_rabbit_hosts }}" } 166 | - { section: "oslo_messaging_rabbit", param: "rabbit_retry_interval", value: "{{ nova_rabbit_retry_interval }}" } 167 | - { section: "oslo_messaging_rabbit", param: "rabbit_retry_backoff", value: "{{ nova_rabbit_retry_backoff }}" } 168 | - { section: "oslo_messaging_rabbit", param: "rabbit_max_retries", value: "{{ nova_rabbit_max_retries }}" } 169 | - { section: "oslo_messaging_rabbit", param: "rabbit_durable_queues", value: "{{ nova_rabbit_durable_queues }}" } 170 | - { section: "oslo_messaging_rabbit", param: "rabbit_ha_queues", value: "{{ nova_rabbit_ha_queues }}" } 171 | 172 | nova_compute_ceph_config: 173 | - { section: "libvirt", param: "images_type", value: "{{ nova_images_type }}" } 174 | - { section: "libvirt", param: "images_rbd_pool", value: "{{ nova_images_rbd_pool }}" } 175 | - { section: "libvirt", param: "images_rbd_ceph_conf", value: "{{ nova_images_rbd_ceph_conf }}" } 176 | - { section: "libvirt", param: "rbd_user", value: "{{ nova_rbd_user }}" } 177 | - { section: "libvirt", param: "rbd_secret_uuid", value: "{{ nova_rbd_secret_uuid }}" } 178 | - { section: "libvirt", param: "disk_cachemodes", value: '\"{{ nova_disk_cachemodes }}\"' } 179 | - { section: "libvirt", param: "inject_password", value: "{{ nova_inject_password }}" } 180 | - { section: "libvirt", param: "inject_key", value: "{{ nova_inject_key }}" } 181 | - { section: "libvirt", param: "inject_partition", value: "{{ nova_inject_partition }}" } 182 | - { section: "libvirt", param: "live_migration_flag", value: '\"{{ nova_live_migration_flag }}\"' } 183 | --------------------------------------------------------------------------------