2017-10-06 9 views
0

나는 목록 (with_items)을 반복하고 명령을 실행하는 상황이 있습니다. 그러나 첫 번째 항목이 모든 호스트에서 완료되지 않으면 다음 항목을 시작할 수 없습니다. 반복 할 항목의 양은 엄청납니다. 그러나 사용중인 항목에 대해 호스트에 드리프트가 없어야합니다. 항목 1이 전체 호스트 풀에서 완료되지 않으면 항목 2를 시작해야합니다. 호스트와 순차적으로 with_items 가능

내가 my_test_script.sh가 어떤 일을 실행에 속도가 느려질 수 있습니다 시뮬레이션 각 호스트에서 다른 수면 (X)가 다음

- name: proof of concept 
    command: bash -c /home/user/my_test_script.sh 
    with_items: 
    - item_1 
    - item_2 
    .... 
    - item_n 

을 달성 할 수 있도록 노력하겠습니다 개념 증명을 만듭니다.

나는 wait_for, wait_until 등에서 이미 살펴 봤지만 아직 병렬 작업 (with_items)을 실행하는 솔루션을 찾지 못했다. (목록의 각 항목에 대해) '동기화'되어있다. rsync가 아님).

도움을 주시면 감사하겠습니다.

답변

0

관련 항목 : Ansible: How to iterate over an role with an array?.

Ansible 2.3.0 이상을 사용하는 경우 include_role을 확인하십시오. 가변 매개 변수로 스크립트를 호출 할 역할을 작성할 수 있습니다. 그런 다음 귀하의 플레이 북이 역할을 반복 할 수 있습니다.

역할 :

가 각본
- name: proof of concept 
    command: bash -c /home/user/my_test_script.sh {{ script_param }} 

:

- include_role: 
     name: test_script 
    with_items: 
    - item1 
    - item2 
    - item3 
    vars: 
     script_param: "{{ item }}" 
+0

이 역할 내에서이 또한 가능 (즉, 내 현재 상황) – Benjamin

+0

는 물론, 당신의 역할에 바닥 작업을 넣어 그 '외설 t'test_script'. – kfreezy