2016-10-21 8 views
1

В моем сценарии у меня есть инвентарь из трех машин localhost, host2 и host3. Я хочу запустить некоторые задачи/команды на хост-3, в то время как моя незанятая пьеса по-прежнему воспроизводится на хосте2 без переключения с host2 на host3 - это возможно? Я могу использовать модуль local_action, но он запускает задачи на localhost, но я хочу, чтобы команда выполнялась на host3, а я на host2. Было бы здорово, если бы кто-то мог дать указатели. Ниже можно объяснить то, что я пытаюсь достичь:Хотите запустить выполняемые задачи на удаленном хосте

- name: Playing host2 
    hosts: host2 
    become: yes 
    tasks: 
    - name: run following commands on host3 
     local_action: command <command1 for host3> 
     local_action: command <command2 for host3> 
    - name: continue to run host2 
     command: <command for host2> 

Есть ли замена для local_action таким образом, что я могу запускать команды на host3 и не на 127.0.0.1?

Большое спасибо, Дипак

ответ

2

Вы можете использовать delegate_to в этом случае. В случае, если вы работаете на вашу игру на одном хосте (один хост упоминается в «хозяине:») вы можете просто использовать delegate_to делегировать определенную команду на другой машине:

- name: Playing host2 
    hosts: host2 
    become: yes 
    tasks: 
    - name: run following commands on localhost. 
     shell: hostname 
     delegate_to: 127.0.0.1 

    - name: continue to run host2 
     shell: hostname 

Кроме того, если ваш целевой список имеет группу узлов (указанной группы в «хозяев:»), в этом случае наряду с delegate_to, вы должны использовать run_once, а также:

- name: Playing on group of hosts. 
    hosts: someGroup 
    become: yes 
    tasks: 
    - name: run following commands on localhost. 
     shell: hostname 
     delegate_to: 127.0.0.1 
     run_once: true 

    - name: continue to run on group hosts. 
     shell: hostname 

Edit: аутентификацию без пароля будет использоваться при подключении к host3 от локальный. Поэтому убедитесь, что вы уже настроили проверку подлинности на основе ключа.

Примечание: вы можете всегда воспроизводить несколько пьес в одной пьесе. Поэтому, если у вас есть набор команд для запуска на host2, а затем набор команд для запуска на хост-3, я бы предложил использовать несколько пьес в одиночной пьесе.

+0

Спасибо @ Shasha99 за ваш ответ. –

+0

В моем случае у меня есть Localhost, который используется как незаменимый хост, где я использую его для запуска своих плейбуков. Что по очереди создает для меня новые хосты (host2 и host3). Я хочу запустить команды на хосте3, а затем вернуться к host2. Я попытался использовать delegate_to: host3, но потом мне не удалось подключиться к хосту через ssh. Я не хочу запускать какие-либо команды на localhost. Примеры, о которых вы упоминали, я думаю, хорошо работает, если я хочу делегировать задачи на localhost, но в моем случае я не хочу делегировать locahost. Любая идея, как я могу избавиться от ошибки ssh, которую я получаю в этом случае? Спасибо снова –

+0

'-name: play host2 –

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