用特定键的dict值设置变量

时间:2019-07-03 15:15:35

标签: ansible

我有一个类似调试任务的字典:

ok: [node] => {
    "_res": {
        "changed": false, 
        "failed": false, 
        "msg": {
            "ansible_architecture": "64 bits", 
            "ansible_bios_date": "11/26/2012", 
            "ansible_bios_version": "Hyper-V UEFI Release v1.0", 
            "ansible_date_time": { ...

当我检查类型时:

- name: debug
  debug:
    var:  mydict | type_debug

ok: [node] => {
"mydict | type_debug": "dict"
}

例如,我想将ansible_bios_version的值转换为新事实。

我已经尝试过了:

- name: set facts
  set_fact:
    var: mydict | map(attribute='ansible_bios_version') | list
    var: mydict |selectattr("ansible_bios_version", "defined")|list|length >0
    var: mydict | selectattr("ansible_bios_version")|list
    ....

欢迎任何帮助

1 个答案:

答案 0 :(得分:0)

如果 mydict 如下

  mydict:
    _res:
      changed: false
      failed: false
      msg:
        ansible_architecture: 64 bits
        ansible_bios_date: 11/26/2012
        ansible_bios_version: Hyper-V UEFI Release v1.0
        ansible_date_time: ansible_date_time

然后执行以下任务

- set_fact:
    bios_ver: "{{ mydict._res.msg.ansible_bios_version }}"
- debug:
    var: bios_ver

给予

bios_ver: Hyper-V UEFI Release v1.0

这是您要找的吗?