Merge "run docker_puppet_tasks on any role" into stable/rocky

This commit is contained in:
Zuul 2019-02-11 19:24:08 +00:00 committed by Gerrit Code Review
commit b690c4fc4d
2 changed files with 30 additions and 37 deletions

View File

@ -3,7 +3,6 @@
##################################################
# Step 1 block, write data for subsequent steps
##################################################
- name: Write config data at the start of step 1
when: step == "1"
block:
@ -261,33 +260,6 @@
tags:
- container_startup_configs
########################################################
# 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
tags:
- container_config_tasks
- name: Write docker-puppet-tasks json files
copy:
content: "{{item[1]|to_nice_json}}"
dest: /var/lib/docker-puppet/docker-puppet-tasks{{item[0].replace("step_", "")}}.json
force: yes
mode: '0600'
loop: "{{ lookup('file', tripleo_role_name + '/docker_puppet_tasks.yaml', errors='ignore') | default({}, True) | from_yaml | dictsort }}"
loop_control:
label: "{{ item[0] }}"
when: deploy_server_id == bootstrap_server_id
tags:
- container_config_tasks
#####################################################
# Per step puppet configuration of the baremetal host
#####################################################
@ -464,16 +436,36 @@
- container_startup_configs
########################################################
# Bootstrap tasks, only performed on bootstrap_server_id
# Bootstrap tasks - run any tasks that have been defined
########################################################
- name: Check if /var/lib/docker-puppet/docker-puppet-tasks{{ step }}.json exists
stat:
path: /var/lib/docker-puppet/{{ ansible_check_mode | ternary('check-mode/', '') }}docker-puppet-tasks{{ step }}.json
register: docker_puppet_tasks_json
- name: "Clean docker_puppet_tasks for {{ansible_hostname}} step {{step}}"
file:
path: /var/lib/docker-puppet/docker-puppet-tasks{{step}}.json
state: absent
tags:
- container_config_tasks
- name: Calculate docker_puppet_tasks for {{ansible_hostname}} step {{step}}
set_fact:
host_docker_puppet_tasks: "{{host_docker_puppet_tasks|default([]) + [item]}}"
loop: "{{docker_puppet_tasks.get('step_' + step, [])}}"
when: vars[item.service_name + '_short_bootstrap_node_name'] == ansible_hostname
vars:
docker_puppet_tasks: "{{ lookup('file', tripleo_role_name + '/docker_puppet_tasks.yaml', errors='ignore') | default({}, True) | from_yaml }}"
tags:
- container_config_tasks
- name: Write docker-puppet-tasks json file for {{ansible_hostname}} step {{step}}
copy:
content: "{{host_docker_puppet_tasks|to_nice_json}}"
dest: "/var/lib/docker-puppet/docker-puppet-tasks{{step}}.json"
force: yes
mode: '0600'
tags:
- container_config_tasks
when: host_docker_puppet_tasks is defined
- name: Run docker-puppet tasks (bootstrap tasks) for step {{ step }}
shell: python /var/lib/docker-puppet/docker-puppet.py
environment:
@ -482,9 +474,7 @@
NET_HOST: "true"
NO_ARCHIVE: "true"
STEP: "{{ step }}"
when:
- deploy_server_id == bootstrap_server_id
- docker_puppet_tasks_json.stat.exists
when: host_docker_puppet_tasks is defined
changed_when: false
register: outputs
failed_when: false

View File

@ -364,7 +364,10 @@ resources:
type: json
value:
yaql:
expression: dict(coalesce($.data, []).where($ != null).select($.get('docker_puppet_tasks')).where($ != null).selectMany($.items()).groupBy($[0], $[1]))
# This extracts docker_puppet_tasks for each step,
# and merges {service_name: the_service} for each item, so we
# can later filter based on the bootstrap hostname for the service
expression: dict(coalesce($.data, []).where($ != null).select([$.get('docker_puppet_tasks'), $.get('service_name')]).where($[0] != null).select([$[0], dict($[0].keys().zip(dict(service_name=>$[1]).repeat(len($[0].keys()))))]).select($[0].mergeWith($[1])).selectMany($.items()).groupBy($[0], $[1]))
data: {get_attr: [ServiceChain, role_data]}
HostPrepTasks: