tripleo-heat-templates/common/deploy-steps-tasks.yaml
James Slagle 13aaf52a46 Remove "when failed" from debug task names
This commit removes the "when failed" from the task title to eliminate
confusion.

These tasks always run to show the debug output for the previous task,
regardless of whether the the previous task failed or not. They will
show the debug output as long as the previous task finished (success or
failure).

Change-Id: I4e52bdc18885f13793550e5032fb1316a13b248c
2018-09-24 09:17:15 -04:00

269 lines
11 KiB
YAML

# Note the indentation here is required as it's joined
# to create a playbook in deploy-steps.j2
##################################################
# Step 1 block, write data for subsequent steps
##################################################
- name: Write config data at the start of step 1
when: step == "1"
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
# Puppet manifest for baremetal host configuration
- name: Write the puppet step_config manifest
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
- name: Write docker-puppet.json file
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
setype: svirt_sandbox_file_t
# The container config files
# /var/lib/docker-container-startup-configs.json is removed as we now write
# per-step files instead
- name: Clean old /var/lib/docker-container-startup-configs.json file
file:
path: /var/lib/docker-container-startup-configs.json
state: absent
- 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) }}"
setype: svirt_sandbox_file_t
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-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: Set docker_startup_configs_with_default fact
no_log: True
set_fact:
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'
- 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 }}"
- 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: Create /var/lib/config-data directory
file:
path: /var/lib/config-data
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'
setype: svirt_sandbox_file_t
with_dict: "{{ lookup('file', tripleo_role_name + '/kolla_config.yaml', errors='ignore') | default([], True) | from_yaml }}"
########################################################
# 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
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
#####################################################
# Per step puppet configuration of the baremetal host
#####################################################
- name: Set host puppet debugging fact string
set_fact:
host_puppet_config_debug: "--debug --verbose"
when:
- enable_puppet | default(true) | bool
- 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'
- name: Run puppet host configuration for step {{ step }}
when: enable_puppet|default(true)|bool
command: >-
puppet apply {{ host_puppet_config_debug | default('') }}
--modulepath=/etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
--detailed-exitcodes
--summarize
--logdest syslog --logdest console --color=false
/var/lib/tripleo-config/puppet_step_config.pp
changed_when: outputs.rc == 2
check_mode: no
register: outputs
failed_when: false
no_log: true
- name: "Debug output for task: Run puppet host configuration for step {{ step }}"
debug:
var: outputs.stdout_lines | default([]) | union(outputs.stderr_lines | default([]))
when:
- enable_puppet | default(true) | bool
- 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 }}
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) }}'
CONTAINER_CLI: "{{ container_cli | default('docker') }}"
when: step == "1"
changed_when: false
check_mode: no
register: outputs
failed_when: false
no_log: true
- name: "Debug output for task: 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
##################################################
# Per step starting of the containers using paunch
##################################################
# 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 }}
command: >-
paunch --debug apply
--default-runtime "{{ container_cli | default('docker') }}"
--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
failed_when: false
no_log: true
- name: "Debug output for task: 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
########################################################
# 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) for step {{ step }}
shell: python /var/lib/docker-puppet/docker-puppet.py
environment:
CONFIG: /var/lib/docker-puppet/docker-puppet-tasks{{ step }}.json
NET_HOST: "true"
NO_ARCHIVE: "true"
STEP: "{{ step }}"
CONTAINER_CLI: "{{ container_cli | default('docker') }}"
when:
- deploy_server_id == bootstrap_server_id
- docker_puppet_tasks_json.stat.exists
changed_when: false
check_mode: no
register: outputs
failed_when: false
no_log: true
- name: "Debug output for task: 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