ansible-role-puppet/tasks/main.yaml

190 lines
6.0 KiB
YAML

- block:
- name: Get management server puppet version
shell:
cmd: "PATH=$PATH:/opt/puppetlabs/bin puppet --version | cut -d '.' -f 1"
delegate_to: localhost
register: mgmt_puppet_version
- name: Set management server puppet version fact
set_fact:
mgmt_puppet_version: "{{ mgmt_puppet_version.stdout }}"
- name: Sanity check management server puppet version
fail: "Unsupported puppet version {{ mgmt_puppet_version }}"
when:
- mgmt_puppet_version != '3'
- mgmt_puppet_version != '4'
- name: Set management server hieradata var
set_fact:
mgmt_hieradata: "{{ '/etc/puppet/hieradata/' + puppet_environment if mgmt_puppet_version == '3' else '/etc/puppetlabs/code/environments/' + puppet_environment + '/hieradata' }}" # noqa 204
when: mgmt_hieradata is not defined
- name: Get puppet version
shell:
cmd: "PATH=$PATH:/opt/puppetlabs/bin puppet --version | cut -d '.' -f 1"
register: puppet_version_output
when: puppet_version is not defined
- name: Set puppet version fact
set_fact:
puppet_version: "{{ puppet_version_output.stdout }}"
when:
- puppet_version is not defined
- name: Sanity check puppet version
fail: "Unsupported puppet version {{ puppet_version }}"
when: (puppet_version != '3' and puppet_version != '4')
- block:
- name: Set hieradata var
set_fact:
hieradata: "{{ '/etc/puppet/hieradata/' + puppet_environment if puppet_version == '3' else '/etc/puppetlabs/code/environments/' + puppet_environment + '/hieradata' }}" # noqa 204
- name: ensure hiera directory
file:
state: directory
path: "{{ hieradata }}/{{ item }}"
owner: root
group: root
mode: 0700
with_items:
- group_vars
- host_vars
- name: make file list
puppet_get_hiera_file_list:
fqdn: "{{ ansible_fqdn }}"
groups: "{{ hostvars[inventory_hostname].group_names }}"
location: "{{ mgmt_hieradata }}"
delegate_to: localhost
register: hiera_file_paths
- name: copy hiera files
copy:
src: "{{ mgmt_hieradata + '/' + item }}"
dest: "{{ hieradata + '/' + item }}"
mode: 0600
with_items: "{{ hiera_file_paths.paths|default() }}"
when: copy_hieradata
- block:
- name: Ensure target directory exists
file:
path: "{{ manifest_base }}"
owner: root
group: root
mode: 0755
state: directory
- name: copy puppet modules
synchronize:
src: "{{ mgmt_manifestpath }}"
dest: "{{ manifest_base }}"
delete: yes
no_log: "{{ puppet_nolog_sync | bool }}"
- name: ensure hieradata manifest link is present
file:
src: "{{ '/etc/puppet/hieradata' if puppet_version == '3' else '/etc/puppetlabs/code/environments' }}"
dest: "{{ puppet_hieradata_link_dest }}"
state: link
when: copy_hieradata
- name: Set management server puppet module dir to user-defined path
set_fact:
mgmt_puppet_module_dir: "{{ puppet_basemodulepath }}"
when: puppet_basemodulepath
- name: Set management server puppet module dir
set_fact:
mgmt_puppet_module_dir: "{{ '/etc/puppet/modules' if mgmt_puppet_version == '3' else '/etc/puppetlabs/code/modules' }}"
delegate_to: localhost
when: mgmt_puppet_module_dir is not defined
- name: Set puppet module dir to user-defined path
set_fact:
puppet_module_dir: "{{ puppet_basemodulepath }}"
when: puppet_basemodulepath
- name: Set puppet module dir
set_fact:
puppet_module_dir: "{{ '/etc/puppet' if puppet_version == '3' else '/etc/puppetlabs/code' }}"
when: puppet_module_dir is not defined
- name: copy system puppet modules
synchronize:
src: "{{ mgmt_puppet_module_dir }}"
dest: "{{ puppet_module_dir }}"
delete: yes
no_log: "{{ puppet_nolog_sync | bool }}"
when:
- copy_puppet
- manifest_base is defined
- name: setup config files
when: manage_config|bool
include: config.yaml
- block:
- name: run puppet
puppet:
puppetmaster: "{{ puppetmaster|default(omit) }}"
manifest: "{{ manifest|default(omit) }}"
show_diff: "{{ show_diff|default(false) }}"
facts: "{{ facts|default(omit) }}"
facter_basename: "{{ facter_basename|default(omit) }}"
logdest: "{{ puppet_logdest|default(omit) }}"
color: "{{ puppet_color|default(omit) }}"
environment: "{{ puppet_environment|default(omit) }}"
noop: "{{ puppet_noop|default(omit) }}"
debug: "{{ puppet_debug|default(omit) }}"
timeout: "{{ puppet_timeout|default(omit) }}"
always:
- block:
- name: find logs
shell: "ls -tr /var/lib/puppet/reports/{{ ansible_fqdn }}/*_puppetdb.json"
register: files
failed_when: not files.stdout_lines|default("")
- name: set log filename
set_fact: puppet_logfile="{{ files.stdout_lines|sort|last }}"
when: "{{ files.stdout_lines|length > 0 }}"
- name: create reports directory
file:
path: '/var/lib/puppet/reports/{{ ansible_fqdn }}'
owner: root
group: root
mode: 0755
state: directory
delegate_to: localhost
when: "{{ files.stdout_lines|length > 0 }}"
- name: fetch file
synchronize:
mode: pull
src: "{{ puppet_logfile }}"
dest: /var/lib/puppet/reports/{{ ansible_fqdn }}
when: "{{ files.stdout_lines|length > 0 }}"
- name: post facts
puppet_post_puppetdb:
puppetdb: "{{ puppetdb }}"
hostvars: "{{ hostvars[inventory_hostname] }}"
logfile: "{{ puppet_logfile }}"
whoami: "{{ puppet_report_as }}"
delegate_to: localhost
when: "{{ files.stdout_lines|length > 0 }}"
when:
- puppetdb is defined
- puppet_report_as is defined