Search code examples
ansibledevopsansible-template

It's possible to parse template file on ansible role having the role itself as destination


I'm trying to parse a template file with Ansible, but I don't want this file to be created in any of my remote hosts, but instead I just want to create in my role_path.

I have the following in my role.

---
- name: Create configuration.yml on ansible role
  ansible.builtin.template:
    src: configuration.j2
    dest: "{{role_path | default('')}}{{stack_name | mandatory}}/configuration.yml"
  vars:
    stack_env: "dev"
    app_network: "my_network"
- name: Run tasks/main.yml from compose role
  ansible.builtin.include_role:
    name: compose
  vars:
    stack_name: "logging"
    stack_path: "{{ ansible_base_path }}/"

When I run, my pipeline says that the directory doesn't exist, which is correct, because this directory exists outside my host, and not inside. I basically want to parse this template file into my role, to be used by another role dependency.

Anyone knows if this is possible?


Solution

  • I found by myself the solution. It's possible to make use of local_action.

    This is how my final playbook looks like.

    - name: Create configuration.yml parsing variables
      local_action:
        module: template
        src: configuration.j2
        dest: "{{ role_path }}/logging/configuration.yml"
    
    - name: Run tasks/main.yml from compose role
      ansible.builtin.include_role:
        name: compose
      vars:
        stack_name: "logging"
        stack_path: "{{ ansible_base_path }}/"