X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=docker%2Fpost.j2.yaml;h=76232d14e8c99040376089a8ca88e1b1a7964b7b;hb=d4e5dc1455071a44a7371d016a54a9832b0fb2d1;hp=c125423d12f94ae26d87e30ac4c5643e1fe7ba5e;hpb=4fd12f1d18eaee79a299102df370281acf4dfac3;p=apex-tripleo-heat-templates.git diff --git a/docker/post.j2.yaml b/docker/post.j2.yaml index c125423d..76232d14 100644 --- a/docker/post.j2.yaml +++ b/docker/post.j2.yaml @@ -29,6 +29,68 @@ parameters: resources: + # These utility tasks use docker-puppet.py to execute tasks via puppet + # We only execute these on the first node in the primary role + {{primary_role_name}}DockerPuppetTasks: + type: OS::Heat::Value + properties: + type: json + value: + yaql: + expression: + dict($.data.docker_puppet_tasks.where($1 != null).selectMany($.items()).groupBy($[0], $[1])) + data: + docker_puppet_tasks: {get_param: [role_data, {{primary_role_name}}, docker_puppet_tasks]} + +# BEGIN primary_role_name docker-puppet-tasks (run only on a single node) +{% for step in range(1, 6) %} + + {{primary_role_name}}DockerPuppetJsonConfig{{step}}: + type: OS::Heat::StructuredConfig + properties: + group: json-file + config: + /var/lib/docker-puppet/docker-puppet-tasks{{step}}.json: + {get_attr: [{{primary_role_name}}DockerPuppetTasks, value, 'step_{{step}}']} + + {{primary_role_name}}DockerPuppetJsonDeployment{{step}}: + type: OS::Heat::SoftwareDeployment + properties: + server: {get_param: [servers, {{primary_role_name}}, '0']} + config: {get_resource: {{primary_role_name}}DockerPuppetJsonConfig{{step}}} + + {{primary_role_name}}DockerPuppetTasksConfig{{step}}: + type: OS::Heat::SoftwareConfig + properties: + group: script + config: {get_file: docker-puppet.py} + inputs: + - name: CONFIG + - name: NET_HOST + - name: NO_ARCHIVE + - name: STEP + + {{primary_role_name}}DockerPuppetTasksDeployment{{step}}: + type: OS::Heat::SoftwareDeployment + depends_on: + {% for dep in roles %} + - {{dep.name}}Deployment_Step{{step}} + - {{dep.name}}ContainersDeployment_Step{{step}} + {% endfor %} + - {{primary_role_name}}DockerPuppetJsonDeployment{{step}} + properties: + name: {{primary_role_name}}DockerPuppetJsonDeployment{{step}} + server: {get_param: [servers, {{primary_role_name}}, '0']} + config: {get_resource: {{primary_role_name}}DockerPuppetTasksConfig{{step}}} + input_values: + CONFIG: /var/lib/docker-puppet/docker-puppet-tasks{{step}}.json + NET_HOST: 'true' + NO_ARCHIVE: 'true' + STEP: {{step}} + +{% endfor %} +# END primary_role_name docker-puppet-tasks + {% for role in roles %} # Post deployment steps for all roles # A single config is re-applied with an incrementing step number @@ -68,16 +130,7 @@ resources: group: json-file config: /var/lib/docker-puppet/docker-puppet.json: - yaql: - # select only services that have a non-null config_image with - # a step_config as well - expression: - $.data.config_volume.zip($.data.puppet_tags, $.data.step_config, $.data.config_image).where($[3] != null and $[1] != null) - data: - config_volume: {get_param: [role_data, {{role.name}}, config_volume]} - step_config: {get_param: [role_data, {{role.name}}, step_config]} - puppet_tags: {get_param: [role_data, {{role.name}}, puppet_tags]} - config_image: {get_param: [role_data, {{role.name}}, config_image]} + {get_param: [role_data, {{role.name}}, puppet_config]} {{role.name}}GenPuppetDeployment: type: OS::Heat::SoftwareDeploymentGroup @@ -127,6 +180,24 @@ resources: docker_config: {get_param: [role_data, {{role.name}}, docker_config]} docker_image: {get_param: [role_data, {{role.name}}, docker_image]} + # Here we are dumping all the docker container startup configuration data + # so that we can have access to how they are started outside of heat + # and docker-cmd. This lets us create command line tools to start and + # test these containers. + {{role.name}}DockerConfigJsonStartupData: + type: OS::Heat::StructuredConfig + properties: + group: json-file + config: + /var/lib/docker-container-startup-configs.json: + {get_attr: [{{role.name}}DockerConfig, value]} + + {{role.name}}DockerConfigJsonStartupDataDeployment: + type: OS::Heat::SoftwareDeploymentGroup + properties: + config: {get_resource: {{role.name}}DockerConfigJsonStartupData} + servers: {get_param: [servers, {{role.name}}]} + {{role.name}}KollaJsonConfig: type: OS::Heat::StructuredConfig properties: @@ -165,10 +236,11 @@ resources: depends_on: [{{role.name}}PreConfig, {{role.name}}ArtifactsDeploy] {% else %} depends_on: - {% for dep in roles %} + {% for dep in roles %} - {{dep.name}}Deployment_Step{{step -1}} - {{dep.name}}ContainersDeployment_Step{{step -1}} - {% endfor %} + {% endfor %} + - {{primary_role_name}}DockerPuppetTasksDeployment{{step -1}} {% endif %} properties: name: {{role.name}}Deployment_Step{{step}} @@ -201,11 +273,12 @@ resources: - {{role.name}}GenerateConfigDeployment {% else %} depends_on: - {% for dep in roles %} + {% for dep in roles %} - {{dep.name}}ContainersDeployment_Step{{step -1}} - {{dep.name}}Deployment_Step{{step}} # baremetal steps of the same level run first - {{dep.name}}Deployment_Step{{step -1}} - {% endfor %} + {% endfor %} + - {{primary_role_name}}DockerPuppetTasksDeployment{{step -1}} {% endif %} properties: name: {{role.name}}ContainersDeployment_Step{{step}} @@ -220,6 +293,7 @@ resources: depends_on: {% for dep in roles %} - {{dep.name}}Deployment_Step5 + - {{primary_role_name}}DockerPuppetTasksDeployment5 {% endfor %} properties: servers: {get_param: servers}