6321cf9030
Existing instances can be mapped to a newly created cell immediately after the cell is created and by the same conductor host that created the cell. After a new compute host is built, it will need to mapped to a cell through the 'discover_hosts' command of nova-manage. This command will still need to be run against a host that has direct database access, but the command is able to handle mapping of all compute hosts that do not currently belong to the cell so it only needs to be run once per play. There can be a short delay in the time between a compute service starting and becoming available to be discovered and mapped but, for most deployments, compute host discovery will be handled automatically as a periodic task. Change-Id: I4f7328e1aff79eb94f278999b97fbad8f44c6a3e Closes-Bug: 1749037 Related-Bug: 1729661 Related-Bug: 1752540
137 lines
3.9 KiB
YAML
137 lines
3.9 KiB
YAML
---
|
|
# Copyright 2014, Rackspace US, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
- name: Gather variables for each operating system
|
|
include_vars: "{{ item }}"
|
|
with_first_found:
|
|
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml"
|
|
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
|
|
- "{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
|
|
- "{{ ansible_distribution | lower }}.yml"
|
|
- "{{ ansible_os_family | lower }}.yml"
|
|
tags:
|
|
- always
|
|
|
|
- name: Fail when virt type is unsupported
|
|
fail:
|
|
msg: "Unsupported Virt Type Provided {{ nova_supported_virt_types }}"
|
|
when:
|
|
- nova_virt_type is defined
|
|
- nova_virt_type not in nova_supported_virt_types
|
|
tags:
|
|
- always
|
|
|
|
- name: Fail if TCP and TLS are both enabled
|
|
fail:
|
|
msg: |
|
|
TCP and TLS connectivity are currently enabled for libvirtd. This
|
|
combination prevents libvirtd from starting properly since this role
|
|
does not generate TLS certificates for libvirtd at this time.
|
|
|
|
To enable TCP connectivity without TLS, set the following variables:
|
|
|
|
nova_libvirtd_listen_tcp: 1
|
|
nova_libvirtd_listen_tls: 0
|
|
|
|
Please note that this configuration does not encrypt communication with
|
|
libvirtd.
|
|
when:
|
|
- nova_libvirtd_listen_tcp == 1
|
|
- nova_libvirtd_listen_tls == 1
|
|
tags:
|
|
- always
|
|
|
|
- include_tasks: nova_virt_detect.yml
|
|
tags:
|
|
- always
|
|
- nova-config
|
|
|
|
- include_tasks: nova_pre_install.yml
|
|
tags:
|
|
- nova-install
|
|
|
|
- include_tasks: nova_install.yml
|
|
tags:
|
|
- nova-install
|
|
|
|
- name: refresh local facts
|
|
setup:
|
|
filter: ansible_local
|
|
gather_subset: "!all"
|
|
tags:
|
|
- nova-config
|
|
|
|
- include_tasks: nova_post_install.yml
|
|
tags:
|
|
- nova-config
|
|
|
|
- include_tasks: nova_db_setup.yml
|
|
when:
|
|
- "nova_services['nova-conductor']['group'] in group_names"
|
|
- "inventory_hostname == ((groups['nova_conductor'] | intersect(ansible_play_hosts)) | list)[0]"
|
|
tags:
|
|
- nova-config
|
|
|
|
- include_tasks: nova_uwsgi.yml
|
|
tags:
|
|
- nova-config
|
|
|
|
- include_tasks: "nova_init_{{ ansible_service_mgr}}.yml"
|
|
tags:
|
|
- nova-config
|
|
|
|
- include_tasks: nova_service_setup.yml
|
|
when:
|
|
- "nova_services['nova-conductor']['group'] in group_names"
|
|
- "inventory_hostname == ((groups['nova_conductor'] | intersect(ansible_play_hosts)) | list)[0]"
|
|
tags:
|
|
- nova-config
|
|
|
|
- include_tasks: nova_compute.yml
|
|
when:
|
|
- "nova_services['nova-compute']['group'] in group_names"
|
|
tags:
|
|
- nova-compute
|
|
|
|
- name: Include ceph_client role
|
|
include_role:
|
|
name: ceph_client
|
|
vars:
|
|
openstack_service_system_user: "{{ nova_system_user_name }}"
|
|
openstack_service_venv_bin: "{{ nova_bin }}"
|
|
when:
|
|
- "nova_services['nova-compute']['group'] in group_names"
|
|
- "(nova_libvirt_images_rbd_pool is defined) or
|
|
(nova_cinder_rbd_inuse | bool)"
|
|
tags:
|
|
- ceph
|
|
|
|
- name: Flush handlers
|
|
meta: flush_handlers
|
|
|
|
# We have to delegate this back to the conductor
|
|
# because the compute hosts do not have access to
|
|
# the database connection string and therefore
|
|
# cannot run nova-manage.
|
|
- import_tasks: nova_db_post_setup.yml
|
|
delegate_to: "{{ random_conductor }}"
|
|
run_once: true
|
|
when:
|
|
- "nova_services['nova-compute']['group'] in group_names"
|
|
vars:
|
|
random_conductor: "{{ groups[nova_services['nova-conductor']['group']] | random }}"
|
|
tags:
|
|
- nova-config
|