ansible - var.results 的 Ansible 寄存器变量迭代问题
问题描述
下面是在寄存器变量中保存值的代码:
- name: "Install Msi on the Server - {{item.app_name}}"
win_package:
path: d:\temp_deploy\{{servergroup_variable}}_{{release_variable}}.{{build_variable}}\{{ item.app_name }}_{{ item.app_expectedversion }}.msi
state: present
arguments: "INSTALLDIR={{ item.app_installPath }} SELECTEDREGION={{ environment_variable }} ALLUSERS=1 /L*V c:\\log\\Deployment-{{ item.app_name }}.log"
retries: 3
register: task_result
until: task_result.failed == true
when: (item.app_type == "webService") or
(item.app_type == "Service" )
ignore_errors: yes
register: msi_deploy_var
在我运行之后msi_deploy_var
,它拥有以下结果:
ok: [server1] => {
"msg": {
"changed": false,
"failed": false,
"reboot_required": false
}
}
ok: [server2] => {
"msg": {
"changed": true,
"failed": false,
"rc": 0,
"reboot_required": false
}
}
现在真正的问题开始了——当我尝试迭代时,msi_deploy_var
它按预期工作。
- name: "Validate Success deploy - {{item.app_name}}"
set_fact:
msi_deploy_result: "{{msi_deploy_result + [item.app_name]}}"
when: (inner_item.rc is defined) and (inner_item.rc != 0)
with_items: "{{ msi_deploy_var.results }}"
loop_control:
loop_var: inner_item
但它总是跳过条件评估。
任何帮助,将不胜感激。
解决方案
推荐阅读
- c++ - 在 C++ 中,ifstream 在一行中什么也不读取
- ios - 从公共 API 获取 JSON 以在 SwiftUI 的列表视图中呈现
- python - 如何在 OpenCV Python 中识别图像中的不同对象
- bash - 截断/删除通过输出重定向生成的日志文件内容“>”
- c++ - Xcode:包含额外的 .h 和 .c 文件,用于链接代码
- angular - 部署在 S3 上的 Angular 2+ 应用程序会出现路由问题
- javascript - Gridsome 构建失败并出现 TypeError
- c# - 坏设备令牌苹果推送通知
- go-gorm - 存在时更新数据库 golang
- javascript - 如何在 html 文件中声明一个全局变量,该变量可以被另一个 html 文件以及同一个项目使用