仅在本地主机上运行一次任务

时间:2019-06-20 14:44:21

标签: ansible

我有一本可在许多服务器上运行的剧本(例如10本)。前三个任务将在远程服务器上运行。合并的最后一个任务是在localhost(可运行的服务器)上完成的 当我运行此剧本时,每次都会发生10次合并。我希望仅在所有服务器上完成上述所有任务后,一次执行合并任务。请告知。

---
- name: Find the location 
  ....  
- name: Extract details
  ....  
- name: Create csv file
  ....
- name: Merge files
  ....
  delegate_to: localhost 

2 个答案:

答案 0 :(得分:0)

创建一个在远程服务器上运行的包含“查找”,“提取”,“创建”的块, 另一个包含“合并”的块仅在本地主机上运行

首选方法是为第一个块创建一个角色,为第二个块创建另一个角色并在剧本中使用:

- hosts: my_servers
  roles:
    - find_extract_create

- hosts: local_node
  roles:
    - merge

答案 1 :(得分:0)

- hosts: a.whole.bunch
  tasks:
  - name: do this on every host
    command: hostname
  - name: do this once on localhost
    command: hostname
    delegate_to: localhost
    run_once: true