openstack-ansible/playbooks/os-nova-install.yml
Steve Lewis 3d1b45ea4c Configure DB addresses for each service
To enable partitioning of DB traffic by-service, each service needs to
use a custom connection string. Defaulting the service address to a
common galera_address makes things continue to work by default.

While the galera_address could be overridden on a container or host
basis this requires repeating that behavior across each infra node in
the inventory. Providing service-specific connection address variables
simplifies the management somewhat for large deployments and may reduce
error rates.

The service install playbooks now default the service-specific variables
instead of galera_address to the internal lb vip from inventory to
maintain the ease-of-use currently available.

Any value for a service-specific variable set in user_variables.yml will
override the value in the playbook's vars to provide selective
customization as needed.

Change-Id: I4c98bf906a0c1cb11ddd41277a855dce22ff646a
Closes-Bug: 1462529
2015-06-10 02:07:38 +00:00

106 lines
3.5 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
max_fail_percentage: 20
user: root
pre_tasks:
- name: Sort the rabbitmq servers
dist_sort:
value_to_lookup: "{{ container_name }}"
ref_list: "{{ groups['nova_all'] }}"
src_list: "{{ rabbitmq_servers }}"
register: servers
- name: Set rabbitmq servers
set_fact:
rabbitmq_servers: "{{ servers.sorted_list }}"
- 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'] and
(is_metal == false or is_metal == "False")
tags:
- nova-kvm
- nova-kvm-container-devices
- name: Add net/tun device to the compute
shell: |
lxc-device -n {{ container_name }} add /dev/net/tun /dev/net/tun
delegate_to: "{{ physical_host }}"
when: >
inventory_hostname in groups['nova_compute'] and
(is_metal == false or is_metal == "False")
tags:
- nova-kvm
- nova-kvm-container-devices
- name: Add kvm device to the compute
shell: |
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'] and
(is_metal == false or is_metal == "False") and
nova_virt_type == 'kvm'
tags:
- nova-kvm
- nova-kvm-container-devices
- name: Create log dir
file:
path: "{{ item.path }}"
state: directory
with_items:
- { path: "/openstack/log/{{ inventory_hostname }}-nova" }
when: is_metal == true or is_metal == "True"
tags:
- nova-logs
- nova-log-dirs
- name: Create log aggregation links
file:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
state: "{{ item.state }}"
force: "yes"
with_items:
- { src: "/openstack/log/{{ inventory_hostname }}-nova", dest: "/var/log/nova", state: "link" }
when: is_metal == true or is_metal == "True"
tags:
- nova-logs
roles:
- { role: "os_nova", tags: [ "os-nova" ] }
- { role: "openstack_openrc", tags: [ "openstack-openrc" ] }
- role: "rsyslog_client"
rsyslog_client_log_dir: "/var/log/nova"
rsyslog_client_config_name: "99-nova-rsyslog-client.conf"
tags:
- "nova-rsyslog-client"
- "rsyslog-client"
vars:
nova_galera_address: "{{ internal_lb_vip_address }}"
ansible_hostname: "{{ container_name }}"
ansible_ssh_host: "{{ container_address }}"
is_metal: "{{ properties.is_metal|default(false) }}"