--- - name: apply puppet config hosts: all collections: - ansible.builtin - community.general tasks: - name: install puppet package: name: puppet - name: create local temporary directory tempfile: state: directory register: local_temp delegate_to: 127.0.0.1 - name: create remote temporary directory tempfile: state: directory register: remote_temp - name: package manifests archive: path: ../puppet dest: "{{ local_temp.path }}/puppet.tar.gz" delegate_to: 127.0.0.1 - name: unpackage manifests unarchive: src: "{{ local_temp.path }}/puppet.tar.gz" dest: "{{ remote_temp.path }}" - name: dump variables copy: dest: "{{ remote_temp.path }}/vars.json" content: "{{ hostvars }}" - name: create hiera.yaml copy: dest: "{{ remote_temp.path }}/hiera.yaml" content: | version: 5 hierarchy: - name: ansible datadir: {{ remote_temp.path }} path: vars.json data_hash: json_data - name: run puppet command: puppet apply {{ remote_temp.path }} --modulepath={{ remote_temp.path }}/puppet/modules --hiera_config={{ remote_temp.path }}/hiera.yaml environment: FACTER_ansible_inventory_hostname: "{{ inventory_hostname }}" - name: clean up local temporary directory file: state: absent path: "{{ local_temp.path}}" delegate_to: 127.0.0.1 - name: clean up remote temporary directory file: state: absent path: "{{ remote_temp.path }}"