如何循环Ansible $ var次数?

问题描述:

我想在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的一种自我失败的使用。

有一个在文档的一章:Looping over Integer Sequences

您的任务:

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