首页 > 解决方案 > 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

但它总是跳过条件评估。

任何帮助,将不胜感激。

标签: ansible

解决方案


推荐阅读