标签:
1. inventory hosts file 中的server 变量会覆盖group变量.
hostvars: { "iaas_name": "test", "inventory_hostname": "hostname....", "inventory_hostname_short": "hostname....", "hostname....": { "passvar": { "changed": true, "cmd": [ "echo", "123" ], "delta": "0:00:00.004135", "end": "2016-05-10 13:02:51.363078", "invocation": { "module_args": "echo 123", "module_complex_args": {}, "module_name": "command" }, "rc": 0, "start": "2016-05-10 13:02:51.358943", "stderr": "", "stdout": "123", "stdout_lines": [ "123" ], "warnings": [] } }, }
"iaas_name" 这个变量是group中的值, 这个值在hostvars中的第一级变量中. 这个变量并没有merge到"hostname...."中
2. hostvars中包含了说有执行过gather_facts的server的facts.
--- - name: test hosts: all gather_facts: no vars: xiama: "------------------------" tasks: - command: echo 123 register: passvar - name: test hosts: masters gather_facts: no tasks: - debug: var=hostvars - debug: var=groups[‘masters‘][0]
在第二步中的debug中, hostvars包含了所有机器的facts, 可以在下面的steps中引用hostvars[groups.masters[0]].变量名. 这样就可以使用
Note 1 "passvar" 这个变量是register产生的, 类似于机器的facts, 会在playbook的整个生命周期中使用, hostvars[groups.masters[0]].passvar
Note 2 但是vars产生的"xiama" 不会存在于下一个playbook中
Note 3 可以通过set_fact模块来设置机器的fact, 并且永久生效.
关于hostvars的结构, 可以直接在playbook中使用hostvars下面的一级变量, 也可以用hostvars.变量名, 或者字典hostvars[‘变量名‘] 来引用. 不能直接使用二级变量中的变量.
标签:
原文地址:http://www.cnblogs.com/v394435982/p/5480758.html