157 lines
5.0 KiB
Django/Jinja
157 lines
5.0 KiB
Django/Jinja
{% set deploy_steps_max = 6 %}
|
|
conditions:
|
|
{% for step in range(1, deploy_steps_max) %}
|
|
WorkflowTasks_Step{{step}}_Enabled:
|
|
or:
|
|
{%- for role in roles %}
|
|
- not:
|
|
equals:
|
|
- get_param: [role_data, {{role.name}}, service_workflow_tasks, step{{step}}]
|
|
- ''
|
|
- False
|
|
{%- endfor %}
|
|
{% endfor %}
|
|
|
|
resources:
|
|
# Post deployment steps for all roles
|
|
# A single config is re-applied with an incrementing step number
|
|
{% for role in roles %}
|
|
# {{role.name}} Role post-deploy steps
|
|
{{role.name}}ArtifactsConfig:
|
|
type: deploy-artifacts.yaml
|
|
|
|
{{role.name}}ArtifactsDeploy:
|
|
type: OS::Heat::StructuredDeployments
|
|
properties:
|
|
name: {{role.name}}ArtifactsDeploy
|
|
servers: {get_param: [servers, {{role.name}}]}
|
|
config: {get_resource: {{role.name}}ArtifactsConfig}
|
|
|
|
{{role.name}}PreConfig:
|
|
type: OS::TripleO::Tasks::{{role.name}}PreConfig
|
|
properties:
|
|
servers: {get_param: [servers, {{role.name}}]}
|
|
input_values:
|
|
update_identifier: {get_param: DeployIdentifier}
|
|
|
|
{{role.name}}Config:
|
|
type: OS::TripleO::{{role.name}}Config
|
|
properties:
|
|
StepConfig: {get_param: [role_data, {{role.name}}, step_config]}
|
|
|
|
# Step through a series of configuration steps
|
|
{% for step in range(1, deploy_steps_max) %}
|
|
{{role.name}}Deployment_Step{{step}}:
|
|
type: OS::Heat::StructuredDeploymentGroup
|
|
depends_on:
|
|
- WorkflowTasks_Step{{step}}_Execution
|
|
# TODO(gfidente): the following if/else condition
|
|
# replicates what is already defined for the
|
|
# WorkflowTasks_StepX resource and can be remove
|
|
# if https://bugs.launchpad.net/heat/+bug/1700569
|
|
# is fixed.
|
|
{%- if step == 1 %}
|
|
{%- for dep in roles %}
|
|
- {{dep.name}}PreConfig
|
|
- {{dep.name}}ArtifactsDeploy
|
|
{%- endfor %}
|
|
{%- else %}
|
|
{%- for dep in roles %}
|
|
- {{dep.name}}Deployment_Step{{step -1}}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
properties:
|
|
name: {{role.name}}Deployment_Step{{step}}
|
|
servers: {get_param: [servers, {{role.name}}]}
|
|
config: {get_resource: {{role.name}}Config}
|
|
input_values:
|
|
step: {{step}}
|
|
update_identifier: {get_param: DeployIdentifier}
|
|
{% endfor %}
|
|
|
|
# Note, this should be the last step to execute configuration changes.
|
|
# Ensure that all {{role.name}}ExtraConfigPost steps are executed
|
|
# after all the previous deployment steps.
|
|
{{role.name}}ExtraConfigPost:
|
|
depends_on:
|
|
{%- for dep in roles %}
|
|
- {{dep.name}}Deployment_Step5
|
|
{%- endfor %}
|
|
type: OS::TripleO::NodeExtraConfigPost
|
|
properties:
|
|
servers: {get_param: [servers, {{role.name}}]}
|
|
|
|
# The {{role.name}}PostConfig steps are in charge of
|
|
# quiescing all services, i.e. in the Controller case,
|
|
# we should run a full service reload.
|
|
{{role.name}}PostConfig:
|
|
type: OS::TripleO::Tasks::{{role.name}}PostConfig
|
|
depends_on:
|
|
{%- for dep in roles %}
|
|
- {{dep.name}}ExtraConfigPost
|
|
{%- endfor %}
|
|
properties:
|
|
servers: {get_param: servers}
|
|
input_values:
|
|
update_identifier: {get_param: DeployIdentifier}
|
|
|
|
|
|
{% endfor %}
|
|
|
|
# BEGIN service_workflow_tasks handling
|
|
{% for step in range(1, deploy_steps_max) %}
|
|
WorkflowTasks_Step{{step}}:
|
|
type: OS::Mistral::Workflow
|
|
condition: WorkflowTasks_Step{{step}}_Enabled
|
|
depends_on:
|
|
{%- if step == 1 %}
|
|
{%- for dep in roles %}
|
|
- {{dep.name}}PreConfig
|
|
- {{dep.name}}ArtifactsDeploy
|
|
{%- endfor %}
|
|
{%- else %}
|
|
{%- for dep in roles %}
|
|
- {{dep.name}}Deployment_Step{{step -1}}
|
|
{%- endfor %}
|
|
{%- endif %}
|
|
properties:
|
|
name: {list_join: [".", ["tripleo", {get_param: stack_name}, "workflowtasks", "step{{step}}"]]}
|
|
type: direct
|
|
tasks:
|
|
yaql:
|
|
expression: $.data.where($ != '').select($.get('step{{step}}')).where($ != null).flatten()
|
|
data:
|
|
{%- for role in roles %}
|
|
- get_param: [role_data, {{role.name}}, service_workflow_tasks]
|
|
{%- endfor %}
|
|
|
|
WorkflowTasks_Step{{step}}_Execution:
|
|
type: OS::Mistral::ExternalResource
|
|
condition: WorkflowTasks_Step{{step}}_Enabled
|
|
depends_on: WorkflowTasks_Step{{step}}
|
|
properties:
|
|
actions:
|
|
CREATE:
|
|
workflow: { get_resource: WorkflowTasks_Step{{step}} }
|
|
params:
|
|
env:
|
|
service_ips: { get_param: ctlplane_service_ips }
|
|
role_merged_configs:
|
|
{%- for r in roles %}
|
|
{{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
|
|
{%- endfor %}
|
|
evaluate_env: false
|
|
UPDATE:
|
|
workflow: { get_resource: WorkflowTasks_Step{{step}} }
|
|
params:
|
|
env:
|
|
service_ips: { get_param: ctlplane_service_ips }
|
|
role_merged_configs:
|
|
{%- for r in roles %}
|
|
{{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
|
|
{%- endfor %}
|
|
evaluate_env: false
|
|
always_update: true
|
|
{% endfor %}
|
|
# END service_workflow_tasks handling
|