Optimized Ansible tasks in deplay-steps-tasks.yaml

- do not use set_fact when a lookup can be done directly in the task
- use multi-line YAML for easier legibility
- ignore errors in file lookup plugin when file does not exist and set defaults

Change-Id: I832a2ec34f4ed4a87e30d0c88f4c60bcf2f4c151
(cherry picked from commit 1deab1217d)
This commit is contained in:
Sam Doran 2018-04-10 14:57:24 -04:00 committed by James Slagle
parent 7af622b117
commit b8065e6709
1 changed files with 105 additions and 122 deletions

View File

@ -9,47 +9,41 @@
become: true
block:
- name: Create /var/lib/tripleo-config directory
file: path=/var/lib/tripleo-config state=directory setype=svirt_sandbox_file_t selevel=s0 recurse=true
file:
path: /var/lib/tripleo-config
state: directory
setype: svirt_sandbox_file_t
selevel: s0
recurse: true
# Puppet manifest for baremetal host configuration
- name: Check if puppet step_config.pp manifest exists
delegate_to: localhost
become: false
stat:
path: "{{ tripleo_role_name + '/step_config.pp' }}"
register: stat_step_config
- name: Set fact when file existed
no_log: True
set_fact:
role_data_step_config: "{{lookup('file', tripleo_role_name + '/step_config.pp')}}"
when: stat_step_config.stat.exists
- name: Write the puppet step_config manifest
copy: content="{{role_data_step_config}}" dest=/var/lib/tripleo-config/puppet_step_config.pp force=yes mode=0600
copy:
content: "{{ lookup('file', tripleo_role_name + '/step_config.pp', errors='ignore') | default('', True) }}"
dest: /var/lib/tripleo-config/puppet_step_config.pp
force: yes
mode: '0600'
# Config file for our docker-puppet.py script, used to generate container configs
- name: Create /var/lib/docker-puppet
file: path=/var/lib/docker-puppet state=directory setype=svirt_sandbox_file_t selevel=s0 recurse=true
- name: Check if docker-puppet puppet_config.yaml configuration file exists
delegate_to: localhost
become: false
stat:
path: "{{ tripleo_role_name + '/puppet_config.yaml' }}"
register: stat_puppet_config
- name: Set fact when file existed
no_log: True
set_fact:
role_data_puppet_config: "{{lookup('file', tripleo_role_name + '/puppet_config.yaml') | from_yaml | to_json}}"
when: stat_puppet_config.stat.exists
file:
path: /var/lib/docker-puppet
state: directory
setype: svirt_sandbox_file_t
selevel: s0
- name: Write docker-puppet.json file
copy: content="{{role_data_puppet_config}}" dest=/var/lib/docker-puppet/docker-puppet.json force=yes mode=0600
copy:
content: "{{ lookup('file', tripleo_role_name + '/puppet_config.yaml', errors='ignore') | default([], True) | from_yaml | to_json }}"
dest: /var/lib/docker-puppet/docker-puppet.json
force: yes
mode: '0600'
- name: Create /var/lib/docker-config-scripts
file: path=/var/lib/docker-config-scripts state=directory
file:
path: /var/lib/docker-config-scripts
state: directory
# The container config files
# /var/lib/docker-container-startup-configs.json is removed as we now write
@ -59,78 +53,65 @@
path: /var/lib/docker-container-startup-configs.json
state: absent
- name: Check if docker_config_scripts.yaml file exists
delegate_to: localhost
become: false
stat:
path: "{{ tripleo_role_name + '/docker_config_scripts.yaml' }}"
register: stat_docker_config_scripts
- name: Set fact when file existed
no_log: True
set_fact:
role_data_docker_config_scripts: "{{lookup('file', tripleo_role_name + '/docker_config_scripts.yaml') | from_yaml}}"
when: stat_docker_config_scripts.stat.exists
- name: Write docker config scripts
copy: content="{{item.value.content}}" dest="/var/lib/docker-config-scripts/{{item.key}}" force=yes mode="{{item.value.mode|default('0600', true)}}"
with_dict: "{{role_data_docker_config_scripts}}"
copy:
content: "{{ item.value.content }}"
dest: "/var/lib/docker-config-scripts/{{ item.key }}"
force: yes
mode: "{{ item.value.mode | default('0600', true) }}"
with_dict: "{{ role_data_docker_config_scripts }}"
vars:
role_data_docker_config_scripts: "{{ lookup('file', tripleo_role_name + '/docker_config_scripts.yaml', errors='ignore') | default({}, True) | from_yaml }}"
# 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 test containers.
# FIXME We need to update the defaults e.g in docker-toool so we can remove the
# and docker-cmd. This lets us create command line tools to test containers.
# FIXME We need to update the defaults, e.g in docker-tool, so we can remove the
# docker-container-startup-configs.json and use per-step configs instead
- name: Set docker_config_default fact
no_log: True
set_fact:
docker_config_default: "{{ docker_config_default|default({}) | combine( {'step_'+item: {}} ) }}"
with_sequence: count={{deploy_steps_max}}
- name: Check if docker_config.yaml file exists
delegate_to: localhost
become: false
stat:
path: "{{ tripleo_role_name + '/docker_config.yaml' }}"
register: stat_docker_config
- name: Set fact when file existed
no_log: True
set_fact:
role_data_docker_config: "{{lookup('file', tripleo_role_name + '/docker_config.yaml') | from_yaml}}"
when: stat_docker_config.stat.exists
docker_config_default: "{{ docker_config_default | default({}) | combine( {'step_' + item: {}} ) }}"
with_sequence: count={{ deploy_steps_max }}
- name: Set docker_startup_configs_with_default fact
no_log: True
set_fact:
docker_config_with_default: "{{docker_config_default | combine(role_data_docker_config)}}"
docker_config_with_default: "{{ docker_config_default | combine(role_data_docker_config) }}"
vars:
role_data_docker_config: "{{ lookup('file', tripleo_role_name + '/docker_config.yaml', errors='ignore') | default({}, True) | from_yaml }}"
- name: Write docker-container-startup-configs
copy: content="{{docker_config_with_default | to_json }}" dest=/var/lib/docker-container-startup-configs.json force=yes mode=0600
copy:
content: "{{ docker_config_with_default | to_json }}"
dest: /var/lib/docker-container-startup-configs.json
force: yes
mode: '0600'
- name: Write per-step docker-container-startup-configs
copy: content="{{item.value|to_json}}" dest="/var/lib/tripleo-config/docker-container-startup-config-{{item.key}}.json" force=yes mode=0600
with_dict: "{{docker_config_with_default}}"
copy:
content: "{{ item.value | to_json }}"
dest: "/var/lib/tripleo-config/docker-container-startup-config-{{ item.key }}.json"
force: yes
mode: '0600'
with_dict: "{{ docker_config_with_default }}"
- name: Create /var/lib/kolla/config_files directory
file: path=/var/lib/kolla/config_files state=directory setype=svirt_sandbox_file_t selevel=s0 recurse=true
- name: Check if kolla_config.yaml file exists
delegate_to: localhost
become: false
stat:
path: "{{ tripleo_role_name + '/kolla_config.yaml' }}"
register: stat_kolla_config
- name: Set fact when file existed
no_log: True
set_fact:
role_data_kolla_config: "{{lookup('file', tripleo_role_name + '/kolla_config.yaml') | from_yaml}}"
when: stat_kolla_config.stat.exists
file:
path: /var/lib/kolla/config_files
state: directory
setype: svirt_sandbox_file_t
selevel: s0
recurse: true
- name: Write kolla config json files
copy: content="{{item.value|to_json}}" dest="{{item.key}}" force=yes mode=0600
with_dict: "{{role_data_kolla_config}}"
copy:
content: "{{ item.value | to_json }}"
dest: "{{ item.key }}"
force: yes
mode: '0600'
with_dict: "{{ lookup('file', tripleo_role_name + '/kolla_config.yaml', errors='ignore') | default([], True) | from_yaml }}"
########################################################
# Bootstrap tasks, only performed on bootstrap_server_id
@ -138,28 +119,19 @@
- name: Clean /var/lib/docker-puppet/docker-puppet-tasks*.json files
file:
path: "{{item}}"
path: "{{ item }}"
state: absent
with_fileglob:
- /var/lib/docker-puppet/docker-puppet-tasks*.json
when: deploy_server_id == bootstrap_server_id
- name: Check if docker_puppet_tasks.yaml file exists
delegate_to: localhost
become: false
stat:
path: "{{ tripleo_role_name + '/docker_puppet_tasks.yaml' }}"
register: stat_docker_puppet_tasks
- name: Set fact when file existed
no_log: True
set_fact:
role_data_docker_puppet_tasks: "{{lookup('file', tripleo_role_name + '/docker_puppet_tasks.yaml') | from_yaml}}"
when: stat_docker_puppet_tasks.stat.exists
- 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 mode=0600
with_dict: "{{role_data_docker_puppet_tasks}}"
copy:
content: "{{item.value|to_json}}"
dest: /var/lib/docker-puppet/docker-puppet-tasks{{item.key.replace("step_", "")}}.json
force: yes
mode: '0600'
with_dict: "{{ lookup('file', tripleo_role_name + '/docker_puppet_tasks.yaml', errors='ignore') | default({}, True) | from_yaml }}"
when: deploy_server_id == bootstrap_server_id
#####################################################
@ -172,12 +144,16 @@
when: enable_debug|default(false)|bool
- name: Write the config_step hieradata
copy: content="{{dict(step=step|int)|to_json}}" dest=/etc/puppet/hieradata/config_step.json force=true mode=0600
copy:
content: "{{ dict(step=step|int) | to_json }}"
dest: /etc/puppet/hieradata/config_step.json
force: true
mode: '0600'
become: true
- name: Run puppet host configuration for step {{step}}
command: >-
puppet apply {{ host_puppet_config_debug|default('') }}
puppet apply {{ host_puppet_config_debug | default('') }}
--modulepath=/etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
--detailed-exitcodes
--summarize
@ -190,21 +166,23 @@
no_log: true
become: true
- name: "Debug output for task which failed: Run puppet host configuration for step {{step}}"
debug: var=outputs.stdout_lines|default([])|union(outputs.stderr_lines|default([]))
when: outputs.rc is defined
- name: "Debug output for task which failed: Run puppet host configuration for step {{ step }}"
debug:
var: outputs.stdout_lines | default([]) | union(outputs.stderr_lines | default([]))
when:
- outputs.rc is defined
failed_when: outputs.rc not in [0, 2]
######################################
# Generate config via docker-puppet.py
######################################
- name: Run docker-puppet tasks (generate config) during step {{step}}
- name: Run docker-puppet tasks (generate config) during step {{ step }}
shell: python /var/lib/docker-puppet/docker-puppet.py
environment:
NET_HOST: 'true'
DEBUG: '{{docker_puppet_debug|default(false)}}'
PROCESS_COUNT: '{{docker_puppet_process_count|default(3)}}'
DEBUG: '{{ docker_puppet_debug | default(false) }}'
PROCESS_COUNT: '{{ docker_puppet_process_count | default(3) }}'
when: step == "1"
changed_when: false
check_mode: no
@ -213,8 +191,9 @@
no_log: true
become: true
- name: "Debug output for task which failed: Run docker-puppet tasks (generate config) during step {{step}}"
debug: var=outputs.stdout_lines|default([])|union(outputs.stderr_lines|default([]))
- name: "Debug output for task which failed: Run docker-puppet tasks (generate config) during step {{ step }}"
debug:
var: outputs.stdout_lines | default([]) | union(outputs.stderr_lines | default([]))
when: outputs.rc is defined
failed_when: outputs.rc != 0
@ -225,11 +204,11 @@
# Note docker-puppet.py generates the hashed-*.json file, which is a copy of
# the *step_n.json with a hash of the generated external config added
# This acts as a salt to enable restarting the container if config changes
- name: Start containers for step {{step}}
- name: Start containers for step {{ step }}
command: >-
paunch --debug apply
--file /var/lib/tripleo-config/hashed-docker-container-startup-config-step_{{step}}.json
--config-id tripleo_step{{step}} --managed-by tripleo-{{tripleo_role_name}}
--file /var/lib/tripleo-config/hashed-docker-container-startup-config-step_{{ step }}.json
--config-id tripleo_step{{ step }} --managed-by tripleo-{{ tripleo_role_name }}
changed_when: false
check_mode: no
register: outputs
@ -237,8 +216,9 @@
no_log: true
become: true
- name: "Debug output for task which failed: Start containers for step {{step}}"
debug: var=outputs.stdout_lines|default([])|union(outputs.stderr_lines|default([]))
- name: "Debug output for task which failed: Start containers for step {{ step }}"
debug:
var: outputs.stdout_lines | default([]) | union(outputs.stderr_lines | default([]))
when: outputs.rc is defined
failed_when: outputs.rc != 0
@ -246,20 +226,22 @@
# Bootstrap tasks, only performed on bootstrap_server_id
########################################################
- name: Check if /var/lib/docker-puppet/docker-puppet-tasks{{step}}.json exists
- name: Check if /var/lib/docker-puppet/docker-puppet-tasks{{ step }}.json exists
stat:
path: /var/lib/docker-puppet/docker-puppet-tasks{{step}}.json
path: /var/lib/docker-puppet/docker-puppet-tasks{{ step }}.json
register: docker_puppet_tasks_json
become: true
- name: Run docker-puppet tasks (bootstrap tasks) for step {{step}}
- name: Run docker-puppet tasks (bootstrap tasks) for step {{ step }}
shell: python /var/lib/docker-puppet/docker-puppet.py
environment:
CONFIG: /var/lib/docker-puppet/docker-puppet-tasks{{step}}.json
CONFIG: /var/lib/docker-puppet/docker-puppet-tasks{{ step }}.json
NET_HOST: "true"
NO_ARCHIVE: "true"
STEP: "{{step}}"
when: deploy_server_id == bootstrap_server_id and docker_puppet_tasks_json.stat.exists
STEP: "{{ step }}"
when:
- deploy_server_id == bootstrap_server_id
- docker_puppet_tasks_json.stat.exists
changed_when: false
check_mode: no
register: outputs
@ -267,8 +249,9 @@
no_log: true
become: true
- name: "Debug output for task which failed: Run docker-puppet tasks (bootstrap tasks) for step {{step}}"
debug: var=outputs.stdout_lines|default([])|union(outputs.stderr_lines|default([]))
- name: "Debug output for task which failed: Run docker-puppet tasks (bootstrap tasks) for step {{ step }}"
debug:
var: outputs.stdout_lines | default([]) | union(outputs.stderr_lines | default([]))
when: outputs.rc is defined
failed_when: outputs.rc != 0