aboutsummaryrefslogtreecommitdiff
path: root/personal_infra/playbooks/roles/apply_puppet
diff options
context:
space:
mode:
authoralex <alex@pdp7.net>2023-01-28 16:36:26 +0100
committeralex <alex@pdp7.net>2023-01-28 16:36:49 +0100
commit39b4e1252ed4d2b7ca971eb48038b5deb137ec9d (patch)
tree798aecbfd9f4277cf97f393bf9177541ba9b10e6 /personal_infra/playbooks/roles/apply_puppet
parentdadd31dc8e9fe4ebb2a3856f8125896c58c89e6b (diff)
Refactor playbooks into roles
Diffstat (limited to 'personal_infra/playbooks/roles/apply_puppet')
-rw-r--r--personal_infra/playbooks/roles/apply_puppet/tasks/main.yml116
1 files changed, 116 insertions, 0 deletions
diff --git a/personal_infra/playbooks/roles/apply_puppet/tasks/main.yml b/personal_infra/playbooks/roles/apply_puppet/tasks/main.yml
new file mode 100644
index 00000000..627d2929
--- /dev/null
+++ b/personal_infra/playbooks/roles/apply_puppet/tasks/main.yml
@@ -0,0 +1,116 @@
+---
+- name: create local temporary directory
+ tempfile:
+ state: directory
+ path: "{{ inventory_dir }}/tmp"
+ register: local_temp
+ delegate_to: 127.0.0.1
+ tags: puppet_fast
+- name: create data directory in local temp
+ file:
+ path: "{{ local_temp.path }}/data"
+ state: directory
+ delegate_to: 127.0.0.1
+ tags: puppet_fast
+- name: create hiera.yaml
+ copy:
+ dest: "{{ local_temp.path }}/hiera.yaml"
+ content: |
+ version: 5
+ hierarchy:
+ - name: hostvars
+ path: hostvars.json
+ data_hash: json_data
+ - name: this
+ path: this.json
+ data_hash: json_data
+ delegate_to: 127.0.0.1
+ tags: puppet_fast
+- name: dump hostvars
+ copy:
+ dest: "{{ local_temp.path }}/data/hostvars.json"
+ content: "{'hostvars': {{ hostvars }} }"
+ delegate_to: 127.0.0.1
+ tags: puppet_fast
+- name: dump this
+ copy:
+ dest: "{{ local_temp.path }}/data/this.json"
+ content: "{{ hostvars[inventory_hostname] }}"
+ delegate_to: 127.0.0.1
+ tags: puppet_fast
+- name: install epel
+ package:
+ name: epel-release
+ when: ansible_distribution_file_variety == 'RedHat'
+- name: install puppet
+ package:
+ name: puppet
+- name: get facts
+ command: facter -y
+ register: facter_output
+ tags: puppet_fast
+- name: create facts directory in local temp
+ file:
+ path: "{{ local_temp.path }}/yaml/facts"
+ state: directory
+ delegate_to: 127.0.0.1
+ tags: puppet_fast
+- name: dump facts
+ copy:
+ dest: "{{ local_temp.path }}/yaml/facts/{{ inventory_hostname }}.yaml"
+ content: "--- !ruby/object:Puppet::Node::Facts\nvalues:\n {{ facter_output.stdout | indent(width=2) }}"
+ delegate_to: 127.0.0.1
+ tags: puppet_fast
+- name: compile catalogs
+ command: puppet catalog compile --modulepath={{ inventory_dir }}/puppet/modules --hiera_config={{ local_temp.path }}/hiera.yaml --manifest={{ inventory_dir }}/puppet/site --terminus compiler --vardir {{ local_temp.path }}/ --facts_terminus yaml {{ inventory_hostname }}
+ delegate_to: 127.0.0.1
+ register: catalog
+ tags: puppet_fast
+- name: create remote temporary directory
+ tempfile:
+ state: directory
+ register: remote_temp
+ tags: puppet_fast
+- name: write catalog
+ copy:
+ dest: "{{ remote_temp.path }}/catalog.json"
+ content: "{{ catalog.stdout | regex_replace('\\A.*?\\n', multiline=True) }}"
+ tags: puppet_fast
+- name: preview catalog
+ command: puppet apply --catalog {{ remote_temp.path }}/catalog.json --noop --test
+ register: catalog_apply
+ tags: puppet_fast
+- name: display catalog preview stdout
+ debug:
+ msg: "{{ catalog_apply.stdout_lines }}"
+ tags: puppet_fast
+- name: display catalog preview stderr
+ debug:
+ msg: "{{ catalog_apply.stderr_lines }}"
+ tags: puppet_fast
+- name: pause to confirm
+ pause:
+ tags: pause
+- name: apply catalog
+ command: puppet apply --catalog {{ remote_temp.path }}/catalog.json
+ register: catalog_apply
+ tags: puppet_fast
+- name: display catalog apply stdout
+ debug:
+ msg: "{{ catalog_apply.stdout_lines }}"
+ tags: puppet_fast
+- name: display catalog apply stderr
+ debug:
+ msg: "{{ catalog_apply.stderr_lines }}"
+ tags: puppet_fast
+- name: clean up remote temporary directory
+ file:
+ state: absent
+ path: "{{ remote_temp.path }}"
+ tags: puppet_fast
+- name: clean up local temporary directory
+ file:
+ state: absent
+ path: "{{ local_temp.path}}"
+ delegate_to: 127.0.0.1
+ tags: puppet_fast