2015-03-31 70 views
2

我對自己的懶惰有一個問題。組中的主機之間的列表Distrubute元素(可行)

我有一個類似的任務要做的列表。它們只有名稱不同。假設它是一個文件夾名稱。

--- 
- vars: 
    folders: 
    - folder1 
    - folder2 
    - etc 
    hosts: 
    - host1 
    - host2 
    - etc 

我想以某種方式在主機之間分發「文件夾」。例如循環法。

我想在角色的劇本是這樣的:

- name: Create folder 
    file: path={{item}} state=directory 
    use_next_from: folders 

我怎樣才能表達「use_next_from」的ansible?謝謝!

回答

0

如果你只是想在一堆主機創建一批文件夾,那麼你真的只需要建立一個經常性的工作,並在所有主機上運行它:

- hosts: all 
    tasks: 
    - name: create folder 
     file: path={{ item }} state=directory 
     with_items: folders 

如果你需要創建一個如果你想要做的事「循環」的風格,那麼這將是困難得多

vars: 
    folders: 
     - folder1 
     - folder2 
    files: 
     - file1 
     - file2 

tasks: 
    - name: create folder 
     file: path={{ item }} state=directory 
     with_items: folders 

    - name: create files in each folder 
     file: path={{ item[0] }}/{{ item[1] }} state=touch 
     with_nested: 
     - folders 
     - files 

:嵌套循環做每臺主機上更復雜的東西,那麼你可以使用with_nested結構。 Ansible設計用於在所有定義的主機上執行所有任務。你可能需要做一些相當複雜的事情:

vars: 
    folders: 
     - folder1 
     - folder2 
    files: 
     - file1 
     - file2 
tasks: 
    - name: create folder 
     file: path={{ item[0] }} state=directory 
     when: ansible_inventory_hostname == item[1] 
     with_nested: 
     - folders 
     - hosts 
+0

嗯,我知道循環,但我想要一個自動分配。分配一個或多個「文件夾」到「主機」。 – 2015-04-01 22:01:50

0

你想循環。 RTM on loops

如果布魯斯的帖子沒有回答你的問題,那麼也許你想要Looping over Parallel Sets of Data

+0

Em ...這不是關於循環,它是關於從組中的每個下一個主機從列表中選擇一個項目... – 2015-04-01 22:02:25

+0

你需要的東西遠非明確。可能是一個例子會幫助.. – Kashyap 2015-04-01 22:58:14