Ansible如何根据目标文件夹名称选择用于下载的链接?

时间:2019-07-12 16:50:32

标签: ansible

我必须使用可下载的最新版本的软件来升级多台服务器,并将其解压缩。子目录中的每个文件夹都显示应下载的软件类型。我不知道如何根据文件夹名称自动执行下载正确文件的过程

在服务器上执行其他任务后,我必须下载并解压缩该软件。我有他们需要的每个目录和每种软件的路径。我有一个指向每个可下载文件的链接的json文件。我打算将子目录名称映射到软件类型,然后下载该类型下的链接

文件路径:

- name: "Create a list of all bars in the foo folder"
      - find:
          paths: /usr/local/foo/bar/
          recurse: no
          file_type: directory
          register: bar

- name: "Filter the list of subbars to just the directories"
      set_fact:
        bar_list: "{{ item }}"
      with_items:
       - "{{ bar.files | map(attribute='path') | list }}"

这将产生如下列表:/usr/local/foo/bar/examplebar

下载类型命名为子目录的路径:

- name: "Create a list of bars and their subbars"
      find:
        paths: "{{ bar_list }}"
        recurse: no
        file_type: directory
      register: bardirectory

- name: "Filter the list of subbars to just their directories"
      set_fact:
       bar_filtered: "{{ item }}"
      with_items:
       - "{{ bardirectory.files | map(attribute='path') | list }}"

这将产生如下列表:/usr/local/foo/bar/examplebar / examplesoftware1

带有链接的JSON文件:

    [
      var type, version, link;
      {
        "type": "examplesoftware1",
        "version": "examplesoftware1V2",
        "link": "https://www.link1.zip",
      }
      {
        "type": "examplesoftware1",
        "version": "examplesoftware2V2",
        "link": "https://www.link2.zip",
      }
      {
        "type": "examplesoftware1",
        "version": "examplesoftware3V2",
        "link": "https://www.link3.zip",
      }
    ]

我不确定从这里去哪里。我有目标文件夹的路径,但是我不知道如何将它们映射到JSON文件并下载存储在其中的链接。

0 个答案:

没有答案