tripleo-heat-templates/puppet/services/docker-registry.j2.yaml
Steve Baker b8b0755f91 Run image prepare after registry install
For containerized undercloud install this completes the image
preperation. The flow for undercloud install is now:

1. Early in tripleo deploy there is a dry-run prepare which generates
the heat environment for all of the image parameters
2. Here after the registry is installed, populate it by running
prepare again

This file is now a jinja template so that the prepare command has
access to the roles data. This reduces the number of images processed
to services which *might* be containerized, but we can't filter by
services which *are* containerised because we're inside the heat stack
and don't have access to the full heat environment. The actual image
numbers are:
136 prepare with no filtering
97 prepare filtering only by roles_data_undercloud.yaml
64 prepare with undercloud env+roles_data_undercloud.yaml filtering

This might be a time hit for undercloud jobs, but hopefully not
a big hit for undercloud+overcloud jobs because many of those extra images
will be used in the overcloud.

Change-Id: I7449ee364ec9e976fbe9df95024ce3c42f6459b5
Blueprint: container-prepare-workflow
2018-06-01 09:51:15 +12:00

108 lines
3.7 KiB
YAML

heat_template_version: rocky
description: >
Configures docker-registry on a host.
parameters:
EndpointMap:
default: {}
description: Mapping of service endpoint -> protocol. Typically set
via parameter_defaults in the resource registry.
type: json
ServiceData:
default: {}
description: Dictionary packing service data
type: json
ServiceNetMap:
default: {}
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry. This
mapping overrides those in ServiceNetMapDefaults.
type: json
DefaultPasswords:
default: {}
type: json
RoleName:
default: ''
description: Role name on which the service is applied
type: string
RoleParameters:
default: {}
description: Parameters specific to the role
type: json
LocalContainerRegistry:
default: ''
description: The IP address used to bind the local container registry
type: string
ContainerImagePrepare:
default: {}
description: Used to run "openstack tripleo container image prepare".
This is run after the registry is installed to populate
the registry with images.
type: json
conditions:
local_container_registry_is_empty: {equals : [{get_param: LocalContainerRegistry}, '']}
outputs:
role_data:
description: Role data for the docker registry service
value:
service_name: docker_registry
config_settings:
tripleo.docker_registry.firewall_rules:
'155 docker-registry':
dport:
- 8787
- 13787
step_config: ''
host_prep_tasks: []
deploy_steps_tasks:
- name: Install, Configure and Run Docker Distribution
when: step|int == 1
vars:
container_registry_host:
if:
- local_container_registry_is_empty
- {get_param: [EndpointMap, DockerRegistryInternal, host]}
- {get_param: LocalContainerRegistry}
container_registry_port: {get_param: [EndpointMap, DockerRegistryInternal, port]}
block:
- include_role:
name: container-registry
tasks_from: docker-distribution
- name: Create temp file for prepare parameter
tempfile:
state: file
suffix: -prepare-param
register: prepare_param
- name: Create temp file for role data
tempfile:
state: file
suffix: -role-data
register: role_data
- name: Write ContainerImagePrepare parameter file
copy:
dest: "{{ '{{' }} prepare_param.path {{ '}}' }}"
content:
parameter_defaults:
ContainerImagePrepare: {get_param: ContainerImagePrepare}
- name: Write role data file
copy:
dest: "{{ '{{' }} role_data.path {{ '}}' }}"
content: {{ roles }}
- name: Run openstack tripleo container image prepare
command: openstack tripleo container image prepare --roles-file {{ '{{' }} role_data.path {{ '}}' }} --environment-file {{ '{{' }} prepare_param.path {{ '}}' }}
- name: Delete param file
file:
dest: "{{ '{{' }} prepare_param.path {{ '}}' }}"
state: absent
- name: Delete role file
file:
dest: "{{ '{{' }} role_data.path {{ '}}' }}"
state: absent
upgrade_tasks:
- name: Install docker packages on upgrade if missing
when: step|int == 3
yum: name=docker-distribution state=latest