2016-05-23 3 views
2

Я использую ansible 2.1, и я хочу запустить команду для группы хостов, используя делегат_to. Я использую локальный в качестве принимающих пар, и я хочу, чтобы делегировать команду «потрогать» для обоего ЦБСОВ хостов У меня есть следующийВозможная делегирование другим хостам

--- 
- hosts: ansible 
# gather_facts: yes 

    tasks: 
    - debug: var=groups.cls 

    - name: touch a file to running host 
    shell: echo {{ item }} >> /tmp/{{ inventory_hostname }} 
    delegate_to: "{{ item }}" 
    with_items: "{{ groups.cls }}" 

с выходом:

[[email protected] control]# ansible-playbook -i inventory test.yml 

PLAY *************************************************************************** 

TASK [setup] ******************************************************************* 
ok: [ansible] 

TASK [debug] ******************************************************************* 
ok: [ansible] => { 
    "groups.cls": [ 
     "cls-host-1", 
     "cls-host-2" 
    ] 
} 

TASK [touch a file to running host] ******************************************** 
changed: [ansible -> cls-host-1] => (item=cls-host-1) 
changed: [ansible -> cls-host-2] => (item=cls-host-2) 

PLAY RECAP ********************************************************************* 
ansible     : ok=3 changed=1 unreachable=0 failed=0 

, но прикосновение делается только на первом хосте:

[[email protected] ~]# more /tmp/ansible 
cls-host-1 
cls-host-2 

Что-то не так? Могу ли я делегировать команду любым другим способом?

+0

Попробуйте 'with_items: groups.cls' вместо – sap1ens

+0

Попытка with_items: groups.cls Я получаю: [ПРЕДУПРЕЖДЕНИЕ О ДЕПРЕКАЦИИ]: Использование голых переменных устарело. Обновите свои плейбуки, чтобы значение среды использовало полный синтаксис переменных ('{{groups.cls}}'). Эта функция будет удалена в будущем выпуске. Предупреждения об устаревании можно отключить, установив deprecation_warnings = False в ansible.cfg. –

ответ

0

Я проверил вариант вашего сборника пьес с использованием анзибля 2.4.0.0:

#!/usr/bin/env ansible-playbook 

- hosts: stretch.fritz.box 
    tasks: 
    - name: touch 
    shell: echo {{item}} >>/tmp/{{inventory_hostname}} 
    delegate_to: "{{item}}" 
    with_items: 
     - jessie.fritz.box 
     - short.fritz.box 

Это работает отлично: сенсорный выполняются на Jessie и короткая

jessie$ cat /tmp/stretch.fritz.box 
jessie.fritz.box 

short$ cat /tmp/stretch.fritz.box 
short.fritz.box 

Возможно, эта особенность была введенный в разделе «Без изменений» между 2.1 и 2.4.

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