2017-01-04 7 views
1

Я хочу знать, возможно ли развернуть 6 различных задач параллельно (3 | 3) для 2 разных хостов в ansible 2.2.0, потому что у меня возникают проблемы, запускающие их параллельно с одной пьесы, они просто работают секвенциально.running parallel different taks Ansible 2.2.0

ответ

0

Вы можете сделать это с помощью async задач. Что-то вроде этого:

- hosts: host1,host2 
    tasks: 
    - command: /task1a.sh 
     async: 1000 
     poll: 0 
     register: task1a 
     when: inventory_hostname == 'host1' 
    - command: /task1b.sh 
     async: 1000 
     poll: 0 
     register: task1b 
     when: inventory_hostname == 'host2' 
    # ... repeat for tasks 2 and 3 
    - command: /check_done.sh 
     register: check_done 
     until: check_done | success 
     retries: 30 

Это запустит task1a.sh и task1b.sh в асинхронном рабочих мест на host1 и host2 соответственно, а затем ждать check_done.sh вернуться к нулю.

+0

Благодарим вас за ответ, но моя проблема - 6 различных задач, выполняющихся на 2 хостах (3 на хосте 1 и еще 3 на хосте 2), а не 3 разных задания, выполняющихся на 2 хостах. – famg

+0

Я обновил ответ –

0

Вы можете увидеть strategy: free в сочетании с when: inventory_hostname == 'hostXX', например:

- hosts: all 
    strategy: free 
    tasks: 
    - block: 
     - name: task1 
      ... 
     - name: task2 
      ... 
     - name: task3 
      ... 
     when: inventory_hostname == 'host1' 

    - block: 
     - name: task4 
      ... 
     - name: task5 
      ... 
     - name: task6 
      ... 
     when: inventory_hostname == 'host2' 

strategy: free означает, что все задачи будут выполняться на всех узлах параллельно так же быстро, как они могут, не дожидаясь каждой задачи, чтобы закончить на каждом хост. Какая задача будет выполняться на том, какой хост принимается в соответствии с пунктом when.

Я block здесь, так что вам нужно только написать один when для каждого блока, но вы не должны использовать его, вы можете написать when по каждой задаче.

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

  • Нет связанных вопросов^_^