Ansible - 将同一文件复制到许多不同的路径

问题描述 投票:0回答:1

我想将 Ansible 控制器中存储的文件复制到大约 50 个节点,每个节点包含 3 - 5 个不同的 Web 应用程序,每个应用程序都有不同的文件路径。

Ex: source file /home/user/file
    destination: /home/user/webapps/webapp_name/file
                 /home/user/webapps/webapp_name2/file 
                 /home/user/webapps/webapp_name3/file

文件已隐藏

路径中唯一的区别是 Web 应用程序名称。

我该怎么做?

我尝试过通过此播放存储文件路径:

- name: Replace file
  hosts: webservers
  tasks:
    - name: Find File Path
      ansible.builtin.find:
        paths: /home/user/webapps/*
        patterns: '*.file'
        recurse: yes
        file_type: file
        hidden: true
        register: file_paths
    - name: Create Path Dictionary
      set_fact:
        path: "{{ dict(path|zip(paths)) }}"
      vars:
        paths: "{{ file_paths.results| map(attribute='files')|list }}"

然后使用复制模块,但我无法存储任何路径以用作变量

ansible blackberry-playbook
1个回答
0
投票

您想要做的事情的描述与您在剧本中显然试图做的事情有点不同。忽略剧本并专注于描述,这样的事情可能会达到您想要的效果:

- name: Distribute file
  hosts: all
  gather_facts: false
  tasks:
    - name: Find webapp directories
      ansible.builtin.find:
        paths: /home/user/webapps/
        file_type: directory
        depth: 1
      register: file_paths

    - name: Copy file into webapps
      copy:
        src: myfile
        dest: "{{ item.path }}/myfile"
      loop: "{{ file_paths.files }}"

这会在

/home/user/webapp
目录中构建目录列表,然后将本地文件
myfile
复制到每个 webapp 目录中。

© www.soinside.com 2019 - 2024. All rights reserved.