ansible - 用 with_items 注册的 Ansible 变量,如何使用这个变量?
问题描述
我有这样一个场景,需要用到两个文件A.bin, B.bin
,先在files
目录下找,如果没找到,直接从服务器下载
- name: Send A.bin and B.bin
copy: src={{item}}.bin dest=/opt/
register: is_exist
failed_when: False
with_items:
- A
- B
- name: Download from a server A.bin, B.bin
shell: wget -P /opt/{{item.item}} {{base_url}}{{item.item}}.bin
when: item.item.exception is defined
with_items:
- is_exist.results
但这会报错:
The conditional check 'item.item.exception is defined' failed. The error was: error while evaluating conditional (item.item.exception is defined): 'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 'item'
我应该怎么办?
解决方案
我建议直观地查看is_exist
变量的结构。
- debug: msg="{{ is_exist }}"
然后,如果是预期的变量名,在测试它的键之前item.item.exception
总是检查它item.item
的定义以避免:has no attribute 'item'
exception
when: item.item is defined and item.item.exception is defined
推荐阅读
- java - 查询案例的 SQlite listview 结果
- python - Python:lst[(lst.index("search-term"))] = 函数体中的文章与返回
- r - 在 data.table 的子组内生成序列
- java - java.net.ConnectException:连接超时(连接超时)错误
- arrays - 验证是否基于列和行中的 2 个条件的单元格
- python - 如何使用从文件夹中读取的所有图像进行图像增强
- xamarin.forms - 如何*动态*改变 iOS/Android 的每种颜色?例如,在 Droid 代码中,覆盖“Styles.xml”中的“colorAccent”
- ubuntu-16.04 - 如何将 Devstack 浮动 ip 暴露给外部世界?
- azure - 有没有办法部署“已停止”的功能应用程序?
- php - 无法使 Xdebug 与 Visual Studio Code 一起工作