--- - name: apply puppet config hosts: all collections: - ansible.builtin - community.general tasks: - name: create local temporary directory tempfile: state: directory path: "{{ inventory_dir }}/tmp" register: local_temp delegate_to: 127.0.0.1 - name: create data directory in local temp file: path: "{{ local_temp.path }}/data" state: directory delegate_to: 127.0.0.1 - name: create hiera.yaml copy: dest: "{{ local_temp.path }}/hiera.yaml" content: | version: 5 hierarchy: - name: ansible path: vars.json data_hash: json_data delegate_to: 127.0.0.1 - name: dump all vars copy: dest: "{{ local_temp.path }}/data/vars.json" content: "{{ hostvars }}" delegate_to: 127.0.0.1 - 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 {{ inventory_hostname }} environment: FACTER_ansible_inventory_hostname: "{{ inventory_hostname }}" delegate_to: 127.0.0.1 register: catalog - name: install puppet package: name: puppet - name: create remote temporary directory tempfile: state: directory register: remote_temp - name: write catalog copy: dest: "{{ remote_temp.path }}/catalog.json" content: "{{ catalog.stdout | regex_replace('\\A.*?\\n', multiline=True) }}" - name: preview catalog command: puppet apply --catalog {{ remote_temp.path }}/catalog.json --noop --test register: catalog_apply - name: display catalog preview debug: msg: "{{ catalog_apply.stdout_lines }}" - name: pause to confirm pause: tags: pause - name: apply catalog command: puppet apply --catalog {{ remote_temp.path }}/catalog.json register: catalog_apply - name: display catalog application debug: msg: "{{ catalog_apply.stdout_lines }}" - name: clean up remote temporary directory file: state: absent path: "{{ remote_temp.path }}" - name: clean up local temporary directory file: state: absent path: "{{ local_temp.path}}" delegate_to: 127.0.0.1