Add overcloud container image prepare

Adds tripleo_overcloud_container_image_prepare role to handle the older
container prepare command for Queens.

Change-Id: Ieb6c1cf80b50963ff6a4e62647554f51b48d5f51
This commit is contained in:
Alex Schultz 2020-03-09 15:52:35 -06:00
parent 4209a94cd2
commit b8bb42f6de
11 changed files with 473 additions and 0 deletions

View File

@ -0,0 +1,6 @@
================================================
Role - tripleo_overcloud_container_image_prepare
================================================
.. ansibleautoplugin::
:role: roles/tripleo_overcloud_container_image_prepare

View File

@ -0,0 +1,69 @@
tripleo_overcloud_container_image_prepare
=========================================
A role to perform the overcloud container image prepare.
Requirements
------------
None.
Role Variables
--------------
* `tripleo_overcloud_container_image_prepare_debug`: (Boolean) Flag to print out the delete command. Default: False
* `tripleo_overcloud_container_image_prepare_environment_directory`: (String) Path to a directory containing the environment files specifying which services are containerized.
* `tripleo_overcloud_container_image_prepare_environment_files`: (List) List of environment files specifying which services are containerized. Default: []
* `tripleo_overcloud_container_image_prepare_excludes`: (List) List of patterns to match the imagename against to exclude from the output. Default: []
* `tripleo_overcloud_container_image_prepare_home_dir`: (String) Home directory to where the command is run from. Default: "{{ ansible_env.HOME }}"
* `tripleo_overcloud_container_image_prepare_includes`: (List) List of patterns to match the imagename against to include in the output. Default: []
* `tripleo_overcloud_container_image_prepare_log_combine`: (Boolean) Flag to enable captching stderr with stdout. Default: true
* `tripleo_overcloud_container_image_prepare_log_output`: (Boolean) Flag to enable logging to a file. Since the output of this command can be large, it is not recommended to disable this. Default: true
* `tripleo_overcloud_container_image_prepare_log`: (String) Path to a log file for the command output. Default: "{{ tripleo_overcloud_container_image_prepare_home_dir }}/overcloud_container_image_prepare.log"
* `tripleo_overcloud_container_image_prepare_modify_role`: (String) Name of ansible role to run between every image pull and push.
* `tripleo_overcloud_container_image_prepare_modify_vars`: (String) Ansible vairables file containing varisables to use when using modify role.
* `tripleo_overcloud_container_image_prepare_namespace`: (String) Override the default namespace substitution
* `tripleo_overcloud_container_image_prepare_output_env_file`: (String) Output heat environment file which specifies all image parameters.
* `tripleo_overcloud_container_image_prepare_output_images_file`: (String) Path to write the output image entries to.
* `tripleo_overcloud_container_image_prepare_poll`: (Integer) Number of seconds to wait between each checks to see if the command has completed. Default: 10
* `tripleo_overcloud_container_image_prepare_prefix`: (String) Override the default name prefix substitution
* `tripleo_overcloud_container_image_prepare_push_destination`: (String) Location of image registry to push images to
* `tripleo_overcloud_container_image_prepare_roles_file`: (String) Roles file path for the cloud.
* `tripleo_overcloud_container_image_prepare_set`: (List) Set the value of a vaiable in the template even if it has no dedicated argument. Default: []
* `tripleo_overcloud_container_image_prepare_suffix`: (String) Override the default name suffix substitution
* `tripleo_overcloud_container_image_prepare_tag_from_label`: (String) Use teh value of teh specify label to discover the tag
* `tripleo_overcloud_container_image_prepare_tag`: (String) Overide the default tag substitution
* `tripleo_overcloud_container_image_prepare_template_file`: (String) YAML template file for image config
* `tripleo_overcloud_container_image_prepare_timeout`: (Integer) Number in seconds to wait for the ansible execution of the command to finish. Default: 3600
Output Variables
----------------
* `tripleo_overcloud_container_image_prepare_output`: (String) The command standard output.
* `tripleo_overcloud_container_image_prepare_result`: Ansible shell execution results
Dependencies
------------
None.
Example Playbook
----------------
Example overcloud container image prepare.
```yaml
- hosts: undercloud
gather_facts: true
tasks:
- name: Overcloud container image prepare
import_role:
name: tripleo_overcloud_container_image_prepare
var:
tripleo_overcloud_container_image_prepare_debug: true
```
License
-------
Apache-2.0

View File

