Up to now I think the best would be generate "temporary" host list 
(group_by).
You may intersect them later with other groups

However I do not like the idea of defining "hosts: xxxx" more than once in 
a playbook.


I did post the idea first in the topic:
How to list all currently targeted hosts in an Ansible play
http://stackoverflow.com/questions/28709501/how-to-list-all-currently-targeted-hosts-in-an-ansible-play


Playbook:

---
- hosts: all

  tasks:
    - name: Create a group of all hosts by app_type
      group_by: key={{app_type}}

    - debug: msg="groups={{groups}}"
      run_once: true

- hosts: web:&some_other_group

  tasks:
   - debug: msg="play_hosts={{play_hosts}}"
     run_once: true

would result in

TASK: [Create a group of all hosts by app_type] *******************************
changed: [web1] => {"changed": true, "groups": {"web": ["web1", "web2"], 
"load_balancer": ["web3"]}}

TASK: [debug msg="play_hosts={{play_hosts}}"] *********************************
ok: [web1] => {
    "msg": "play_hosts=['web1']"
}

inventory:

[proxy]
web1 app_type=web
web2 app_type=web
web3 app_type=load_balancer

[some_other_group]
web1
web3



W dniu niedziela, 22 lutego 2015 17:24:49 UTC+1 użytkownik sirkubax napisał:
>
> *This is a question of good practise:*
>
> I do have logic "Lines" on a way from my LB to Backend
>
> [LineA]
>> proxyA         app_type=proxy
>> frontendA       app_type=frontend
>> middlewareA       app_type=middleware
>>
>  
>
>> [LineB]
>> proxyB         app_type=proxy
>> ...
>
>
>
> Since the apps are more complex than simple apache start stop. i did write 
> custom modules  with required logic to controll them:
>
>
>> *proxysrv: with actions [suspend, activate]**restart: with actions 
>> [start, stop, restart], and app_type arguments [frontend, middleware]*
>
>
>
> The tasks have to be played in certain order (suspend proxy, restart 
> frontends and middleware, activate proxy)
> Now I can have a play like:
>
> ---
>> - hosts: LineA
>> - tasks:
>>    - name:
>>      proxysrv: action=suspend, when app_type =='proxy'
>>    - name:
>>       restart: action=restart, app_type=frontend, when app_type 
>> =='frontend'
>>    - name:
>>       restart: action=restart, app_type=middleware, when app_type 
>> =='middleware'
>>    - name:
>>       proxysrv: action=activate, when app_type =='proxy'
>
>
>
>
> I don't like the "skipped" message during the run of a playbook, and the 
> numbers in the final play statistics, that count the skipped hosts (as not 
> changed).
>
>
> *This is a question of good practise:*
> How would You create dependencies, that would apply specialized tasks on a 
> subset of Your hosts group.
>
> I guess that better way to solve the problem would be the use of 
> *delegate_to* (probably with "*with_items*" or "*tags*"). 
> I could register the 'proxy_hosts', 'frontend_hosts', 'middleware_hosts' 
> variables during an execution of the play and run tasks against them.
> I do not see yet use of tags here, the example would be nice.
> Any better idea?
>
> What about roles. I would like to have a roles (proxy, restart role) and 
> run them against subset of a hosts.
>  
>

-- 
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/da547c13-f071-46c2-86d6-2a0fab76b88f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to