tripleo-heat-templates/tripleo_heat_templates/tests/test_tht_ansible_syntax.yml

112 lines
3.6 KiB
YAML

---
# Copyright 2019 Red Hat, Inc.
# All Rights Reserved.
#
# 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: Render Ansible tasks for roles templates
hosts: localhost
vars:
# This variable is set to 9999, so we will not execute actually
# any task. Still, the Ansible interpreter will check for syntax
# issues which is the intention of this playbook.
step: 9999
# In the future this list should be extended to
# ANSIBLE_TASKS_SECTIONS defined in yaml-validate.py
# including also deployment tasks
tasks_list: >
update_tasks
post_update_tasks
external_update_tasks
upgrade_tasks
post_upgrade_tasks
external_upgrade_tasks
# In the future this list should be extended to support
# automatically any role definition in t-h-t/roles/*
# Currently we have a --all option check allservices
# in the resource registry
roles_list: >
Compute
tasks:
- name: set basic tht folder path
fail:
msg: >-
The variable `tht_root` set this option and try again. On
the CLI this can be defined with "-e tht_root=/path/to/tht"
when:
- tht_root is undefined
- name: Set temp dir var
set_fact:
tmp_folder: "{{ tht_root }}/../tht-rendered"
- name: Get Ansible Galaxy roles
command: >-
ansible-galaxy install
--roles-path {{ tht_root }}/tripleo_heat_templates/tests/
-fr
{{ tht_root }}/tripleo_heat_templates/tests/tht-role-requirements.yml
- name: Get ansible-pacemaker
git:
repo: https://github.com/redhat-openstack/ansible-pacemaker.git
dest: "{{ tht_root }}/tripleo_heat_templates/tests/ansible-pacemaker"
- name: Create temp folder
file:
state: directory
path: "{{ tmp_folder }}"
# This task will render all the jinja templates in t-h-t.
- name: Process templates
command: >
python {{ tht_root }}/tools/process-templates.py \
-r {{ tht_root }}/roles_data.yaml \
-o {{ tmp_folder }}
args:
chdir: "{{ tht_root }}"
# This task will call the render tool based on the tasks list
# using all the services defined by default in the resource registry
- name: Render the ansible tasks per role
command: >
python {{ tht_root }}/tools/render-ansible-tasks.py \
--output {{ tmp_folder }}/rendered-tasks/ \
--ansible-tasks {{ tasks_list}} \
--all
args:
chdir: "{{ tmp_folder }}"
# To check changes in the tool we check the script passing 1 task type and
# 1 role
- name: Render the ansible tasks for 1 role and 1 task type as an example
command: >
python {{ tht_root }}/tools/render-ansible-tasks.py \
--output {{ tmp_folder }}/rendered-tasks/ \
--ansible-tasks update_tasks \
--roles-list Compute
args:
chdir: "{{ tmp_folder }}"
- name: Find rendered Ansible tasks
find:
paths: "{{ tmp_folder }}/rendered-tasks/"
patterns: "*.yml"
recurse: false
register: find_result
- name: Import rendered Ansible tasks
include_tasks: "{{ item.path }}"
with_items: "{{ find_result.files }}"