install_yamls
An ansible role wrapper around install_yamls Makefile. It dynamically creates install_yamls_makes role, which can be reused within the CI Framework and other projects.
It contains a set of playbooks to deploy podified control plane.
Parameters
cifmw_installyamls_repo_url: (String) Url of the install_yamls repo. Defaults tohttps://github.com/openstack-k8s-operators/install_yamls.cifmw_install_yamls_version: (String) Version of the repo to be cloned. Defaults toHEAD.cifmw_install_yamls_envfile: (String) Environment file containing all the Makefile overrides. Defaults toinstall_yamls.cifmw_install_yamls_out_dir: (String)install_yamlsoutput directory to store generated output. Defaults to{{ cifmw_basedir | default(ansible_user_dir ~ '/ci-framework-data') }}/artifacts".cifmw_install_yamls_vars: (Dict) A dict containing Makefile overrides.cifmw_install_yamls_repo: (String)install_yamlsrepo path. Defaults to{{ cifmw_installyamls_repos | default(ansible_user_dir ~ '/src/github.com/openstack-k8s-operators/install_yamls')}}cifmw_install_yamls_whitelisted_vars: (List) Allowed variables incifmw_install_yamls_varsthat are not part ofinstall_yamlsMakefiles.cifmw_install_yamls_edpm_dir: (String) Output directory for EDPM related artifacts (OUTPUT_BASEDIR). Defaults to{{ cifmw_install_yamls_out_dir_basedir ~ '/artifacts/edpm' }}cifmw_install_yamls_checkout_openstack_ref: (String) Enable the checkout from openstack-operator references when cloning operator’s repository using install_yamls make targets. Defaults to"true"cifmw_install_yamls_opm_version: (String) Override the opm version in install_yamls devsetup/vars/default.yaml. Example:v1.30.0cifmw_install_yamls_sdk_version: (String) Override the operator-sdk version in install_yamls devsetup/vars/default.yaml. Example:v1.41.1cifmw_install_yamls_go_version: (String) Override the golang version in install_yamls devsetup/vars/default.yaml. Example:1.24.6cifmw_install_yamls_kustomize_version: (String) Override the kustomize version in install_yamls devsetup/vars/default.yaml. Example:v5.0.3
cifmw_install_yamls_vars patching
This role makes possible to define a base cifmw_install_yamls_vars and
patch its values afterwards by defining variables named like ^cifmw_install_yamls_vars_patch.*
that will be combined on top of the original cifmw_install_yamls_var after sorting them by name.
Use case
This module uses a custom plugin created to generate the role with tasks from Makefile. The created role directory contains multiple task files, similar to
---
- name: Debug make_crc_storage_env
when: make_crc_storage_env is defined
ansible.builtin.debug:
var: make_crc_storage_env
- name: Debug make_crc_storage_params
when: make_crc_storage_params is defined
ansible.builtin.debug:
var: make_crc_storage_params
- name: Run crc_storage
retries: "{{ make_crc_storage_retries | default(omit) }}"
delay: "{{ make_crc_storage_delay | default(omit) }}"
until: "{{ make_crc_storage_until | default(true) }}"
register: "make_crc_storage_status"
cifmw.general.ci_script:
output_dir: "{{ cifmw_basedir|default(ansible_user_dir ~ '/ci-framework-data') }}/artifacts"
chdir: "{{ cifmw_install_yamls_repo }}"
script: make crc_storage
dry_run: "{{ make_crc_storage_dryrun|default(false)|bool }}"
extra_args: "{{ dict((make_crc_storage_env|default({})), **(make_crc_storage_params|default({}))) }}"
The role can be imported and tasks can be executed like this
- name: Prepare storage in CRC
vars:
make_crc_storage_env: "{{ cifmw_edpm_prepare_common_env }}"
make_crc_storage_dryrun: "{{ cifmw_edpm_prepare_dry_run }}"
make_crc_storage_retries: 10
make_crc_storage_delay: 2
make_crc_storage_until: "make_crc_storage_status is not failed"
when: not cifmw_edpm_prepare_skip_crc_storage_creation | bool
register: crc_storage_status
ansible.builtin.include_role:
name: 'install_yamls_makes'
tasks_from: 'make_crc_storage'
Tasks are created in a form of: make_{{ original make target }}, corresponding to make target imported from a Makefile.
When task is being executed, it runs corresponding code from the Makefile.
Override install_yamls “make” parameters and environments
module: generate_make_tasks
For every makefile target we have a dedicated task file.
options:
install_yamls_path:
description:
- Absolute path to install_yamls repository.
required: True
type: str
output_directory:
description:
- Absolute path to the output directory. It must exists.
required: True
type: str
Follow below steps to find makefile target dedicated task files:
[laptop]$ cd ~/src/github.com/openstack-k8s-operators/ci-framework
[laptop]$ cd ci-framework-data/artifacts/roles/install_yamls_makes/tasks
Override install_yaml make parameter
User can build specific parameters using “make_TARGET_env” and “make_TARGET_dryrun”. So, here the target could be the parameter for which user wish to override make parameter.
Let’s look at below example:-
- name: Debug make_ansibleee_cleanup_env
when: make_ansibleee_cleanup_env is defined
ansible.builtin.debug:
var: make_ansibleee_cleanup_env
- name: Debug make_ansibleee_cleanup_params
when: make_ansibleee_cleanup_params is defined
ansible.builtin.debug:
var: make_ansibleee_cleanup_params
- name: Run ansibleee_cleanup
retries: "{{ make_ansibleee_cleanup_retries | default(omit) }}"
delay: "{{ make_ansibleee_cleanup_delay | default(omit) }}"
until: "{{ make_ansibleee_cleanup_until | default(true) }}"
register: "make_ansibleee_cleanup_status"
cifmw.general.ci_script:
output_dir: "{{ cifmw_basedir|default(ansible_user_dir ~ '/ci-framework-data') }}/artifacts"
chdir: "{{ cifmw_install_yamls_repo }}"
script: "make ansibleee_cleanup"
dry_run: "{{ make_ansibleee_cleanup_dryrun|default(false)|bool }}"
extra_args: "{{ dict((make_ansibleee_cleanup_env|default({})), **(make_ansibleee_cleanup_params|default({}))) }}"
This is a generated task file for the “make ansibleee_cleanup”. Here, a user is able to set ansible parameter that would then be translated into either task parameter (such as make_ansibleee_cleanup_until, make_ansibleee_cleanup_retries etc) or as a proper “make” parameter (via make_ansibleee_cleanup_env)