Я хотел бы добавить также решение для Cygwin :
Вам нужно установить пакет python2-devel
или python3-devel
, в зависимости от версии Python, которую вы с помощью.
Вы можете быстро установить его с помощью 32-битного или 64-битного setup.exe
(в зависимости от вашей установки) из Cygwin. com .
Пример (измените имя файла setup.exe
и основную версию Python, если вам нужно):
$ setup.exe -q --packages=python3-devel
Вы также можете проверить мои другие answer еще несколько вариантов установки пакетов Cygwin из командной строки.
Вариант будет
Например, учитывая хостов
[test]
test01 cluster_number='1'
test02 cluster_number='1'
test03 cluster_number='1'
test04 cluster_number='1'
test05 cluster_number='1'
test06 cluster_number='2'
test07 cluster_number='2'
test08 cluster_number='2'
test09 cluster_number='3'
test10 cluster_number='3'
[test:vars]
cluster_numbers=['1','2','3']
, следующая книга воспроизведения
- hosts: all
gather_facts: no
tasks:
- group_by: key=cluster_{{ cluster_number }}
- debug: var=groups['cluster_{{ item }}'][0]
loop: "{{ cluster_numbers }}"
run_once: true
дает
> ansible-playbook test.yml | grep groups
"groups['cluster_1'][0]": "test01",
"groups['cluster_2'][0]": "test06",
"groups['cluster_3'][0]": "test09",
выполнить задачи в целях include_tasks (вместо отладки в цикле выше) и делегат_ в цели
- set_fact:
my_group: "cluster_{{ item }}"
- command: hostname
delegate_to: "{{ groups[my_group][0] }}"
Примечание: собрать список cluster_numbers [1110 ] из инвентаря
cluster_numbers: "{{ hostvars|json_query('*.cluster_number')|unique }}"
Если вы не возражаете, загромождение логов в игре, вот один из способов:
- hosts: all
gather_facts: no
serial: 1
tasks:
- group_by:
key: "single_{{ cluster_number }}"
when: groups['single_'+cluster_number] | default([]) | count == 0
- hosts: single_*
gather_facts: no
tasks:
- debug:
msg: "{{ inventory_hostname }}"
serial: 1
крайне важно в первой игре переоценить оператор when
для каждого хоста.
После первой игры у вас будет N групп для каждого кластера, в котором будет только один хост.