用ansible上的项目通知
我正在从一个url下载zip文件,我正在使用with_items作为该位置的zip文件列表,我只想为下载的文件执行一项任务(提取)。由于我是ansible的新手,除了使用with_items下载文件外,我想不出其他方法,但我不知道如何在此处使用notify,如果我使用notify below with_items,它将如何仅调用它下载的文件。总之,我想下载更改后的zip文件,只提取下载的文件,只安装提取的文件。既然with_项目中列出了所有文件,我如何在ansible中实现此工作流用ansible上的项目通知,ansible,Ansible,我正在从一个url下载zip文件,我正在使用with_items作为该位置的zip文件列表,我只想为下载的文件执行一项任务(提取)。由于我是ansible的新手,除了使用with_items下载文件外,我想不出其他方法,但我不知道如何在此处使用notify,如果我使用notify below with_items,它将如何仅调用它下载的文件。总之,我想下载更改后的zip文件,只提取下载的文件,只安装提取的文件。既然with_项目中列出了所有文件,我如何在ansible中实现此工作流 - name
- 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个任务,记录每个任务的结果,并在何时使用..这是正确的方法吗?是的,这正是我在回答中向您展示的。记录结果并在何时有选择地运行后续任务。