用ansible上的项目通知

用ansible上的项目通知,ansible,Ansible,我正在从一个url下载zip文件,我正在使用with_items作为该位置的zip文件列表,我只想为下载的文件执行一项任务(提取)。由于我是ansible的新手,除了使用with_items下载文件外,我想不出其他方法,但我不知道如何在此处使用notify,如果我使用notify below with_items,它将如何仅调用它下载的文件。总之,我想下载更改后的zip文件,只提取下载的文件,只安装提取的文件。既然with_项目中列出了所有文件,我如何在ansible中实现此工作流 - name

我正在从一个url下载zip文件,我正在使用with_items作为该位置的zip文件列表,我只想为下载的文件执行一项任务(提取)。由于我是ansible的新手,除了使用with_items下载文件外,我想不出其他方法,但我不知道如何在此处使用notify,如果我使用notify below with_items,它将如何仅调用它下载的文件。总之,我想下载更改后的zip文件,只提取下载的文件,只安装提取的文件。既然with_项目中列出了所有文件,我如何在ansible中实现此工作流

- name: Download all files 
     get_url: url=http://url.com/{{ item }} dest=/home/user/downloads/{{ item }}  force=no
     with_items:
       - 1.zip
       - 2.zip
       - 3.zip

这有用吗?它首先下载文件,然后解压缩它们

    - hosts: all
      vars:
        - files:
           - 1.zip
           - 2.zip
           - 3.zip
      tasks:
       - name: Download all files 
           get_url: url=http://url.com/{{ item }} dest=/home/user/downloads/{{ item }}  force=no
         with_items: "{{ files }}"

       - name: extracting downloaded files
         unarchive:
          src: {{ item }}.zip
          dest: /var/lib/foo
          remote_src: True
         with_items: "{{ files }}"
例如:

---
- hosts: localhost
  gather_facts: no
  tasks:
    - get_url:
        url: "{{ item }}"
        dest: /tmp/
      with_items:
        - https://yastatic.net/jquery/3.1.1/jquery.min.js
        - https://yastatic.net/react/15.0.1/react.min.js
      register: downloads
    - debug:
        msg: "{{ item.dest }}"
      when: item | changed
      with_items: "{{ downloads.results }}"

注册第一个任务的结果,并迭代结果而不是原始文件列表。循环结果每个项目的状态都已更改。你能给我一个如何执行的示例吗?@KonstantinSuvorov对此有什么帮助吗?这似乎是一个基本的结果,它能满足我的目的吗?感谢你花时间回答这个问题,但我不明白它的作用:(我有大约10个文件,我正在注册结果,我正在通过检查when:output.results[6]提取第6个文件。).changed==true,这是正确的方法吗?为什么需要引用第6个文件?只需循环output.results中的每个元素,并仅在
item.changed==true
时执行任务。假设我有10个文件,每个文件只有在下载时才需要复制,只有在下载时才需要提取,我如何连接这3个任务…现在我写了3个任务,记录每个任务的结果,并在何时使用..这是正确的方法吗?是的,这正是我在回答中向您展示的。记录结果并在何时有选择地运行后续任务。