Files
kayobe/ansible/roles/kolla-ansible/tests/test-extras.yml
Mark Goddard 41740f9752 Make kolla ansible user and group configurable
In some cases it is useful to use a user other than the default 'kolla'
to perform kolla ansible remote execution. Kolla is adding support for
this in the Rocky release, we should use it.

It is now possible to configure a different user via the
kolla_ansible_user and kolla_ansible_group variables.

Depends-On: https://review.openstack.org/581330

Change-Id: I280fb8f70eacd31fff0ae5671ddd6608cd02ae6e
Story: 2002914
Task: 22892
2018-07-10 14:12:39 +01:00

336 lines
14 KiB
YAML

---
- hosts: localhost
connection: local
tasks:
- name: Create a temporary directory
tempfile:
state: directory
register: tempfile_result
- block:
- name: Test the kolla-ansible role with default values
include_role:
name: ../../kolla-ansible
static: False
vars:
kolla_ansible_source_path: "{{ temp_path }}/src"
kolla_ansible_ctl_install_type: "source"
kolla_ansible_source_url: "http://github.com/openstack/kolla-ansible"
kolla_ansible_source_version: "master"
kolla_ansible_venv: "{{ temp_path }}/venv"
kolla_ansible_vault_password: "fake-password"
kolla_config_path: "{{ temp_path }}/etc/kolla"
kolla_node_custom_config_path: "{{ temp_path }}/etc/kolla/config"
kolla_ansible_passwords_path: "{{ temp_path }}/passwords.yml"
# Config.
kolla_ansible_user: "fake-user"
kolla_ansible_group: "fake-group"
kolla_base_distro: "fake-distro"
kolla_install_type: "fake-install-type"
kolla_docker_namespace: "fake-namespace"
kolla_docker_registry: "fake-registry"
kolla_docker_registry_username: "fake-username"
kolla_docker_registry_password: "fake-password"
kolla_openstack_release: "fake-release"
kolla_internal_vip_address: "10.0.0.1"
kolla_internal_fqdn: "fake.internal.fqdn"
kolla_external_vip_address: "10.0.0.2"
kolla_external_fqdn: "fake.external.fqdn"
kolla_network_interface: "eth0"
kolla_external_vip_interface: "eth1"
kolla_api_interface: "eth2"
kolla_storage_interface: "eth3"
kolla_cluster_interface: "eth4"
kolla_dns_interface: "eth5"
kolla_neutron_external_interfaces:
- "eth6"
- "eth7"
kolla_neutron_bridge_names:
- "br0"
- "br1"
kolla_bifrost_network_interface: "eth8"
kolla_provision_interface: "eth9"
kolla_inspector_dnsmasq_interface: "eth10"
kolla_neutron_ml2_type_drivers:
- "fake-ml2-type-1"
- "fake-ml2-type-2"
kolla_neutron_ml2_tenant_network_types:
- "fake-ml2-tenant-type-1"
- "fake-ml2-tenant-type-2"
kolla_enable_tls_external: False
kolla_external_fqdn_cert: "fake-cert"
kolla_openstack_logging_debug: True
grafana_local_admin_user_name: "grafana-admin"
# Enable everything.
kolla_enable_aodh: True
kolla_enable_barbican: True
kolla_enable_ceilometer: True
kolla_enable_central_logging: True
kolla_enable_ceph: True
kolla_enable_ceph_rgw: True
kolla_enable_cinder: True
kolla_enable_cinder_backend_hnas_iscsi: True
kolla_enable_cinder_backend_hnas_nfs: True
kolla_enable_cinder_backend_iscsi: True
kolla_enable_cinder_backend_lvm: True
kolla_enable_cinder_backend_nfs: True
kolla_enable_cloudkitty: True
kolla_enable_congress: True
kolla_enable_designate: True
kolla_enable_elasticsearch: True
kolla_enable_etcd: True
kolla_enable_freezer: True
kolla_enable_gnocchi: True
kolla_enable_grafana: True
kolla_enable_haproxy: True
kolla_enable_heat: True
kolla_enable_horizon: True
kolla_enable_influxdb: True
kolla_enable_ironic: True
kolla_enable_kafka: True
kolla_enable_karbor: True
kolla_enable_kibana: True
kolla_enable_kuryr: True
kolla_enable_magnum: True
kolla_enable_manila: True
kolla_enable_manila_backend_generic: True
kolla_enable_manila_backend_hnas: True
kolla_enable_mariadb: True
kolla_enable_mistral: True
kolla_enable_monasca: True
kolla_enable_mongodb: True
kolla_enable_murano: True
kolla_enable_multipathd: True
kolla_enable_neutron_agent_ha: True
kolla_enable_neutron_bgp_dragent: True
kolla_enable_neutron_dvr: True
kolla_enable_neutron_fwaas: True
kolla_enable_neutron_lbaas: True
kolla_enable_neutron_provider_networks: True
kolla_enable_neutron_qos: True
kolla_enable_neutron_vpnaas: True
kolla_enable_nova_serialconsole_proxy: True
kolla_enable_octavia: True
kolla_enable_osprofiler: True
kolla_enable_panko: True
kolla_enable_rally: True
kolla_enable_searchlight: True
kolla_enable_sahara: True
kolla_enable_senlin: True
kolla_enable_skydive: True
kolla_enable_solum: True
kolla_enable_swift: True
kolla_enable_tacker: True
kolla_enable_telegraf: True
kolla_enable_tempest: True
kolla_enable_trove: True
kolla_enable_watcher: True
kolla_enable_zookeeper: True
kolla_enable_zun: True
kolla_extra_globals:
extra-global-1: "extra-val-1"
extra-global-2: "extra-val-2"
kolla_ansible_custom_passwords:
custom-password-1: "custom-password-1"
custom-password-2: "custom-password-2"
kolla_nova_compute_ironic_host: "controller1"
- name: Verify kolla-ansible installation
command: "{{ temp_path }}/venv/bin/kolla-ansible -h"
changed_when: False
- name: Verify ansible installation
command: "{{ temp_path }}/venv/bin/ansible -h"
changed_when: False
- name: Validate variables are absent from globals.yml
debug:
var: globals_yml
vars:
# NOTE: Can't use set_fact for this, as it causes kolla-ansible
# Jinja expressions to be evaluated.
globals_yml: "{{ lookup('file', temp_path ~ '/etc/kolla/globals.yml') | from_yaml }}"
- name: Validate globals.yml contents
assert:
that:
- item.key in globals_yml
- globals_yml[item.key] == item.value
msg: >
Unexpected value for variable "{{ item.key }}" in globals.yml.
Expected "{{ item.value }}", actual
"{{ globals_yml.get(item.key, '<missing>') }}".
with_dict: "{{ expected_variables }}"
vars:
# NOTE: Can't use set_fact for this, as it causes kolla-ansible
# Jinja expressions to be evaluated.
globals_yml: "{{ lookup('file', temp_path ~ '/etc/kolla/globals.yml') | from_yaml }}"
expected_variables:
config_strategy: "COPY_ALWAYS"
kolla_user: "fake-user"
kolla_group: "fake-group"
kolla_base_distro: "fake-distro"
kolla_install_type: "fake-install-type"
openstack_release: "fake-release"
kolla_internal_vip_address: "10.0.0.1"
kolla_internal_fqdn: "fake.internal.fqdn"
kolla_external_vip_address: "10.0.0.2"
kolla_external_fqdn: "fake.external.fqdn"
node_custom_config: "{{ temp_path }}/etc/kolla/config"
docker_namespace: "fake-namespace"
docker_registry: "fake-registry"
docker_registry_username: "fake-username"
docker_registry_password: "fake-password"
network_interface: "eth0"
kolla_external_vip_interface: "eth1"
storage_interface: "eth3"
cluster_interface: "eth4"
dns_interface: "eth5"
neutron_external_interface: "eth6,eth7"
neutron_bridge_name: "br0,br1"
bifrost_network_interface: "eth8"
ironic_dnsmasq_interface: "eth10"
neutron_plugin_agent: "openvswitch"
kolla_enable_tls_external: False
kolla_external_fqdn_cert: "fake-cert"
openstack_logging_debug: True
grafana_admin_username: "grafana-admin"
# NOTE: The following options are not present in globals.yml.
# It's possible this is related to the use of hostvars and
# include_role, caused by something like
# https://github.com/ansible/ansible/issues/19305.
#enable_aodh: True
#enable_barbican: True
#enable_ceilometer: True
#enable_central_logging: True
#enable_ceph: True
#enable_ceph_rgw: True
#enable_cinder: True
#enable_cinder_backend_iscsi: True
#enable_cinder_backend_hnas_iscsi: True
#enable_cinder_backend_hnas_nfs: True
#enable_cinder_backend_lvm: True
#enable_cinder_backend_nfs: True
#enable_cloudkitty: True
#enable_congress: True
#enable_designate: True
#enable_elasticsearch: True
#enable_etcd: True
#enable_freezer: True
#enable_gnocchi: True
#enable_grafana: True
#enable_haproxy: True
#enable_heat: True
#enable_horizon: True
#enable_influxdb: True
#enable_ironic: True
#enable_kafka: True
#enable_karbor: True
#enable_kibana: True
#enable_kuryr: True
#enable_magnum: True
#enable_manila: True
#enable_manila_backend_generic: True
#enable_manila_backend_hnas: True
#enable_mariadb: True
#enable_mistral: True
#enable_mongodb: True
#enable_murano: True
#enable_multipathd: True
#enable_neutron_agent_ha: True
#enable_neutron_bgp_dragent: True
#enable_neutron_dvr: True
#enable_neutron_fwaas: True
#enable_neutron_lbaas: True
#enable_neutron_provider_networks: True
#enable_neutron_qos: True
#enable_neutron_vpnaas: True
#enable_nova_serialconsole_proxy: True
#enable_octavia: True
#enable_osprofiler: True
#enable_panko: True
#enable_rally: True
#enable_sahara: True
#enable_searchlight: True
#enable_skydive: True
#enable_solum: True
#enable_senlin: True
#enable_swift: True
#enable_tacker: True
#enable_telegraf: True
#enable_tempest: True
#enable_trove: True
#enable_watcher: True
#enable_zookeeper: True
#enable_zun: True
extra-global-1: "extra-val-1"
extra-global-2: "extra-val-2"
- name: Validate variables are absent from globals.yml
assert:
that: item not in globals_yml
msg: >
Unexpected variable "{{ item }}" found in globals.yml, value
"{{ globals_yml.get(item) }}".
with_items: "{{ unexpected_variables }}"
vars:
# NOTE: Can't use set_fact for this, as it causes kolla-ansible
# Jinja expressions to be evaluated.
globals_yml: "{{ lookup('file', temp_path ~ '/etc/kolla/globals.yml') | from_yaml }}"
unexpected_variables:
- enable_glance
- enable_ironic
- enable_neutron
- enable_nova
- name: Create a vault password file
copy:
content: "fake-password"
dest: "{{ temp_path ~ '/vault-pass' }}"
- name: Decrypt passwords.yml
command: ansible-vault decrypt --vault-password-file {{ temp_path ~ '/vault-pass' }} {{ temp_path ~ '/etc/kolla/passwords.yml' }}
changed_when: False
- name: Validate passwords.yml contents
assert:
that: item in passwords_yml
msg: >
Expected variable "{{ item }}" not present in passwords.yml.
with_items: "{{ expected_variables }}"
vars:
# NOTE: Can't use set_fact for this, as it causes kolla-ansible
# Jinja expressions to be evaluated.
passwords_yml: "{{ lookup('file', temp_path ~ '/etc/kolla/passwords.yml') | from_yaml }}"
expected_variables:
- database_password
- custom-password-1
- custom-password-2
- name: Validate passwords.yml custom passwords
assert:
that:
- item.key in passwords_yml
- passwords_yml[item.key] == item.value
msg: >
Expected custom password "{{ item.key }}" not present in passwords.yml.
with_dict: "{{ expected_variables }}"
vars:
# NOTE: Can't use set_fact for this, as it causes kolla-ansible
# Jinja expressions to be evaluated.
passwords_yml: "{{ lookup('file', temp_path ~ '/etc/kolla/passwords.yml') | from_yaml }}"
expected_variables:
custom-password-1: custom-password-1
custom-password-2: custom-password-2
always:
- name: Ensure the temporary directory is removed
file:
path: "{{ temp_path }}"
state: absent
rescue:
- name: Flag that a failure occurred
set_fact:
test_failures: "{{ test_failures | default(0) | int + 1 }}"
vars:
temp_path: "{{ tempfile_result.path }}"