Use the in-built image prepare for undercloud install

This file will write out the heat environment file
containers-prepare-parameter.yaml which will be used to do any
required image preparation during undercloud install.

The role parameter undercloud_container_images_file has been left as
an option for overriding, but is no longer required.

This change also switches the overcloud prepare to consume this file
via the command "openstack tripleo container image prepare"

It is expected that overcloud deploy will use the exact same
containers-prepare-parameter.yaml and the logic will be in place to
skip any unnecessary prepare actions. For this reason, the parameter
undercloud_docker_image_tag has been removed, and docker_image_tag is
used directly.
Since this file (and the variables used to build it) will be common to
undercloud and overcloud, there has been some refactoring to move
variable defaults to extras-common.

Change-Id: I290806b9296773688dfd02bc41f8baea28cf3d6a
Blueprint: container-prepare-workflow
This commit is contained in:
Steve Baker 2018-06-01 14:05:50 +12:00 committed by Emilien Macchi
parent 79d9067fc8
commit b3794ff03a
14 changed files with 86 additions and 151 deletions

View File

@ -33,6 +33,13 @@ Role Variables
docker images used for TripleO deployment
- `docker_image_tag`: <'latest'> -- tag of docker images used for
TripleO deployment
- `docker_prep_prefix`: <'centos-binary-'> Prefix for container image names
- `docker_prep_suffix: <''> Suffix for container image names
- `docker_ceph_namespace: <'docker.io/ceph'> Namespace for the ceph container
image
- `docker_ceph_image: <'daemon'> Name of the ceph container image
- `docker_ceph_tag: <'v3.0.3-stable-3.0-luminous-centos-7-x86_64'> Tag for the
ceph container image
- `composable_scenario`: <''> -- path to the composable scenarios used at deployment time
- `upgrade_composable_scenario`: <''> -- path to the composable scenarios used at upgrade time
- `undercloud_rpm_dependencies`: <'python-tripleoclient'> -- Dependency packages for undercloud deployments.

View File

@ -8,6 +8,11 @@ local_docker_registry_host: "{{undercloud_network_gateway|default(undercloud_net
docker_registry_host: docker.io
docker_registry_namespace: "tripleo{{ release }}"
docker_image_tag: current-tripleo
docker_prep_prefix: centos-binary-
docker_prep_suffix: ""
docker_ceph_namespace: docker.io/ceph
docker_ceph_image: daemon
docker_ceph_tag: v3.0.3-stable-3.0-luminous-centos-7-x86_64
additional_insecure_registry: false
deployed_server: false
overcloud_templates_path: /usr/share/openstack-tripleo-heat-templates

View File

@ -0,0 +1,22 @@
# Conditional facts to be set which are common to undercloud and overcloud
- name: set docker_registry_namespace_used
set_fact:
docker_registry_namespace_used: "{{ docker_registry_namespace }}"
- name: set container_build_id from get_build_command
set_fact:
container_build_id: "{{ get_build_command }}"
when: get_build_command is defined
- name: set mixed upgrade container_build_id
set_fact:
container_build_id: "{{ overcloud_docker_image_tag }}"
docker_registry_namespace_used: "{{ overcloud_docker_registry_namespace }}"
when:
- container_build_id is not defined
- use_overcloud_mixed_upgrade|default(false)|bool
- name: set container_build_id from docker_image_tag
set_fact:
container_build_id: "{{ docker_image_tag }}"
when: container_build_id is not defined

View File

@ -7,28 +7,6 @@
-e {{ overcloud_templates_path }}/ci/environments/{{ composable_scenario }}
when: not composable_scenario|trim == ''
- name: set docker_registry_namespace_used
set_fact:
docker_registry_namespace_used: "{{ docker_registry_namespace }}"
- name: set container_build_id from get_build_command
set_fact:
container_build_id: "{{ get_build_command }}"
when: get_build_command is defined
- name: set mixed upgrade container_build_id
set_fact:
container_build_id: "{{ overcloud_docker_image_tag }}"
docker_registry_namespace_used: "{{ overcloud_docker_registry_namespace }}"
when:
- container_build_id is not defined
- use_overcloud_mixed_upgrade|default(false)|bool
- name: set container_build_id from docker_image_tag
set_fact:
container_build_id: "{{ docker_image_tag }}"
when: container_build_id is not defined
- name: Create overcloud prep-containers script
template:
src: "{{ overcloud_prep_containers_template }}"

