Move docker_puppet_tasks calculation into services.yaml
This makes the RolesData output more accurate, and we can rework things so docker-puppet only gets run when there is a non-empty file calculated (e.g there are tasks to run). Change-Id: I8cdab3c857977c80fe2e359ab9e05740a838d66b
This commit is contained in:
parent
d364d9cca2
commit
0a44085af6
|
@ -223,10 +223,10 @@ resources:
|
||||||
DockerPuppetTasks:
|
DockerPuppetTasks:
|
||||||
type: OS::Heat::Value
|
type: OS::Heat::Value
|
||||||
properties:
|
properties:
|
||||||
type: comma_delimited_list
|
type: json
|
||||||
value:
|
value:
|
||||||
yaql:
|
yaql:
|
||||||
expression: coalesce($.data, []).where($ != null).select($.get('docker_puppet_tasks')).where($ != null).distinct()
|
expression: dict(coalesce($.data, []).where($ != null).select($.get('docker_puppet_tasks')).where($ != null).selectMany($.items()).groupBy($[0], $[1]))
|
||||||
data: {get_attr: [ServiceChain, role_data]}
|
data: {get_attr: [ServiceChain, role_data]}
|
||||||
|
|
||||||
HostPrepTasks:
|
HostPrepTasks:
|
||||||
|
|
|
@ -64,6 +64,10 @@
|
||||||
########################################################
|
########################################################
|
||||||
# Bootstrap tasks, only performed on bootstrap_server_id
|
# Bootstrap tasks, only performed on bootstrap_server_id
|
||||||
########################################################
|
########################################################
|
||||||
|
- name: Check if /var/lib/docker-puppet/docker-puppet-tasks{{step}}.json exists
|
||||||
|
stat:
|
||||||
|
path: /var/lib/docker-puppet/docker-puppet-tasks{{step}}.json
|
||||||
|
register: docker_puppet_tasks_json
|
||||||
- name: Run docker-puppet tasks (bootstrap tasks)
|
- name: Run docker-puppet tasks (bootstrap tasks)
|
||||||
shell: python /var/lib/docker-puppet/docker-puppet.py
|
shell: python /var/lib/docker-puppet/docker-puppet.py
|
||||||
environment:
|
environment:
|
||||||
|
@ -71,7 +75,7 @@
|
||||||
NET_HOST: "true"
|
NET_HOST: "true"
|
||||||
NO_ARCHIVE: "true"
|
NO_ARCHIVE: "true"
|
||||||
STEP: "{{step}}"
|
STEP: "{{step}}"
|
||||||
when: deploy_server_id == bootstrap_server_id
|
when: deploy_server_id == bootstrap_server_id and docker_puppet_tasks_json.stat.exists
|
||||||
changed_when: false
|
changed_when: false
|
||||||
check_mode: no
|
check_mode: no
|
||||||
register: outputs
|
register: outputs
|
||||||
|
|
|
@ -60,23 +60,6 @@ conditions:
|
||||||
|
|
||||||
resources:
|
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:
|
|
||||||
$.data.default_tasks + 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]}
|
|
||||||
default_tasks:
|
|
||||||
{%- for step in range(1, deploy_steps_max) %}
|
|
||||||
step_{{step}}: {}
|
|
||||||
{%- endfor %}
|
|
||||||
|
|
||||||
RoleConfig:
|
RoleConfig:
|
||||||
type: OS::Heat::SoftwareConfig
|
type: OS::Heat::SoftwareConfig
|
||||||
properties:
|
properties:
|
||||||
|
@ -177,7 +160,7 @@ resources:
|
||||||
vars:
|
vars:
|
||||||
puppet_config: {get_param: [role_data, {{role.name}}, puppet_config]}
|
puppet_config: {get_param: [role_data, {{role.name}}, puppet_config]}
|
||||||
docker_puppet_script: {get_file: docker-puppet.py}
|
docker_puppet_script: {get_file: docker-puppet.py}
|
||||||
docker_puppet_tasks: {get_attr: [{{primary_role_name}}DockerPuppetTasks, value]}
|
docker_puppet_tasks: {get_param: [role_data, {{role.name}}, docker_puppet_tasks]}
|
||||||
docker_startup_configs: {get_param: [role_data, {{role.name}}, docker_config]}
|
docker_startup_configs: {get_param: [role_data, {{role.name}}, docker_config]}
|
||||||
kolla_config: {get_param: [role_data, {{role.name}}, kolla_config]}
|
kolla_config: {get_param: [role_data, {{role.name}}, kolla_config]}
|
||||||
bootstrap_server_id: {get_param: [servers, {{primary_role_name}}, '0']}
|
bootstrap_server_id: {get_param: [servers, {{primary_role_name}}, '0']}
|
||||||
|
@ -195,10 +178,9 @@ resources:
|
||||||
file: path=/var/lib/tripleo-config state=directory
|
file: path=/var/lib/tripleo-config state=directory
|
||||||
- name: Write the puppet step_config manifest
|
- name: Write the puppet step_config manifest
|
||||||
copy: content="{{puppet_step_config}}" dest=/var/lib/tripleo-config/puppet_step_config.pp force=yes
|
copy: content="{{puppet_step_config}}" dest=/var/lib/tripleo-config/puppet_step_config.pp force=yes
|
||||||
# This is the docker-puppet configs end in
|
# this creates a JSON config file for our docker-puppet.py script
|
||||||
- name: Create /var/lib/docker-puppet
|
- name: Create /var/lib/docker-puppet
|
||||||
file: path=/var/lib/docker-puppet state=directory
|
file: path=/var/lib/docker-puppet state=directory
|
||||||
# this creates a JSON config file for our docker-puppet.py script
|
|
||||||
- name: Write docker-puppet-tasks json files
|
- name: Write docker-puppet-tasks json files
|
||||||
copy: content="{{puppet_config | to_json}}" dest=/var/lib/docker-puppet/docker-puppet.json force=yes
|
copy: content="{{puppet_config | to_json}}" dest=/var/lib/docker-puppet/docker-puppet.json force=yes
|
||||||
# FIXME: can we move docker-puppet somewhere so it's installed via a package?
|
# FIXME: can we move docker-puppet somewhere so it's installed via a package?
|
||||||
|
@ -222,6 +204,13 @@ resources:
|
||||||
########################################################
|
########################################################
|
||||||
# Bootstrap tasks, only performed on bootstrap_server_id
|
# Bootstrap tasks, only performed on bootstrap_server_id
|
||||||
########################################################
|
########################################################
|
||||||
|
- name: Clean /var/lib/docker-puppet/docker-puppet-tasks*.json files
|
||||||
|
file:
|
||||||
|
path: "{{item}}"
|
||||||
|
state: absent
|
||||||
|
with_fileglob:
|
||||||
|
- /var/lib/docker-puppet/docker-puppet-tasks*.json
|
||||||
|
when: deploy_server_id == bootstrap_server_id
|
||||||
- name: Write docker-puppet-tasks json files
|
- name: Write docker-puppet-tasks json files
|
||||||
copy: content="{{item.value|to_json}}" dest=/var/lib/docker-puppet/docker-puppet-tasks{{item.key.replace("step_", "")}}.json force=yes
|
copy: content="{{item.value|to_json}}" dest=/var/lib/docker-puppet/docker-puppet-tasks{{item.key.replace("step_", "")}}.json force=yes
|
||||||
with_dict: "{{docker_puppet_tasks}}"
|
with_dict: "{{docker_puppet_tasks}}"
|
||||||
|
|
Loading…
Reference in New Issue