2017-04-07 46 views
1

我想在Ansible中運行一個循環,其中定義了變量中的次數。這可能以某種方式嗎?

想象一下服務器列表,我們希望在每臺服務器上創建一些編號的文件。這些值在vars.yml定義:

server_list: 
    server1: 
    name: server1 
    os: Linux 
    num_files: 3 
    server2: 
    name: server2 
    os: Linux 
    num_files: 2 

我想要的輸出是文件/tmp/1/tmp/2/tmp/3都在Server1上,/tmp/1創建和/tmp/2的Server2上創建的。我曾嘗試使用with_nestedwith_dictwith_subelements寫一個劇本,但我似乎無法找到任何方式,以這樣的:

- hosts: "{{ target }}" 

    tasks: 

    - name: Load vars 
     include_vars: vars.yml 

    - name: Create files 
     command: touch /tmp/{{ loop_index? }} 
     with_dict: {{ server_list[target] }} 
     loop_control: 
     loop_var: {{ item.value.num_files }} 

如果我需要每個服務器上創建50個文件,我可以看到我怎麼可能如果我要爲每個有50個項目的服務器列出一個列表變量,這個列表變量只是數字1到50,那麼這樣做,但這是對Ansible的一種自我失敗的使用。

回答

2

有一個在文檔的一章:Looping over Integer Sequences

您的任務:

- file: 
    state: touch 
    path: /tmp/{{ item }} 
    with_sequence: start=1 end={{ server_list[target].num_files }}