Make scenario construction more generic

The bootstrap host scenario was very quirky because we had to a maintain
a list of "special" scenario keywords that are not actual services,
otherwise the role would fail when deploying non-existent AIO conf.d
files.

Instead, we can simply pass a full expanded scenario list (including
the "special" keywords and all service keywords and only deploy the
conf.d files that exist in the repo.

This will make scenarios much more straight forward to use and less
flaky when adding scenario variants that may not have a conf.d file
to deploy.

Change-Id: I621660f39c4e51db4b8063feee782aae5cd16840
This commit is contained in:
Logan V 2019-05-12 14:52:43 -05:00
parent c14fc6d0ee
commit 3cd040ab84
5 changed files with 40 additions and 42 deletions

View File

@ -1,9 +1,9 @@
---
cidr_networks:
{% if 'trove' in bootstrap_host_services %}
{% if 'trove' in bootstrap_host_scenarios_expanded %}
dbaas: 172.29.232.0/22
{% endif %}
{% if 'octavia' in bootstrap_host_services %}
{% if 'octavia' in bootstrap_host_scenarios_expanded %}
lbaas: 172.29.252.0/22
{% endif %}
container: 172.29.236.0/22
@ -11,11 +11,11 @@ cidr_networks:
storage: 172.29.244.0/22
used_ips:
{% if 'trove' in bootstrap_host_services %}
{% if 'trove' in bootstrap_host_scenarios_expanded %}
- "172.29.232.1,172.29.232.50"
- "172.29.232.100"
{% endif %}
{% if 'octavia' in bootstrap_host_services %}
{% if 'octavia' in bootstrap_host_scenarios_expanded %}
- "172.29.252.1,172.29.252.50"
- "172.29.252.100"
- "172.29.253.1,172.29.253.200"
@ -66,7 +66,7 @@ global_overrides:
net_name: "vxlan"
group_binds:
- neutron_linuxbridge_agent
{% if 'trove' in bootstrap_host_services %}
{% if 'trove' in bootstrap_host_scenarios_expanded %}
- network:
container_bridge: "br-dbaas"
container_type: "veth"
@ -79,7 +79,7 @@ global_overrides:
- neutron_linuxbridge_agent
- rabbitmq
{% endif %}
{% if 'octavia' in bootstrap_host_services %}
{% if 'octavia' in bootstrap_host_scenarios_expanded %}
- network:
container_bridge: "br-lbaas"
container_type: "veth"

View File

@ -87,7 +87,7 @@ bootstrap_host_loopback_zfs: yes
bootstrap_host_loopback_zfs_size: 1024
#
# Boolean option to deploy the OSD loopback disks and cluster UUID for Ceph
bootstrap_host_ceph: "{{ 'ceph' in bootstrap_host_services }}"
bootstrap_host_ceph: "{{ 'ceph' in bootstrap_host_scenarios_expanded }}"
# Size of the Ceph OSD loopbacks
bootstrap_host_loopback_ceph_size: 1024
# Ceph OSDs to create on the AIO host

View File

@ -21,13 +21,23 @@
tags:
- create-directories
- name: Find user conf.d configurations to deploy
stat:
path: "{{ bootstrap_host_aio_config_path }}/conf.d/{{ item }}.yml.aio"
register: conf_d_stat
with_items: "{{ bootstrap_host_scenarios_expanded }}"
- name: Deploy user conf.d configuration
config_template:
src: "{{ bootstrap_host_aio_config_path }}/conf.d/{{ item }}.yml.aio"
dest: "/etc/openstack_deploy/conf.d/{{ item }}.yml"
config_overrides: "{{ item.override | default({}) }}"
src: "{{ bootstrap_host_aio_config_path }}/conf.d/{{ item.item }}.yml.aio"
dest: "/etc/openstack_deploy/conf.d/{{ item.item }}.yml"
config_overrides: "{{ item.item.override | default({}) }}"
config_type: "yaml"
with_items: "{{ bootstrap_host_services }}"
with_items: "{{ conf_d_stat.results | default([]) }}"
loop_control:
label: "{{ item.item }}"
when:
- item.stat.exists | bool
tags:
- deploy-confd
@ -156,26 +166,26 @@
with_items:
- src: user_variables_ceph.yml.j2
dest: user_variables_ceph.yml
condition: "{{ 'ceph' in bootstrap_host_services }}"
condition: "{{ 'ceph' in bootstrap_host_scenarios_expanded }}"
- src: user_variables_congress.yml.j2
dest: user_variables_congress.yml
condition: "{{ 'congress' in bootstrap_host_services }}"
condition: "{{ 'congress' in bootstrap_host_scenarios_expanded }}"
- src: user_variables_translations.yml.j2
dest: user_variables_translations.yml
condition: "{{ bootstrap_host_scenario is search('translations') }}"
- src: user_variables_barbican.yml.j2
dest: user_variables_barbican.yml
condition: "{{ 'barbican' in bootstrap_host_services }}"
condition: "{{ 'barbican' in bootstrap_host_scenarios_expanded }}"
- src: user_variables_manila.yml.j2
dest: user_variables_manila.yml
condition: "{{ 'manila' in bootstrap_host_services }}"
condition: "{{ 'manila' in bootstrap_host_scenarios_expanded }}"
- name: Copy modified cinder-volume env.d file for ceph scenario
copy:
src: "{{ playbook_dir }}/../etc/openstack_deploy/env.d/cinder-volume.yml.container.example"
dest: "/etc/openstack_deploy/env.d/cinder-volume.yml"
when:
- "'ceph' in bootstrap_host_services"
- "'ceph' in bootstrap_host_scenarios_expanded"
- name: Copy modified env.d file for metal scenario
copy:

View File

@ -232,7 +232,7 @@ octavia_v2: True
# Disable Octavia V1 API
octavia_v1: False
octavia_management_net_subnet_cidr: "{{ (bootstrap_host_container_tech == 'nspawn') | ternary('172.29.240.0/22', '172.29.252.0/22') }}"
{% elif 'octavia' in bootstrap_host_services %}
{% elif 'octavia' in bootstrap_host_scenarios_expanded %}
neutron_lbaas_octavia: True
octavia_management_net_subnet_cidr: "{{ (bootstrap_host_container_tech == 'nspawn') | ternary('172.29.240.0/22', '172.29.252.0/22') }}"
{% endif %}

View File

@ -15,45 +15,33 @@
bootstrap_host_scenarios: "{{ (bootstrap_host_scenario.split('_') | reject('equalto', '')) | list }}"
_non_service_scenarios:
- aio
- distro
- lxc
- metal
- nspawn
- octaviav2
- proxy
- source
- telemetry
- translations
- varstest
bootstrap_host_services: |-
{% set service_list = ['keystone'] %}
{% set service_list_extra = bootstrap_host_scenarios | difference(_non_service_scenarios) %}
# Expand the scenario list to include specific services that are being deployed
# as part of the scenario
bootstrap_host_scenarios_expanded: |-
{# Keystone is included in every scenario #}
{% set scenario_list = bootstrap_host_scenarios + ['keystone'] %}
{% if 'metal' not in bootstrap_host_scenarios %}
{% set _ = service_list.append('haproxy') %}
{% set _ = scenario_list.append('haproxy') %}
{% endif %}
{% if ['aio', 'translations'] | intersect(bootstrap_host_scenarios) | length > 0 %}
{# Base services deployed with aio and translations scenarios #}
{% set _ = service_list.extend(['cinder', 'glance', 'neutron', 'nova', 'placement']) %}
{% set _ = scenario_list.extend(['cinder', 'glance', 'neutron', 'nova', 'placement']) %}
{% if 'metal' not in bootstrap_host_scenarios %}
{# Horizon is a base service in container jobs #}
{% set _ = service_list.append('horizon') %}
{% set _ = scenario_list.append('horizon') %}
{% endif %}
{% endif %}
{# Service additions based on scenario presence #}
{% if 'ironic' in bootstrap_host_scenarios %}
{% set _ = service_list.extend(['swift']) %}
{% set _ = scenario_list.extend(['swift']) %}
{% endif %}
{% if 'octaviav2' in bootstrap_host_scenarios %}
{% set _ = service_list.extend(['octavia']) %}
{% set _ = scenario_list.extend(['octavia']) %}
{% endif %}
{% if 'telemetry' in bootstrap_host_scenarios %}
{% set _ = service_list.extend(['aodh', 'ceilometer', 'gnocchi', 'panko']) %}
{% set _ = scenario_list.extend(['aodh', 'ceilometer', 'gnocchi', 'panko']) %}
{% endif %}
{% if 'translations' in bootstrap_host_scenarios %}
{% set _ = service_list.extend(['designate', 'heat', 'magnum', 'sahara', 'swift', 'trove']) %}
{% set _ = scenario_list.extend(['designate', 'heat', 'magnum', 'sahara', 'swift', 'trove']) %}
{% endif %}
{% set _ = service_list.extend(service_list_extra) %}
{{ (service_list | unique) | sort }}
{{ (scenario_list | unique) | sort }}