f517b14cff
The change will limit the hosts the ceph client role is executed against by checking the ceph conditionals before simply executing the role. This will help general run times especially on large scale clouds. Change-Id: Ic7130368c5a2bb231c35bb459a2bebaa28a5a968 Signed-off-by: Kevin Carter <kevin.carter@rackspace.com>
185 lines
6.7 KiB
YAML
185 lines
6.7 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: Installation and setup of Nova
|
|
hosts: nova_all
|
|
gather_facts: "{{ gather_facts | default(True) }}"
|
|
max_fail_percentage: 20
|
|
user: root
|
|
pre_tasks:
|
|
- include: common-tasks/dynamic-address-fact.yml
|
|
vars:
|
|
network_address: "management_address"
|
|
- include: common-tasks/os-lxc-container-setup.yml
|
|
vars:
|
|
extra_container_config_no_restart:
|
|
- "lxc.start.order=69"
|
|
- include: common-tasks/rabbitmq-vhost-user.yml
|
|
static: no
|
|
vars:
|
|
user: "{{ nova_rabbitmq_userid }}"
|
|
password: "{{ nova_rabbitmq_password }}"
|
|
vhost: "{{ nova_rabbitmq_vhost }}"
|
|
_rabbitmq_host_group: "{{ nova_rabbitmq_host_group }}"
|
|
when:
|
|
- inventory_hostname == groups['nova_all'][0]
|
|
- groups[nova_rabbitmq_host_group] | length > 0
|
|
- include: common-tasks/rabbitmq-vhost-user.yml
|
|
static: no
|
|
vars:
|
|
user: "{{ nova_rabbitmq_telemetry_userid }}"
|
|
password: "{{ nova_rabbitmq_telemetry_password }}"
|
|
vhost: "{{ nova_rabbitmq_telemetry_vhost }}"
|
|
_rabbitmq_host_group: "{{ nova_rabbitmq_telemetry_host_group }}"
|
|
when:
|
|
- nova_ceilometer_enabled | bool
|
|
- inventory_hostname == groups['nova_all'][0]
|
|
- groups[nova_rabbitmq_telemetry_host_group] is defined
|
|
- groups[nova_rabbitmq_telemetry_host_group] | length > 0
|
|
- groups[nova_rabbitmq_telemetry_host_group] != groups[nova_rabbitmq_host_group]
|
|
- include: common-tasks/os-log-dir-setup.yml
|
|
vars:
|
|
log_dirs:
|
|
- src: "/openstack/log/{{ inventory_hostname }}-nova"
|
|
dest: "/var/log/nova"
|
|
- include: common-tasks/mysql-db-user.yml
|
|
static: no
|
|
vars:
|
|
user_name: "{{ nova_galera_user }}"
|
|
password: "{{ nova_container_mysql_password }}"
|
|
login_host: "{{ nova_galera_address }}"
|
|
db_name: "{{ nova_galera_database }}"
|
|
when: inventory_hostname == groups['nova_all'][0]
|
|
- include: common-tasks/mysql-db-user.yml
|
|
static: no
|
|
vars:
|
|
user_name: "{{ nova_api_galera_user }}"
|
|
password: "{{ nova_api_container_mysql_password }}"
|
|
login_host: "{{ nova_api_galera_address }}"
|
|
db_name: "{{ nova_api_galera_database }}"
|
|
when: inventory_hostname == groups['nova_all'][0]
|
|
- include: common-tasks/mysql-db-user.yml
|
|
static: no
|
|
vars:
|
|
user_name: "{{ nova_placement_galera_user }}"
|
|
password: "{{ nova_placement_container_mysql_password }}"
|
|
login_host: "{{ nova_placement_galera_address }}"
|
|
db_name: "{{ nova_placement_galera_database }}"
|
|
when: inventory_hostname == groups['nova_all'][0]
|
|
- include: common-tasks/mysql-db-user.yml
|
|
static: no
|
|
vars:
|
|
user_name: "{{ nova_api_galera_user }}"
|
|
password: "{{ nova_api_container_mysql_password }}"
|
|
login_host: "{{ nova_api_galera_address }}"
|
|
db_name: "{{ nova_cell0_database }}"
|
|
db_append_privs: "yes"
|
|
when: inventory_hostname == groups['nova_all'][0]
|
|
- include: common-tasks/package-cache-proxy.yml
|
|
|
|
- name: Add nbd devices to the compute
|
|
shell: |
|
|
for i in /dev/nbd*;do
|
|
lxc-device -n {{ container_name }} add $i $i
|
|
done
|
|
failed_when: false
|
|
register: device_add
|
|
changed_when: >
|
|
'added' in device_add.stdout.lower()
|
|
delegate_to: "{{ physical_host }}"
|
|
when:
|
|
- "inventory_hostname in groups['nova_compute']"
|
|
- "not is_metal | bool"
|
|
tags:
|
|
- always
|
|
- name: Add net/tun device to the compute
|
|
command: |
|
|
lxc-device -n {{ container_name }} add /dev/net/tun /dev/net/tun
|
|
delegate_to: "{{ physical_host }}"
|
|
when:
|
|
- "inventory_hostname in groups['nova_compute']"
|
|
- "not is_metal | bool"
|
|
tags:
|
|
- always
|
|
- name: Check if kvm device exists
|
|
stat:
|
|
path: /dev/kvm
|
|
delegate_to: "{{ physical_host }}"
|
|
register: kvm_device
|
|
when:
|
|
- "inventory_hostname in groups['nova_compute']"
|
|
- "not is_metal | bool"
|
|
tags:
|
|
- always
|
|
- name: Add kvm device to the compute
|
|
command: |
|
|
lxc-device -n {{ container_name }} add /dev/kvm /dev/kvm
|
|
delegate_to: "{{ physical_host }}"
|
|
register: device_add
|
|
failed_when: false
|
|
changed_when: >
|
|
'added' in device_add.stdout.lower()
|
|
when:
|
|
- "inventory_hostname in groups['nova_compute']"
|
|
- "not is_metal | bool"
|
|
- kvm_device.stat.ischr is defined and kvm_device.stat.ischr
|
|
tags:
|
|
- always
|
|
roles:
|
|
- role: "os_nova"
|
|
nova_novncproxy_git_repo: "{{ openstack_repo_git_url }}/novnc"
|
|
nova_novncproxy_git_install_branch: "{{ novncproxy_git_install_branch }}"
|
|
nova_spicehtml5_git_repo: "{{ openstack_repo_git_url }}/spice-html5"
|
|
nova_spicehtml5_git_install_branch: "{{ spicehtml5_git_install_branch }}"
|
|
nova_management_address: "{{ management_address }}"
|
|
- role: "ceph_client"
|
|
openstack_service_system_user: "{{ nova_system_user_name }}"
|
|
openstack_service_venv_bin: "{{ nova_bin }}"
|
|
when:
|
|
- inventory_hostname in groups['nova_compute']
|
|
- nova_libvirt_images_rbd_pool is defined or
|
|
cinder_backends_rbd_inuse | default(false) | bool
|
|
tags:
|
|
- ceph
|
|
- role: "openstack_openrc"
|
|
tags:
|
|
- openrc
|
|
- role: "rsyslog_client"
|
|
rsyslog_client_log_rotate_file: nova_log_rotate
|
|
rsyslog_client_log_dir: "/var/log/nova"
|
|
rsyslog_client_config_name: "99-nova-rsyslog-client.conf"
|
|
tags:
|
|
- rsyslog
|
|
- role: "system_crontab_coordination"
|
|
tags:
|
|
- crontab
|
|
vars_files:
|
|
- defaults/repo_packages/nova_consoles.yml
|
|
vars:
|
|
is_metal: "{{ properties.is_metal|default(false) }}"
|
|
nova_galera_user: nova
|
|
nova_galera_database: nova
|
|
nova_api_galera_user: nova_api
|
|
nova_api_galera_database: nova_api
|
|
nova_placement_galera_user: nova_placement
|
|
nova_placement_galera_database: nova_placement
|
|
nova_cell0_database: nova_cell0
|
|
nova_galera_address: "{{ galera_address }}"
|
|
nova_api_galera_address: "{{ galera_address }}"
|
|
nova_placement_galera_address: "{{ galera_address }}"
|
|
glance_host: "{{ internal_lb_vip_address }}"
|
|
tags:
|
|
- nova
|