如何解决字典问题:
我使用了一个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 举报,一经查实,本站将立刻删除。