首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在游戏的稍后点调用Ansible hostvars组变量

在游戏的稍后点调用Ansible hostvars组变量
EN

Server Fault用户
提问于 2019-02-20 17:12:27
回答 1查看 1.3K关注 0票数 0

在我的剧本中,我为一组机器创建了一个变量--应用程序。即用户db_password的密码。它只是在小组的应用程序在这一点上。

在播放的后面的一段时间里,我正在尝试回忆这个变量,用于使用hostvars属于不同组的不同主机集。我尝试过许多事情,但似乎不起作用。下面是主要的剧本,以及被调用的两个角色的main.yml。

我的问题是,当我尝试在db服务器上调试db_password时,它将不会显示它的变量。我认为我在正确的轨道上的主机概念,但开放给新的想法。我知道我也可以将set_fact db_password的输出写到一个文件中,然后将它移动到db服务器并从中读取它,但我正在尝试将其保存在这个剧本中。任何想法和帮助都是非常感谢的。

代码语言:javascript
复制
- 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

代码语言:javascript
复制
- 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: present

main.yml for test_db

代码语言:javascript
复制
- name: show var
  debug: "{{ hostvars[groups['apps'][0]]['db_password'] }}"

当前的错误,我看到的是我期待密码返回,而不是你好世界。

代码语言:javascript
复制
 TASK [test_db : show var] 
 ok: [server104] => {
 "msg": "Hello world!"
EN

回答 1

Server Fault用户

发布于 2019-02-20 19:47:27

压痕是错误的。正确的缩进在下面

代码语言:javascript
复制
- hosts: apps
  roles:
    - { role: test_app}
- hosts: db
  roles:
    - { role: test_db }

代码语言:javascript
复制
- name: "Setup TPMS {{ app_server_hostname }} | GENERATE password"
  set_fact:
    db_password: ...
    chars: ...

代码语言:javascript
复制
- name: user create
  user:
    name: testing
    update_password: always
    password: "{{ db_password}}"
    state: present
票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/954944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档