This is my Ansible playbook …
roles/myrole ├── defaults │ └── main.yml ├── tasks │ ├── add_user_to_group.yml │ ├── create_user.yml │ └── main.yml ├── templates │ ├── add_user_to_group_data.j2 │ └── create_user_data.j2 └── vars └── main.yml
role/myrole/tasks/create_user.yml
— - name: Creating User … uri: url: https://www.example.com/api/users method: POST body: “{{ create_user_data }}” body_format: json status_code: 200 return_content: yes headers: Accept: application/json Content-Type: application/json x-api-key: my-api-key-here register: result - name: Saving User ID to a Variable set_fact: user_create_id: result: “{{ result.json | community.general.json_query(‘id’) }}” - name: Printing User ID of the User Created ansible.builtin.debug: msg: “{{ user_create_id }}”
tasks/add_user_to_group.yml
— - name: Adding User to Group … uri: url: https://www.example.com/api/usergroups/123456/members method: POST body: “{{ add_user_to_group_data }}” body_format: json status_code: 200 return_content: yes headers: Accept: application/json Content-Type: application/json x-api-key: my-api-key-here register: result
templates/create_user_data.j2
{ “username”:“john”, “email":"john@gmail.com”, “firstname”:“John”, “lastname”:“Smith” }
templates/add_user_to_group_data.j2
{ “op”: “add”, “type”: “user”, “id”: “{{ user_create_id }}” }
vars/main.yml
create_user_data: “{{ lookup(‘template’, ‘create_user_data.j2’) }}” add_user_to_group_data: “{{ lookup(‘template’, ‘add_user_to_group_data.j2’) }}”
Output of task create_user.yml printing the ID
ok: [localhost] => { “msg”: { “result”: “71b248b35ea374433153bbe4” } }
I run the playbook basefile.yml which has the role myrole.
I’m trying to pass the ID from the result of the task create_user.yml as an input variable to the another task add_user_to_group.yml, especially in the template add_user_to_group_data.j2.
I unable to pass the variable {{ create_user_id }} to add_user_to_group_data.j2. If possible, we can create another task and call both the tasks passing some variables or to template file, but don’t know how.
How do I pass the json output field value from a task as an input to another task in the role?, any help is appreciated!.
Thanks in advance!