@ -0,0 +1,27 @@
---
# defaults file for tripleo_overcloud_container_image_prepare
openstack_bin: openstack
tripleo_overcloud_container_image_prepare_debug: false
tripleo_overcloud_container_image_prepare_environment_directory:
tripleo_overcloud_container_image_prepare_environment_files: []
tripleo_overcloud_container_image_prepare_excludes: []
tripleo_overcloud_container_image_prepare_home_dir: "{{ ansible_env.HOME }}"
tripleo_overcloud_container_image_prepare_includes: []
tripleo_overcloud_container_image_prepare_log: "{{ tripleo_overcloud_container_image_prepare_home_dir }}/overcloud_container_image_prepare.log"
tripleo_overcloud_container_image_prepare_log_combine: true
tripleo_overcloud_container_image_prepare_log_output: true
tripleo_overcloud_container_image_prepare_modify_role:
tripleo_overcloud_container_image_prepare_modify_vars:
tripleo_overcloud_container_image_prepare_namespace:
tripleo_overcloud_container_image_prepare_output_env_file:
tripleo_overcloud_container_image_prepare_output_images_file:
tripleo_overcloud_container_image_prepare_poll: 10
tripleo_overcloud_container_image_prepare_prefix:
tripleo_overcloud_container_image_prepare_push_destination:
tripleo_overcloud_container_image_prepare_roles_file:
tripleo_overcloud_container_image_prepare_set: []
tripleo_overcloud_container_image_prepare_suffix:
tripleo_overcloud_container_image_prepare_tag:
tripleo_overcloud_container_image_prepare_tag_from_label:
tripleo_overcloud_container_image_prepare_template_file:
tripleo_overcloud_container_image_prepare_timeout: 3600

View File

@ -0,0 +1,42 @@
---
# Copyright 2020 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.
galaxy_info:
author: OpenStack
description: TripleO Operator Role -- tripleo_overcloud_container_image_prepare
company: Red Hat
license: Apache-2.0
min_ansible_version: 2.8
#
# Provide a list of supported platforms, and for each platform a list of versions.
# If you don't wish to enumerate all versions for a particular platform, use 'all'.
# To view available platforms and versions (or releases), visit:
# https://galaxy.ansible.com/api/v1/platforms/
#
platforms:
- name: CentOS
versions:
- 7
- 8
galaxy_tags:
- tripleo
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.
dependencies: []

View File

@ -0,0 +1,206 @@
---
- name: Converge
hosts: all
collections:
- tripleo.operator
vars:
openstack_bin: echo
tripleo_overcloud_container_image_prepare_log_output: false
tripleo_overcloud_container_image_prepare_poll: 1
tripleo_overcloud_container_image_prepare_debug: true
tasks:
- name: "Include tripleo_overcloud_container_image_prepare"
include_role:
name: "tripleo_overcloud_container_image_prepare"
- name: Check role
assert:
that:
- tripleo_overcloud_container_image_prepare_output == "overcloud container image prepare"
- name: Validate "tripleo_overcloud_container_image_prepare_template_file"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_template_file: foo.yaml.j2
- name: Assert tripleo_overcloud_container_image_prepare_template_file
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --template-file foo.yaml.j2"
- name: Validate "tripleo_overcloud_container_image_prepare_push_destination"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_push_destination: "localhost:8787"
- name: Assert tripleo_overcloud_container_image_prepare_push_destination
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --push-destination localhost:8787"
- name: Validate "tripleo_overcloud_container_image_prepare_tag"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_tag: foo
- name: Assert tripleo_overcloud_container_image_prepare_tag
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --tag foo"
- name: Validate "tripleo_overcloud_container_image_prepare_tag_from_label"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_tag_from_label: "{version}-123"
- name: Assert tripleo_overcloud_container_image_prepare_tag_from_label
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --tag-from-label '{version}-123'"
- name: Validate "tripleo_overcloud_container_image_prepare_namespace"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_namespace: foo
- name: Assert tripleo_overcloud_container_image_prepare_namespace
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --namespace foo"
- name: Validate "tripleo_overcloud_container_image_prepare_prefix"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_prefix: foo
- name: Assert tripleo_overcloud_container_image_prepare_prefix
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --prefix foo"
- name: Validate "tripleo_overcloud_container_image_prepare_suffix"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_suffix: bar
- name: Assert tripleo_overcloud_container_image_prepare_suffix
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --suffix bar"
- name: Validate "tripleo_overcloud_container_image_prepare_excludes"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_excludes:
- nova-api
- nova-compute
- name: Assert tripleo_overcloud_container_image_prepare_excludes
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --exclude nova-api --exclude nova-compute"
- name: Validate "tripleo_overcloud_container_image_prepare_includes"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_includes:
- nova-api
- nova-compute
- name: Assert tripleo_overcloud_container_image_prepare_includes
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --include nova-api --include nova-compute"
- name: Validate "tripleo_overcloud_container_image_prepare_environment_files"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_environment_files:
- a.yaml
- b.yaml
- name: Assert tripleo_overcloud_container_image_prepare_environment_files
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --environment-file a.yaml --environment-file b.yaml"
- name: Validate "tripleo_overcloud_container_image_prepare_environment_directory"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_environment_directory: /tmp/a
- name: Assert tripleo_overcloud_container_image_prepare_environment_directory
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --environment-directory /tmp/a"
- name: Validate "tripleo_overcloud_container_image_prepare_output_env_file"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_output_env_file: env.yaml
- name: Assert tripleo_overcloud_container_image_prepare_output_env_file
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --output-env-file env.yaml"
- name: Validate "tripleo_overcloud_container_image_prepare_roles_file"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_roles_file: roles.yaml
- name: Assert tripleo_overcloud_container_image_preparea_roles_file
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --roles-file roles.yaml"
- name: Validate "tripleo_overcloud_container_image_prepare_modify_role"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_modify_role: yum-update
- name: Assert tripleo_overcloud_container_image_prepare_modify_role
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --modify-role yum-update"
- name: Validate "tripleo_overcloud_container_image_prepare_modify_vars"
include_role:
name: "tripleo_overcloud_container_image_prepare"
vars:
tripleo_overcloud_container_image_prepare_modify_vars: myvars.yaml
- name: Assert tripleo_overcloud_container_image_prepare_modify_vars
assert:
that:
- tripleo_overcloud_container_image_prepare_output ==
"overcloud container image prepare --modify-vars myvars.yaml"

