微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

字典问题:

如何解决字典问题:

我使用了一个windos集群的逻辑名称,想找出主动节点和被动节点。使用var“ansible_hostname”这个事实很容易得到主动节点。为了找出被动节点的名称,我想到了将clusterpairs的节点名称写入字典。 lchost 是活动节点的小写主机名,这是有效的。 但是我无法从字典中获取被动节点的主机名。

---
- hosts: windows
  gather_facts: yes
  vars:
    cluster_peers:
      node1: node2
      node2: node1
  tasks:

  - name: set_fact when hostname in key
    set_fact: lchost={{ ansible_hostname|lower }}
  - debug:
      msg: "{{ lchost }}"
  - name: set_peername
    set_fact:  peername={{cluster_peers['lchost']}}
  - debug:
      msg: "{{ peername }}"

库存文件

[local]
localhost

[windows]
db-fish

输出

TASK [set_fact when hostname in key] ****************************************************************************************************************************************
ok: [db-fish]

TASK [debug] ****************************************************************************************************************************************************************
ok: [db-fish] => {
    "msg": "node1"
}

TASK [set_peername] *********************************************************************************************************************************************************
fatal: [db-fish]: Failed! => {"msg": "The task includes an option with an undefined variable. The error was: 'dict object' has no attribute 'lchost'\n\nThe error appears to be in '/home/admin/ansible/oracle_change_home/myexample4.yml': line 14,column 5,but may\nbe elsewhere in the file depending on the exact Syntax problem.\n\nThe offending line appears to be:\n\n      msg: \"{{ lchost }}\"\n  - name: set_peername\n    ^ here\n"}

PLAY RECAP ******************************************************************************************************************************************************************
db-fish                 : ok=3    changed=0    unreachable=0    Failed=1    skipped=0    rescued=0    ignored=0

[admin@ansible oracle_change_home]$

变量“peername”的期望输出应该是“node2”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。