在我的剧本中,我为一组机器创建了一个变量--应用程序。即用户db_password的密码。它只是在小组的应用程序在这一点上。
在播放的后面的一段时间里,我正在尝试回忆这个变量,用于使用hostvars属于不同组的不同主机集。我尝试过许多事情,但似乎不起作用。下面是主要的剧本,以及被调用的两个角色的main.yml。
我的问题是,当我尝试在db服务器上调试db_password时,它将不会显示它的变量。我认为我在正确的轨道上的主机概念,但开放给新的想法。我知道我也可以将set_fact db_password的输出写到一个文件中,然后将它移动到db服务器并从中读取它,但我正在尝试将其保存在这个剧本中。任何想法和帮助都是非常感谢的。
- hosts: 127.0.0.1
connection: local
gather_facts: true
- hosts: apps
roles:
- { role: test_app}
- hosts: db
roles:
- { role: test_db }main.yml for test_app
- name: "Setup TPMS {{ app_server_hostname }} | GENERATE password"
set_fact: db_password={{lookup('password', '/dev/null
chars=ascii_letters,digits,hexdigits length=10')}}
- name: user create
user:
name: testing
update_password: always
password: "{{ db_password}}"
state: presentmain.yml for test_db
- name: show var
debug: "{{ hostvars[groups['apps'][0]]['db_password'] }}"当前的错误,我看到的是我期待密码返回,而不是你好世界。
TASK [test_db : show var]
ok: [server104] => {
"msg": "Hello world!"发布于 2019-02-20 19:47:27
压痕是错误的。正确的缩进在下面
- hosts: apps
roles:
- { role: test_app}
- hosts: db
roles:
- { role: test_db }。
- name: "Setup TPMS {{ app_server_hostname }} | GENERATE password"
set_fact:
db_password: ...
chars: ...。
- name: user create
user:
name: testing
update_password: always
password: "{{ db_password}}"
state: presenthttps://serverfault.com/questions/954944
复制相似问题