role with in a role

28 views
Skip to first unread message

Narmada Karthika

unread,
May 26, 2023, 1:24:10 PM5/26/23
to Ansible Project
I am trying a playbook for a role and calling another role with in it.
role1 where i am running playbook need to be executed on windows hosts, role 2 which is being called in role1 needs to be executed on localhost(linux). 
this is from the tasks/main.yml file for role1.
but still it is picking windows node from role1 and failing..
- name: calling serverdata role here
  include_role:
    name: serverdata (role2)
    tasks_from: main.yml
    apply:
      delegate_to: localhost

Dick Visser

unread,
May 26, 2023, 1:34:42 PM5/26/23
to ansible...@googlegroups.com
I haven't tried this myself (as it sounds too complicated and error prone), but I'm guessing because you first run on the remote Windows  host, and from there during the other role, localhost is in fact that remote host.
It makes sense, in a way.

I may be completely wrong though 

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/18f6e3a2-5f79-43a2-9d44-2b09e18fa73en%40googlegroups.com.
--
Sent from Gmail Mobile

Narmada Karthika

unread,
May 26, 2023, 1:48:02 PM5/26/23
to ansible...@googlegroups.com
local host is the ansible master where the role2 has to be executed. because the role2 is to run some api commands and get server details
role1` is to install components on the server which I get from role2 



--
 Thanks,
Narmada Karthika Chitturi
 

Narmada Karthika

unread,
May 30, 2023, 3:42:28 PM5/30/23
to Ansible Project
any suggestions please to satisfy my above request...

Kosala Atapattu

unread,
May 30, 2023, 7:24:40 PM5/30/23
to ansible...@googlegroups.com
I've done this before for a complicated piece of work I did. I had roles running on several delegate proxies (yeah I called them that, since we had 5-6 of them :)).

However I did not delegate a role in mycase, but all the tasks were written with delegate_to: "{{ delgate_host }}" where I can override delegate_host variable at the role level.

I do not believe this is a widely used regime, and I did ran in to some issues when you call role -> role -> role, the last layer lost visibility to all the top level variables. Like @Dick Visser said this will not be the smoothest sailing, but surely works.

I wrote this originally for Ansible 2.9, but when I tested with 2.11, most of the issues I faced were gone.

Kosala




Narmada Karthika

unread,
May 31, 2023, 11:32:15 AM5/31/23
to ansible...@googlegroups.com
So, is there any other alternate solution you would suggest  for my requirement.

Dick Visser

unread,
May 31, 2023, 12:55:10 PM5/31/23
to ansible...@googlegroups.com
Something without the nested roles, as those are clearly not doing
what you want.
It's a bit hard to understand what needs to be executed where.
I would start out with a playbook and not bother with roles initially.
> To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CABdF8S3Mmu_zM%3DK5kWbE9T%2BDOJ1ScSka9sgCGWDLu0iLnL%3DAcw%40mail.gmail.com.

Narmada Karthika

unread,
May 31, 2023, 1:58:01 PM5/31/23
to Ansible Project
got it.. 
thankyou
Message has been deleted

Narmada Karthika

unread,
Jun 1, 2023, 10:49:52 AM6/1/23
to Ansible Project
I have one more question please, can we call a play in another play, because I have a playbook which needs to run some curl commands and fetch data, and the second play book has to perform the configurations. 
When I want to run configuration playbook, first it needs to run curl playbook and fetch data. 

Dick Visser

unread,
Jun 1, 2023, 1:15:19 PM6/1/23
to ansible...@googlegroups.com
You can have a playbook with multiple plays. One targets localhost to fetch api results. You register that. 
The subsequent plays target real host and use the registered data 


Mike Eggleston

unread,
Jun 1, 2023, 2:06:18 PM6/1/23
to ansible...@googlegroups.com
import_plays and import_playbook

Mike

On Jun 1, 2023, at 12:15, Dick Visser <dnmv...@gmail.com> wrote:



Kosala Atapattu

unread,
Jun 1, 2023, 4:11:11 PM6/1/23
to ansible...@googlegroups.com
I think the command module now complain as well, uri module is a native way to do what curl does.


Kosala




Narmada Karthika

unread,
Jun 2, 2023, 4:46:09 PM6/2/23
to Ansible Project
Thanks Dick for explaining it, my first problem solved -  I converted everything back to playbooks and able to call 2 playbooks, on will be running on localhost and second playbooks runs on windows. 
second scenario where I need some advise, from one of my playbook I get all servers and I am saving it as yaml. I want to call that server.yml as inventory when running second playbook.. but the server.yml has to access the groups_vars, where it has all variables... how can I have them??
Reply all
Reply to author
Forward
0 new messages