ansible_image_validation/validate-vm-images.yaml (59 lines of code) (raw):
###
# This Playbook orchestrate creation, validation, report generation
# and upload of validation logs.
###
## This section takes the ansible host group 'just_created'
## and runs validations against them
---
- hosts: all
gather_facts: True
remote_user: "{{ lookup('env', 'ADMIN_USER_NAME') }}"
become: true
vars:
ansible_become_pass: "{{ lookup('env', 'ADMIN_PASSWORD') }}"
is_rhui_package_present: false
tasks:
- assert:
that:
- "offer_type is defined"
- "rhel_version is defined"
- "build_on_rhui4 is defined"
- "isCVM is defined"
- set_fact:
rhui3_regions: "{{ lookup('file', 'files/rhui3-regions').split() }}"
rhui4_regions: "{{ lookup('file', 'files/rhui4-regions').split() }}"
out_folder: /tmp/out
err_folder: /tmp/err
license_type: "{{ 'byos' if 'byos' in inventory_hostname else 'payg' }}"
repo_type: "{{'base' if 'base' in offer_type or 'beta' in offer_type else ('byol' if 'byol' in offer_type else 'eus')}}"
- name: Delete validation data from previous run
shell: |
rm -rf /tmp/out && rm -rf /tmp/err
mkdir -p {{ out_folder }}
mkdir -p {{ err_folder }}
ignore_errors: yes
- name: Run per VM validations
include_tasks: validation-playbooks/per-vm-validation.yaml
ignore_errors: yes
- name: Run per region validations for RHUI3
include_tasks: validation-playbooks/per-region-validation.yaml
loop: "{{ rhui3_regions }}"
when: item != "" and license_type != 'byos' and build_on_rhui4 == 'false' and is_rhui_package_present
ignore_errors: yes
- name: Run per region validations for RHUI4
include_tasks: validation-playbooks/per-region-validation.yaml
loop: "{{ rhui4_regions }}"
when: item != "" and license_type != 'byos' and build_on_rhui4 == 'true' and is_rhui_package_present
ignore_errors: yes
## ##########################################################################
## below python script generates a logs.json which contains a lot of
## information about the host. Currently we don't have the code to
## parse that and decide if it is success or failure. Once that part is done,
## uncomment the code below.
# Run the validate.py script
# - name: Copy validation python scripts to host
# copy: src=./validations/ dest=/tmp/validations/
# - name: Run validation script
# shell: python /tmp/validations/validate.py
## ##########################################################################
- name: Recursively find /tmp/out files
find:
paths: /tmp/out
recurse: yes
register: out_files_to_copy
- name: Recursively find /tmp/err files
find:
paths: /tmp/err
recurse: yes
register: err_files_to_copy
- name: Merge the two lists
set_fact:
files_list: "{{ out_files_to_copy.files + err_files_to_copy.files }}"
- name: Fetch all the log files
fetch:
src: "{{ item.path }}"
dest: ./validation_results
loop: "{{ files_list }}"