--- - name: ensure local output directory exists ansible.builtin.file: path: "{{ openvpn_client_bundle_dir }}/{{ item.0.name }}" state: directory mode: '0700' loop: "{{ openvpn_instances | subelements('clients') }}" delegate_to: localhost become: false - name: render standalone client bundles ansible.builtin.template: src: "{{ role_path }}/templates/client-certs/{{ item.0.name }}.conf.j2" dest: "{{ openvpn_client_bundle_dir }}/{{ item.0.name }}/{{ item.1.name }}.ovpn" mode: '0600' loop: "{{ openvpn_instances | subelements('clients') }}" delegate_to: localhost become: false