代码之家  ›  专栏  ›  技术社区  ›  DaeYoung

如何将单个Ansible剧本中with_items中的预定多个文件复制到不同的目标位置?

  •  0
  • DaeYoung  · 技术社区  · 4 年前

    请耐心听我说,我是新来的 Ansible 我有一个 tasks/main.yml 像这样的文件是增强的一部分。现在,我必须为每个文件分别执行一个剧本来复制 A.jar B.jar 一次一个。但是,我试图创建一个数组来包含 A and B jar 提前创建文件,并逐一处理,将其复制到本剧本中的两个不同目标文件夹,但语法很困难。希望重复使用 with_items .

    - name: Copy 
     copy:
       src: "/somePath/{{ name }}.jar"
       dest: "{{ item }}"
       remote_src: yes
     with_items:
       - "/pathTo/foo/"
       - "/pathTo/bar/"
    
    # /pathTo/foo
    A.jar
    B.jar
    
    # /pathTo/bar
    A.jar
    B.jar
    
    0 回复  |  直到 4 年前
        1
  •  0
  •   franklinsijo    4 年前

    您可以使用 with_nested 对于循环,

    - name: Copy 
      copy:
       src: "/somePath/{{ item[0] }}"
       dest: "{{ item[1] }}"
       remote_src: yes
      with_nested:
       - [ "A.jar", "B.jar" ]
       - [ "/pathTo/foo/", "/pathTo/bar/" ]
    

    这会迭代每个列表中的每个元素,以复制所有源文件( A.jar B.jar )从第一列表到第二列表中列出的所有目标目录。