View File

@ -31,6 +31,15 @@ PREPARE_ARGS=${PREPARE_ARGS:-"{{ prepare_service_env_args }}"}
## ::
BUILD_ID=${BUILD_ID:-"{{ container_build_id }}"}
{% if release not in ['ocata', 'pike', 'queens'] %}
openstack tripleo container image prepare \
--output-env-file {{ working_dir }}/containers-default-parameters.yaml \
${PREPARE_ARGS} \
-e {{ working_dir }}/containers-prepare-parameter.yaml
{% else %}
openstack overcloud container image prepare \
--output-images-file {{ working_dir }}/overcloud_containers.yaml \
--output-env-file {{ working_dir }}/containers-default-parameters.yaml \
@ -38,19 +47,19 @@ openstack overcloud container image prepare \
--namespace {{ docker_registry_host }}/{{ docker_registry_namespace_used }} \
--tag $BUILD_ID \
{% if docker_prep_prefix is defined %}
--prefix {{ docker_prep_prefix}} \
--prefix "{{ docker_prep_prefix }}" \
{% endif %}
{% if docker_prep_suffix is defined %}
--suffix {{ docker_prep_suffix }} \
--suffix "{{ docker_prep_suffix }}" \
{% endif %}
{% if docker_ceph_namespace is defined %}
--set ceph_namespace={{ docker_ceph_namespace }} \
--set "ceph_namespace={{ docker_ceph_namespace }}" \
{% endif %}
{% if docker_ceph_image is defined %}
--set ceph_image={{ docker_ceph_image }} \
--set "ceph_image={{ docker_ceph_image }}" \
{% endif %}
{% if docker_ceph_tag is defined %}
--set ceph_tag={{ docker_ceph_tag }} \
--set "ceph_tag={{ docker_ceph_tag }}" \
{% endif %}
{% if docker_openshift_namespace is defined %}
--set openshift_namespace={{ docker_openshift_namespace }} \
@ -84,22 +93,23 @@ openstack overcloud container image upload --debug --config-file {{ working_dir
${PREPARE_ARGS} \
--namespace {{ local_docker_registry_host }}:8787/{{ docker_registry_namespace }} \
{% if docker_prep_prefix is defined %}
--prefix={{ docker_prep_prefix}} \
--prefix "{{ docker_prep_prefix }}" \
{% endif %}
{% if docker_prep_suffix is defined %}
--suffix={{ docker_prep_suffix }} \
--suffix "{{ docker_prep_suffix }}" \
{% endif %}
{% if docker_ceph_namespace is defined %}
--set ceph_namespace={{ docker_ceph_namespace }} \
--set "ceph_namespace={{ docker_ceph_namespace }}" \
{% endif %}
{% if docker_ceph_image is defined %}
--set ceph_image={{ docker_ceph_image }} \
--set "ceph_image={{ docker_ceph_image }}" \
{% endif %}
{% if docker_ceph_tag is defined %}
--set ceph_tag={{ docker_ceph_tag }} \
--set "ceph_tag={{ docker_ceph_tag }}" \
{% endif %}
--tag $BUILD_ID
{% endif %}
{% endif %}
{% if update_containers|bool and not use_overcloud_mixed_upgrade|default(false)|bool %}
# See https://github.com/imain/container-check for script and documentation
@ -118,10 +128,10 @@ if [[ -n "$packages_for_update" ]]; then
--exclude kubernetes \
--namespace {{ local_docker_registry_host }}:8787/{{ docker_registry_namespace }} \
{% if docker_prep_prefix is defined %}
--prefix={{ docker_prep_prefix}} \
--prefix "{{ docker_prep_prefix }}" \
{% endif %}
{% if docker_prep_suffix is defined %}
--suffix={{ docker_prep_suffix }} \
--suffix "{{ docker_prep_suffix }}" \
{% endif %}
--tag $BUILD_ID

View File

@ -75,19 +75,14 @@ https://docs.openstack.org/tripleo-quickstart/latest/accessing-libvirt.html
undercloud via the tripleo client's `--local-domain` option. It is unset by default.
- `tripleo_ui_secure_access`: Defaults to false due to the self signed certificate and
usability issues. See the tripleo-quickstart documentation `accessing the undercloud` for details.
- `undercloud_docker_registry_host`: <`docker_registry_host`> -- registry host/port
- `local_docker_registry_host`: <`docker_registry_host`> -- registry host/port
for containerized undercloud services. Defaults to the value provided for overcloud.
You may want to diverge it, if building locally, or fetching from remote registries
not fitting the overcloud deployment needs.
- `undercloud_docker_registry_port`: <null> -- an optional port for
`undercloud_docker_registry_host`.
- `undercloud_docker_registry_namespace`: <`docker_registry_namespace`> -- namespace of
docker images used for undercloud deployment. Defaults to the value provided for overcloud.
- `undercloud_docker_image_tag`: <`docker_image_tag`> -- tag of docker images used for
undercloud deployment. Defaults to the value provided for overcloud. Defaults to the
value provided for overcloud.
- `undercloud_container_images_file`: <"{{ working_dir }}/undercloud-containers-default-parameters.yaml"> --
the environment file with default parameters for containers to use with undercloud install CLI.
- `undercloud_container_images_file`: <""> --
The environment file with default parameters for containers to use with
undercloud install CLI. This should only be used to override image prepare
generating this during the undercloud install.
- `undercloud_custom_env_files`: <null> --
A space-separate string for custom t-h-t env files for `undercloud.conf` used with heat installer.
- `undercloud_undercloud_output_dir`: <null> -- allows customize output directory for state, like

View File

@ -4,14 +4,7 @@ undercloud_config_file: undercloud.conf.j2
undercloud_install_cli_options: ""
undercloud_post_install_script: undercloud-install-post.sh.j2
undercloud_install_log: "{{ working_dir }}/undercloud_install.log"
undercloud_container_images_file: "{{ working_dir }}/undercloud-containers-default-parameters.yaml"
# default undercloud install method
# containerized_undercloud is an EXPERIMENTAL FEATURE
containerized_undercloud: false
undercloud_docker_registry_host: "{{ docker_registry_host }}"
undercloud_docker_registry_namespace: "{{ docker_registry_namespace }}"
undercloud_docker_image_tag: "{{ docker_image_tag }}"
undercloud_install_script: undercloud-install.sh.j2
# defines extra args for the undercloud deploy command

View File

@ -90,9 +90,11 @@
dest: "{{ working_dir }}/undercloud-parameter-defaults.yaml"
mode: 0600
- name: Create the undercloud prep containers script
template:
src: undercloud-prep-containers.sh.j2
dest: "{{ working_dir }}/undercloud-prep-containers.sh"
mode: 0755
when: containerized_undercloud|bool and update_containers|bool
- name: Create containers-prepare-parameter.yaml
block:
- name: Write containers-prepare-parameter.yaml
template:
src: containers-prepare-parameter.yaml.j2
dest: "{{ working_dir }}/containers-prepare-parameter.yaml"
when: containerized_undercloud|bool or containerized_overcloud|bool

View File

@ -7,11 +7,6 @@
tags:
- undercloud-scripts
- include: undercloud-prep-containers.yml
tags:
- undercloud-scripts
when: containerized_undercloud|bool and update_containers|bool
- include: install-undercloud.yml
tags:
- undercloud-install

View File

@ -1,6 +0,0 @@
---
- name: Prepare containers for the undercloud containerized deployment
shell: >
set -o pipefail &&
{{ working_dir }}/undercloud-prep-containers.sh 2>&1 {{ timestamper_cmd }} >
{{ working_dir }}/undercloud_prep_containers.log

View File

@ -0,0 +1,13 @@
parameter_defaults:
DockerInsecureRegistryAddress:
- {{ local_docker_registry_host }}:8787
ContainerImagePrepare:
- push_destination: "{{ local_docker_registry_host }}:8787"
set:
tag: "{{ container_build_id }}"
namespace: "{{ docker_registry_host }}/{{ docker_registry_namespace_used }}"
name_prefix: "{{ docker_prep_prefix }}"
name_suffix: "{{ docker_prep_suffix }}"
ceph_namespace: "{{ docker_ceph_namespace }}"
ceph_image: "{{ docker_ceph_image }}"
ceph_tag: "{{ docker_ceph_tag }}"

View File

@ -18,11 +18,7 @@ export {{ var }}
## * get build id
## ::
{% if get_build_command is defined %}
BUILD_ID={{ get_build_command }}
{% else %}
BUILD_ID={{ undercloud_docker_image_tag }}
{% endif %}
BUILD_ID={{ container_build_id }}
## * Set the local ip used for the undercloud install
## ::

View File

@ -1,77 +0,0 @@
#!/bin/bash
set -eux
### --start_docs
## Prepare the undercloud for deploying the containerized compute node
## ===================================================================
## .. note:: In progress documentation is available at https://github.com/dprince/undercloud_containers/blob/master/doit.sh
## ::
## * get build id
## ::
{% if get_build_command is defined %}
BUILD_ID={{ get_build_command }}
{% else %}
BUILD_ID={{ undercloud_docker_image_tag }}
{% endif %}
## * Generate {{ working_dir }}/undercloud-containers-default-parameters.yaml
## ::
{% if release in ['pike', 'queens'] -%}
{%- set env_files_path='services-docker' -%}
{%- else -%}
{%- set env_files_path='services' -%}
{%- endif %}
openstack overcloud container image prepare \
--output-env-file {{ working_dir }}/undercloud-containers-default-parameters.yaml \
--template-file /usr/share/openstack-tripleo-common/container-images/overcloud_containers.yaml.j2 \
{% if undercloud_enable_ui|bool %}
-e {{overcloud_templates_path}}/environments/{{env_files_path}}/tripleo-ui.yaml \
{% endif %}
{% if undercloud_enable_mistral|bool %}
-e {{overcloud_templates_path}}/environments/{{env_files_path}}/mistral.yaml \
{% endif %}
{% if undercloud_enable_tempest|bool %}
-e {{overcloud_templates_path}}/environments/{{env_files_path}}/tempest.yaml \
{% endif %}
{% if undercloud_enable_ironic|bool %}
-e {{overcloud_templates_path}}/environments/{{env_files_path}}/ironic.yaml \
{% endif %}
{% if undercloud_enable_ironic_inspector|bool %}
-e /usr/share/openstack-tripleo-heat-templates/environments/{{env_files_path}}/ironic-inspector.yaml \
{% endif %}
{% if undercloud_generate_service_certificate is defined %}
-e /usr/share/openstack-tripleo-heat-templates/environments/{{env_files_path}}/undercloud-haproxy.yaml \
-e /usr/share/openstack-tripleo-heat-templates/environments/{{env_files_path}}/undercloud-keepalived.yaml \
{% endif %}
{% if undercloud_enable_zaqar|bool %}
-e {{overcloud_templates_path}}/environments/{{env_files_path}}/zaqar.yaml \
{% endif %}
{% if undercloud_enable_telemetry|bool %}
-e {{overcloud_templates_path}}/environments/{{env_files_path}}/undercloud-gnocchi.yaml \
-e {{overcloud_templates_path}}/environments/{{env_files_path}}/undercloud-aodh.yaml \
-e {{overcloud_templates_path}}/environments/{{env_files_path}}/undercloud-panko.yaml \
-e {{overcloud_templates_path}}/environments/{{env_files_path}}/undercloud-ceilometer.yaml \
{% endif %}
-e {{overcloud_templates_path}}/environments/docker.yaml \
{% if undercloud_custom_env_files is defined %}
{% for f in undercloud_custom_env_files.split() %}
-e {{ f }} \
{% endfor %}
-e {{ working_dir }}/undercloud-parameter-defaults.yaml \
{% endif %}
-r {{undercloud_roles_data|default(default_undercloud_roles_data_path)}} \
--namespace {{ undercloud_docker_registry_host }}{% if undercloud_docker_registry_port is defined %}:{{ undercloud_docker_registry_port }}{% endif%}/{{ undercloud_docker_registry_namespace }} \
--tag $BUILD_ID
echo "============================="
echo "Containers default parameters:"
cat {{ working_dir }}/undercloud-containers-default-parameters.yaml
echo "============================="
### --stop_docs

View File

@ -257,8 +257,10 @@ docker_registry_mirror = {{undercloud_docker_registry_mirror}}
# additional env files for undercloud, used with containers
{% if undercloud_container_images_file is defined and update_containers|bool %}
{% if undercloud_container_images_file is defined and containerized_undercloud|bool %}
container_images_file = {{ undercloud_container_images_file }}
{% elif containerized_undercloud|bool %}
container_images_file = {{ working_dir }}/containers-prepare-parameter.yaml
{% else %}
#container_images_file = <None>
{% endif %}