2016-07-25 3 views
1

Предположим, что группа имеет 10 хостов.
Как запустить сборник пьес на N хостов из 10. N является произвольным числом от 1 до 10.
Пример:Несущий. Как выбрать N хостов из группы

- hosts: groups['group_name'][1:3] it works. 

Но это не работает, если вместо 3 я использую переменную, как этот

- hosts: groups['group_name'][1:N] 

Это может быть случайный N, первый N, последний N, что когда-либо.

спасибо.

+0

Я ответил на аналогичный вопрос [здесь] (http://stackoverflow.com/a/38264504/2795592). Вы можете сформировать любую группу динамически. Вы можете использовать 'when: play_hosts.index (inventory_hostname)

+0

К сожалению, это не работает. Та же проблема. Если когда: play_hosts.index (inventory_hostname) <2 - это работает. Если my_N_var - это не – user3419308

+0

Как вы передаете свою переменную в playbook? вы пробовали '-e my_N_var = 3'? –

ответ

1

Эта работа абсолютно нормально в анзибль 2.1:

--- 
- hosts: all 
    gather_facts: no 
    tasks: 
    - group_by: key=limited_selection 
     when: play_hosts.index(inventory_hostname) < max_index | int 

- hosts: limited_selection 
    gather_facts: no 
    tasks: 
    - debug: msg="I'm in the limited selection group!" 

Exec как это: ansible-playbook -e max_index=3 playbook.yml или определить max_index где-то в другом месте.

Смежные вопросы