implement Ansible Tempest role
DocImpact Implments: blueprint ansible-tempest Change-Id: Iadd86d9d91438f056c433b9a2016f32587c92878
This commit is contained in:
parent
72d13a3e2a
commit
2102631110
@ -210,6 +210,7 @@ enable_murano: "no"
|
|||||||
enable_neutron_lbaas: "no"
|
enable_neutron_lbaas: "no"
|
||||||
enable_neutron_qos: "no"
|
enable_neutron_qos: "no"
|
||||||
enable_swift: "no"
|
enable_swift: "no"
|
||||||
|
enable_tempest: "no"
|
||||||
|
|
||||||
ironic_keystone_user: "ironic"
|
ironic_keystone_user: "ironic"
|
||||||
neutron_keystone_user: "neutron"
|
neutron_keystone_user: "neutron"
|
||||||
|
@ -87,6 +87,10 @@ control
|
|||||||
[ceilometer:children]
|
[ceilometer:children]
|
||||||
control
|
control
|
||||||
|
|
||||||
|
# Tempest
|
||||||
|
[tempest:children]
|
||||||
|
control
|
||||||
|
|
||||||
# Additional control implemented here. These groups allow you to control which
|
# Additional control implemented here. These groups allow you to control which
|
||||||
# services run on which hosts at a per-service level.
|
# services run on which hosts at a per-service level.
|
||||||
#
|
#
|
||||||
|
@ -99,6 +99,10 @@ control
|
|||||||
[ceilometer:children]
|
[ceilometer:children]
|
||||||
control
|
control
|
||||||
|
|
||||||
|
# Tempest
|
||||||
|
[tempest:children]
|
||||||
|
control
|
||||||
|
|
||||||
# Additional control implemented here. These groups allow you to control which
|
# Additional control implemented here. These groups allow you to control which
|
||||||
# services run on which hosts at a per-service level.
|
# services run on which hosts at a per-service level.
|
||||||
#
|
#
|
||||||
|
23
ansible/roles/tempest/defaults/main.yml
Normal file
23
ansible/roles/tempest/defaults/main.yml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
project_name: "tempest"
|
||||||
|
|
||||||
|
|
||||||
|
########
|
||||||
|
# Docker
|
||||||
|
########
|
||||||
|
tempest_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-tempest"
|
||||||
|
tempest_tag: "{{ openstack_release }}"
|
||||||
|
tempest_image_full: "{{ tempest_image }}:{{ tempest_tag }}"
|
||||||
|
|
||||||
|
|
||||||
|
###########################
|
||||||
|
# Tempest Required Resource
|
||||||
|
###########################
|
||||||
|
image_url: "http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img"
|
||||||
|
|
||||||
|
tempest_image_id:
|
||||||
|
tempest_image_alt_id: "{{ tempest_image_id }}"
|
||||||
|
tempest_flavor_ref_id:
|
||||||
|
tempest_flavor_ref_alt_id: "{{ tempest_flavor_ref_id }}"
|
||||||
|
tempest_public_network_id:
|
||||||
|
tempest_floating_network_name:
|
3
ansible/roles/tempest/meta/main.yml
Normal file
3
ansible/roles/tempest/meta/main.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
dependencies:
|
||||||
|
- { role: common }
|
26
ansible/roles/tempest/tasks/config.yml
Normal file
26
ansible/roles/tempest/tasks/config.yml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
- name: Ensuring config directories exist
|
||||||
|
file:
|
||||||
|
path: "{{ node_config_directory }}/{{ item }}"
|
||||||
|
state: "directory"
|
||||||
|
recurse: yes
|
||||||
|
with_items:
|
||||||
|
- "tempest"
|
||||||
|
|
||||||
|
- name: Copying over config.json files for services
|
||||||
|
template:
|
||||||
|
src: "{{ item }}.json.j2"
|
||||||
|
dest: "{{ node_config_directory }}/{{ item }}/config.json"
|
||||||
|
with_items:
|
||||||
|
- "tempest"
|
||||||
|
|
||||||
|
- name: Copying over tempest.conf
|
||||||
|
merge_configs:
|
||||||
|
vars:
|
||||||
|
project_name: "tempest"
|
||||||
|
sources:
|
||||||
|
- "{{ role_path }}/templates/tempest.conf.j2"
|
||||||
|
- "{{ node_custom_config }}/tempest.conf"
|
||||||
|
dest: "{{ node_config_directory }}/{{ item }}/tempest.conf"
|
||||||
|
with_items:
|
||||||
|
- "tempest"
|
4
ansible/roles/tempest/tasks/deploy.yml
Normal file
4
ansible/roles/tempest/tasks/deploy.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
- include: config.yml
|
||||||
|
|
||||||
|
- include: start.yml
|
64
ansible/roles/tempest/tasks/do_reconfigure.yml
Normal file
64
ansible/roles/tempest/tasks/do_reconfigure.yml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
---
|
||||||
|
- name: Ensuring the containers up
|
||||||
|
kolla_docker:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
action: "get_container_state"
|
||||||
|
register: container_state
|
||||||
|
failed_when: container_state.Running == false
|
||||||
|
when: inventory_hostname in groups[item.group]
|
||||||
|
with_items:
|
||||||
|
- { name: tempest, group: tempest}
|
||||||
|
|
||||||
|
- include: config.yml
|
||||||
|
|
||||||
|
- name: Check the configs
|
||||||
|
command: docker exec {{ item.name }} /usr/local/bin/kolla_set_configs --check
|
||||||
|
changed_when: false
|
||||||
|
failed_when: false
|
||||||
|
register: check_results
|
||||||
|
when: inventory_hostname in groups[item.group]
|
||||||
|
with_items:
|
||||||
|
- { name: tempest, group: tempest}
|
||||||
|
|
||||||
|
# NOTE(jeffrey4l): when config_strategy == 'COPY_ALWAYS'
|
||||||
|
# and container env['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE',
|
||||||
|
# just remove the container and start again
|
||||||
|
- name: Containers config strategy
|
||||||
|
kolla_docker:
|
||||||
|
name: "{{ item.name }}"
|
||||||
|
action: "get_container_env"
|
||||||
|
register: container_envs
|
||||||
|
when: inventory_hostname in groups[item.group]
|
||||||
|
with_items:
|
||||||
|
- { name: tempest, group: tempest}
|
||||||
|
|
||||||
|
- name: Remove the containers
|
||||||
|
kolla_docker:
|
||||||
|
name: "{{ item[0]['name'] }}"
|
||||||
|
action: "remove_container"
|
||||||
|
register: remove_containers
|
||||||
|
when:
|
||||||
|
- config_strategy == "COPY_ONCE" or item[1]['KOLLA_CONFIG_STRATEGY'] == 'COPY_ONCE'
|
||||||
|
- item[2]['rc'] == 1
|
||||||
|
- inventory_hostname in groups[item[0]['group']]
|
||||||
|
with_together:
|
||||||
|
- [{ name: tempest, group: tempest}]
|
||||||
|
- container_envs.results
|
||||||
|
- check_results.results
|
||||||
|
|
||||||
|
- include: start.yml
|
||||||
|
when: remove_containers.changed
|
||||||
|
|
||||||
|
- name: Restart containers
|
||||||
|
kolla_docker:
|
||||||
|
name: "{{ item[0]['name'] }}"
|
||||||
|
action: "restart_container"
|
||||||
|
when:
|
||||||
|
- config_strategy == 'COPY_ALWAYS'
|
||||||
|
- item[1]['KOLLA_CONFIG_STRATEGY'] != 'COPY_ONCE'
|
||||||
|
- item[2]['rc'] == 1
|
||||||
|
- inventory_hostname in groups[item[0]['group']]
|
||||||
|
with_together:
|
||||||
|
- [{ name: tempest, group: tempest}]
|
||||||
|
- container_envs.results
|
||||||
|
- check_results.results
|
2
ansible/roles/tempest/tasks/main.yml
Normal file
2
ansible/roles/tempest/tasks/main.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
- include: "{{ action }}.yml"
|
3
ansible/roles/tempest/tasks/reconfigure.yml
Normal file
3
ansible/roles/tempest/tasks/reconfigure.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
- include: do_reconfigure.yml
|
||||||
|
serial: "30%"
|
11
ansible/roles/tempest/tasks/start.yml
Normal file
11
ansible/roles/tempest/tasks/start.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
- name: Starting tempest container
|
||||||
|
kolla_docker:
|
||||||
|
action: "start_container"
|
||||||
|
common_options: "{{ docker_common_options }}"
|
||||||
|
image: "{{ tempest_image_full }}"
|
||||||
|
name: "tempest"
|
||||||
|
volumes:
|
||||||
|
- "{{ node_config_directory }}/tempest/:{{ container_config_directory }}/:ro"
|
||||||
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
|
- "kolla_logs:/var/log/kolla/"
|
4
ansible/roles/tempest/tasks/upgrade.yml
Normal file
4
ansible/roles/tempest/tasks/upgrade.yml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
- include: config.yml
|
||||||
|
|
||||||
|
- include: start.yml
|
74
ansible/roles/tempest/templates/tempest.conf.j2
Normal file
74
ansible/roles/tempest/templates/tempest.conf.j2
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
debug = {{ openstack_logging_debug }}
|
||||||
|
log_file = tempest.log
|
||||||
|
use_stderr = False
|
||||||
|
log_dir = /var/log/kolla/tempest/
|
||||||
|
|
||||||
|
[auth]
|
||||||
|
admin_username = admin
|
||||||
|
admin_password = {{ keystone_admin_password }}
|
||||||
|
admin_project_name = admin
|
||||||
|
admin_domain_name = default
|
||||||
|
|
||||||
|
|
||||||
|
[dashboard]
|
||||||
|
dashboard_url = {{ internal_protocol }}://{{ kolla_internal_fqdn }}
|
||||||
|
login_url = {{ internal_protocol }}://{{ kolla_internal_fqdn }}/auth/login/
|
||||||
|
|
||||||
|
[service_available]
|
||||||
|
cinder = {{ enable_cinder }}
|
||||||
|
neutron = {{ enable_neutron }}
|
||||||
|
glance = {{ enable_glance }}
|
||||||
|
swift = {{ enable_swift }}
|
||||||
|
nova = {{ enable_nova }}
|
||||||
|
heat = {{ enable_heat }}
|
||||||
|
horizon = {{ enable_horizon }}
|
||||||
|
ceilometer = {{ enable_ceilometer }}
|
||||||
|
|
||||||
|
[compute]
|
||||||
|
max_microversion = latest
|
||||||
|
image_ref = {{ tempest_image_id }}
|
||||||
|
image_ref_alt = {{ tempest_image_alt_id }}
|
||||||
|
flavor_ref = {{ tempest_flavor_ref_id }}
|
||||||
|
flavor_ref_alt = {{ tempest_flavor_ref_alt_id }}
|
||||||
|
region = {{ openstack_region_name }}
|
||||||
|
|
||||||
|
[dashboard]
|
||||||
|
dashboard_url = {{ internal_protocol }}://{{ kolla_internal_fqdn }}/
|
||||||
|
login_url = {{ internal_protocol }}://{{ kolla_internal_fqdn }}/auth/login
|
||||||
|
|
||||||
|
[identity]
|
||||||
|
region = {{ openstack_region_name }}
|
||||||
|
auth_version = v3
|
||||||
|
uri = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }}/v2.0
|
||||||
|
uri_v3 = {{ internal_protocol }}://{{ kolla_internal_fqdn }}:{{ keystone_admin_port }}/v3
|
||||||
|
|
||||||
|
[image]
|
||||||
|
region = {{ openstack_region_name }}
|
||||||
|
http_image = {{ image_url }}
|
||||||
|
|
||||||
|
[network]
|
||||||
|
region = {{ openstack_region_name }}
|
||||||
|
public_router_id =
|
||||||
|
public_network_id = {{ tempest_public_network_id }}
|
||||||
|
floating_network_name = {{ tempest_floating_network_name }}
|
||||||
|
project_networks_reachable = false
|
||||||
|
|
||||||
|
[network-feature-enabled]
|
||||||
|
ipv6 = false
|
||||||
|
|
||||||
|
[object-storage]
|
||||||
|
region = {{ openstack_region_name }}
|
||||||
|
|
||||||
|
[orchestration]
|
||||||
|
region = {{ openstack_region_name }}
|
||||||
|
|
||||||
|
[volume]
|
||||||
|
region = {{ openstack_region_name }}
|
||||||
|
|
||||||
|
[volume-feature-enabled]
|
||||||
|
api_v1 = False
|
||||||
|
|
||||||
|
[validation]
|
||||||
|
image_ssh_user = cirros
|
||||||
|
image_ssh_password = cubswin:)
|
11
ansible/roles/tempest/templates/tempest.json.j2
Normal file
11
ansible/roles/tempest/templates/tempest.json.j2
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"command": "sleep infinity",
|
||||||
|
"config_files":[
|
||||||
|
{
|
||||||
|
"source": "{{ container_config_directory }}/tempest.conf",
|
||||||
|
"dest": "/etc/tempest/tempest.conf",
|
||||||
|
"owner": "root",
|
||||||
|
"perm": "0600"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -238,3 +238,10 @@
|
|||||||
- { role: ceilometer,
|
- { role: ceilometer,
|
||||||
tags: ceilometer,
|
tags: ceilometer,
|
||||||
when: enable_ceilometer | bool }
|
when: enable_ceilometer | bool }
|
||||||
|
|
||||||
|
- hosts:
|
||||||
|
- tempest
|
||||||
|
roles:
|
||||||
|
- { role: tempest,
|
||||||
|
tags: tempest,
|
||||||
|
when: enable_tempest | bool }
|
||||||
|
6
ansible/tempest.yml
Normal file
6
ansible/tempest.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
- hosts:
|
||||||
|
- tempest
|
||||||
|
roles:
|
||||||
|
- { role: tempest,
|
||||||
|
tags: tempest,
|
||||||
|
when: enable_tempest | bool }
|
@ -25,6 +25,11 @@ RUN ln -s tempest-source/* tempest \
|
|||||||
&& /var/lib/kolla/venv/bin/pip --no-cache-dir install --upgrade -c requirements/upper-constraints.txt /tempest \
|
&& /var/lib/kolla/venv/bin/pip --no-cache-dir install --upgrade -c requirements/upper-constraints.txt /tempest \
|
||||||
&& mkdir -p /etc/tempest /var/log/tempest /etc/tempest/tempest_lock
|
&& mkdir -p /etc/tempest /var/log/tempest /etc/tempest/tempest_lock
|
||||||
|
|
||||||
|
WORKDIR /tempest
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
COPY extend_start.sh /usr/local/bin/kolla_extend_start
|
||||||
|
RUN chmod 755 /usr/local/bin/kolla_extend_start
|
||||||
|
|
||||||
{{ include_footer }}
|
{{ include_footer }}
|
||||||
|
8
docker/tempest/extend_start.sh
Normal file
8
docker/tempest/extend_start.sh
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
if [[ ! -d "/var/log/kolla/tempest" ]]; then
|
||||||
|
mkdir -p /var/log/kolla/tempest
|
||||||
|
fi
|
||||||
|
if [[ $(stat -c %a /var/log/kolla/tempest) != "755" ]]; then
|
||||||
|
chmod 755 /var/log/kolla/tempest
|
||||||
|
fi
|
@ -124,6 +124,7 @@ neutron_external_interface: "eth1"
|
|||||||
#enable_neutron_lbaas: "no"
|
#enable_neutron_lbaas: "no"
|
||||||
#enable_neutron_qos: "no"
|
#enable_neutron_qos: "no"
|
||||||
#enable_swift: "no"
|
#enable_swift: "no"
|
||||||
|
#enable_tempest: "no"
|
||||||
|
|
||||||
# Control usage of ceph per service. This allows to configure external ceph
|
# Control usage of ceph per service. This allows to configure external ceph
|
||||||
# when ceph is not deployed by Kolla.
|
# when ceph is not deployed by Kolla.
|
||||||
@ -175,3 +176,16 @@ neutron_external_interface: "eth1"
|
|||||||
# selected then swift_devices_name should specify a pattern which would match to
|
# selected then swift_devices_name should specify a pattern which would match to
|
||||||
# filesystems' labels prepared for swift.
|
# filesystems' labels prepared for swift.
|
||||||
#swift_devices_name: "KOLLA_SWIFT_DATA"
|
#swift_devices_name: "KOLLA_SWIFT_DATA"
|
||||||
|
|
||||||
|
|
||||||
|
################################################
|
||||||
|
# Tempest - The OpenStack Integration Test Suite
|
||||||
|
################################################
|
||||||
|
# following value must be set when enable tempest
|
||||||
|
tempest_image_id:
|
||||||
|
tempest_flavor_ref_id:
|
||||||
|
tempest_public_network_id:
|
||||||
|
tempest_floating_network_name:
|
||||||
|
|
||||||
|
# tempest_image_alt_id: "{{ tempest_image_id }}"
|
||||||
|
# tempest_flavor_ref_alt_id: "{{ tempest_flavor_ref_id }}"
|
||||||
|
3
releasenotes/notes/ansible-tempest-44edbca4436f3c19.yaml
Normal file
3
releasenotes/notes/ansible-tempest-44edbca4436f3c19.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- Implement Ansible Tempest role
|
Loading…
Reference in New Issue
Block a user