View File

@ -0,0 +1,19 @@
---
driver:
name: delegated
options:
managed: false
ansible_connection_options:
ansible_connection: local
log: true
platforms:
- name: instance
provisioner:
name: ansible
scenario:
name: default
test_sequence:
- prepare
- syntax
- converge
- verify

View File

@ -0,0 +1,8 @@
---
- name: Prepare
hosts: all
tasks:
- name: Include molecule prep
include_role:
name: test_molecule_prep

View File

@ -0,0 +1,74 @@
---
# tasks file for tripleo_overcloud_container_image_prepare
- name: Set overcloud container image prepare facts
set_fact:
_prepare_cmd: >-
{{ openstack_bin }} overcloud container image prepare
{{ tripleo_overcloud_container_image_prepare_template_file | ternary('--template-file $PREPARE_TEMPLATE_FILE', '') }}
{{ tripleo_overcloud_container_image_prepare_push_destination | ternary('--push-destination $PREPARE_PUSH_DESTINATION', '') }}
{{ tripleo_overcloud_container_image_prepare_tag | ternary('--tag $PREPARE_TAG', '') }}
{{ tripleo_overcloud_container_image_prepare_tag_from_label | ternary('--tag-from-label $PREPARE_TAG_FROM_LABEL', '') }}
{{ tripleo_overcloud_container_image_prepare_namespace | ternary('--namespace $PREPARE_NAMESPACE', '') }}
{{ tripleo_overcloud_container_image_prepare_prefix | ternary('--prefix $PREPARE_PREFIX', '') }}
{{ tripleo_overcloud_container_image_prepare_suffix | ternary('--suffix $PREPARE_SUFFIX', '') }}
{{ tripleo_overcloud_container_image_prepare_set | tripleo.operator.shell_arg_list('--set') }}
{{ tripleo_overcloud_container_image_prepare_excludes | tripleo.operator.shell_arg_list('--exclude') }}
{{ tripleo_overcloud_container_image_prepare_includes | tripleo.operator.shell_arg_list('--include') }}
{{ tripleo_overcloud_container_image_prepare_output_images_file | ternary('--output-images-file $PREPARE_OUTPUT_IMAGES_FILE', '') }}
{{ tripleo_overcloud_container_image_prepare_environment_files | tripleo.operator.shell_arg_list('--environment-file') }}
{{ tripleo_overcloud_container_image_prepare_environment_directory | ternary('--environment-directory $PREPARE_ENVIRONMENT_DIR', '') }}
{{ tripleo_overcloud_container_image_prepare_output_env_file | ternary('--output-env-file $PREPARE_OUTPUT_ENV_FILE', '') }}
{{ tripleo_overcloud_container_image_prepare_roles_file | ternary('--roles-file $PREPARE_ROLES_FILE', '') }}
{{ tripleo_overcloud_container_image_prepare_modify_role | ternary('--modify-role $PREPARE_MODIFY_ROLE', '') }}
{{ tripleo_overcloud_container_image_prepare_modify_vars | ternary('--modify-vars $PREPARE_MODIFY_VARS', '') }}
{{ tripleo_overcloud_container_image_prepare_log_output | ternary((">" ~ tripleo_overcloud_container_image_prepare_log), '') }}
{{ tripleo_overcloud_container_image_prepare_log_combine | ternary("2>&1", '') }}
_prepare_env:
PREPARE_TEMPLATE_FILE: "{{ tripleo_overcloud_container_image_prepare_template_file | quote }}"
PREPARE_PUSH_DESTINATION: "{{ tripleo_overcloud_container_image_prepare_push_destination | quote }}"
PREPARE_TAG: "{{ tripleo_overcloud_container_image_prepare_tag | quote }}"
PREPARE_TAG_FROM_LABEL: "{{ tripleo_overcloud_container_image_prepare_tag_from_label | quote }}"
PREPARE_NAMESPACE: "{{ tripleo_overcloud_container_image_prepare_namespace | quote }}"
PREPARE_PREFIX: "{{ tripleo_overcloud_container_image_prepare_prefix | quote }}"
PREPARE_SUFFIX: "{{ tripleo_overcloud_container_image_prepare_suffix | quote }}"
PREPARE_OUTPUT_IMAGES_FILE: "{{ tripleo_overcloud_container_image_prepare_output_images_file | quote }}"
PREPARE_ENVIRONMENT_DIR: "{{ tripleo_overcloud_container_image_prepare_environment_directory | quote }}"
PREPARE_OUTPUT_ENV_FILE: "{{ tripleo_overcloud_container_image_prepare_output_env_file | quote }}"
PREPARE_ROLES_FILE: "{{ tripleo_overcloud_container_image_prepare_roles_file | quote }}"
PREPARE_MODIFY_ROLE: "{{ tripleo_overcloud_container_image_prepare_modify_role | quote }}"
PREPARE_MODIFY_VARS: "{{ tripleo_overcloud_container_image_prepare_modify_vars | quote }}"
- name: Preserve existing log file if exists
timestamp_file:
path: "{{ tripleo_overcloud_container_image_prepare_log }}"
when: tripleo_overcloud_container_image_prepare_log_output|bool
- name: Show debug information
when: tripleo_overcloud_container_image_prepare_debug|bool
block:
- name: Show the command
debug:
var: _prepare_cmd
- name: Show the environment
debug:
var: _prepare_env
- name: Run overcloud container image prepare
shell: "{{ _prepare_cmd }}" # noqa 305
environment: "{{ _prepare_env }}"
args:
executable: /bin/bash
chdir: "{{ tripleo_overcloud_container_image_prepare_home_dir }}"
warn: false
register: tripleo_overcloud_container_image_prepare_result
async: "{{ tripleo_overcloud_container_image_prepare_timeout }}"
poll: "{{ tripleo_overcloud_container_image_prepare_poll }}"
changed_when: false
when: not ansible_check_mode|bool
- name: Set output fact
set_fact:
tripleo_overcloud_container_image_prepare_output: "{{ tripleo_overcloud_container_image_prepare_result.stdout }}"

