Not sure I really understand but you can maybe use pre_task before to 
set_fact.  And you can use multiple when: conditions if you need to.


Another way to solve this might be to use role dependencies:

http://docs.ansible.com/ansible/playbooks_roles.html#role-dependencies

That way you could make tomweb role 'depend' on 'query' role, so the query 
role would run first before tomweb (if that's what you want.

You might also want to consider using a handler to restart.

Also maybe think about using groups in your inventory

[ref-query]
host1

[ref-tomweb]
host1


then your playbook could have

hosts: ref-query
roles:
  query

hosts: ref-tomweb
roles:
  tomweb

hosts: all
roles:
   restart

(restart could be a handler as well, so perhaps not necessary to be a 
separate role).  Handlers are nice as they can be made to only do things 
(like restarts) if changes have occurred.


Or something like that.

I think it might be worth experimenting with how you organise your 
variables so that your playbooks run have to run roles against hosts - that 
way the playbooks don't become complicated with lots of conditionals etc.

Hope this helps,

Jon
On Monday, October 24, 2016 at 2:15:43 PM UTC+1, fanvalt wrote:
>
> Thank you but I already use a when condition on the role.
> But it won't make the 1st play with the 1st role being run first
>
> Le lundi 24 octobre 2016 15:06:35 UTC+2, J Hawkesworth a écrit :
>>
>> You can use a when: conditional against your role (if you don't mind 
>> seeing lots of 'skipped' steps for each task in the role.
>>
>> see 
>> http://docs.ansible.com/ansible/playbooks_conditionals.html#applying-when-to-roles-and-includes
>>
>> Jon
>>
>> On Monday, October 24, 2016 at 11:26:33 AM UTC+1, fanvalt wrote:
>>>
>>> Would the new directive strategy help if set in the first play?
>>>   hosts: all
>>>    strategy: free
>>>    roles:
>>>     - { role: tomweb, when:  module == 'tomweb' }
>>>    vars:
>>>     module: "{{ PARAM[0] }}"
>>>
>>> would run this play and when done then run other plays, am I correct ?
>>>
>>> Le mercredi 19 octobre 2016 13:21:55 UTC+2, fanvalt a écrit :
>>>>
>>>> Hello,
>>>>
>>>> in my inventory file, I will use aliases to deploy differents 
>>>> applications for the same user:
>>>>
>>>> [reference]
>>>> refweb1 PARAM="['tomweb','7.30.05005.1334','1']"
>>>> refqry1 PARAM="['query','7.30.05005.1334','1']"
>>>> refweb2 PARAM="['restart','1']"
>>>>
>>>> I need to deploy the query applicatio before yje tomweb application, so 
>>>> in my playbook I wrote 2 plays:
>>>> the one I want to play first will run the role this way:
>>>>    roles:
>>>>     - { role: tomweb, when:  module == 'tomweb' }
>>>>    vars:
>>>>     module: "{{ PARAM[0] }}"
>>>>
>>>> the play I want to run after the 1st one is then defined later with 
>>>> this rôle:
>>>>    roles:
>>>>     - { role: query, when:  module == 'query' }
>>>>    vars:
>>>>     module: "{{ PARAM[0] }}"
>>>>
>>>> The last play will be like:
>>>>    roles:
>>>>     - { role: restart, when:  module == 'restart' }
>>>>    vars:
>>>>     module: "{{ PARAM[0] }}"
>>>>
>>>> This way to proceed do work but I have to duplicate all pre_tasks and 
>>>> variables, is there a way to say I want to run for sure the tomweb role 
>>>> first if the line with this module is present in the inventory file ?
>>>> And so have only one play in my playbook ?
>>>>
>>>> regards
>>>>
>>>

-- 
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-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/50260e1b-be45-47c2-a530-31c8486fac6a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to