View File

@ -0,0 +1 @@
localhost

View File

@ -0,0 +1,5 @@
---
- hosts: localhost
remote_user: root
roles:
- tripleo_overcloud_container_image_prepare

View File

@ -14,6 +14,7 @@
- tripleo-operator-molecule-tripleo_deploy
- tripleo-operator-molecule-tripleo_overcloud_admin_authorize
- tripleo-operator-molecule-tripleo_overcloud_container_image_build
- tripleo-operator-molecule-tripleo_overcloud_container_image_prepare
- tripleo-operator-molecule-tripleo_overcloud_deploy
- tripleo-operator-molecule-tripleo_overcloud_export
- tripleo-operator-molecule-tripleo_overcloud_failures
@ -51,6 +52,7 @@
- tripleo-operator-molecule-tripleo_deploy
- tripleo-operator-molecule-tripleo_overcloud_admin_authorize
- tripleo-operator-molecule-tripleo_overcloud_container_image_build
- tripleo-operator-molecule-tripleo_overcloud_container_image_prepare
- tripleo-operator-molecule-tripleo_overcloud_deploy
- tripleo-operator-molecule-tripleo_overcloud_export
- tripleo-operator-molecule-tripleo_overcloud_failures
@ -223,6 +225,20 @@
vars:
tox_extra_args: tripleo_overcloud_container_image_build
- job:
files:
- ^roles/tripleo_overcloud_container_image_prepare/.*
- ^bindep.txt
- ^galaxy.yml
- ^requirements.txt
- ^setup.cfg
- ^test-requirements.txt
- ^tox.ini
name: tripleo-operator-molecule-tripleo_overcloud_container_image_prepare
parent: tripleo-operator-molecule-base
vars:
tox_extra_args: tripleo_overcloud_container_image_prepare
- job:
files:
- ^roles/tripleo_overcloud_deploy/.*