ansible - 如何使用 vars_prompt 在主机之间共享 ansible 变量

标签 ansible

在ansible中,我在远程机器上做了一些代码,然后我想使用vars_prompt的结果再次在不同的主机上。我四处搜索,文档表明我应该使用 {{ hostvars.local_server_name_in_vagrant_group.local_username }} ,使用我下面的示例来设置上下文。但是,它说在引用 hostvars 时字典中的索引不存在。 .相反,如下所示,我只是做了一个 vars_prompt两次。总的!有小费吗?

顺便说一句,还有关于使用 vars_prompt 是否是一个好主意的讨论。我已经确认,对于我的使用,我确实想使用 vars_prompt。谢谢!

- hosts: vagrant
  vars_prompt:
    local_username: "enter your desired local username"

... remote task activity using local_username...

- hosts: localhost
  connection: local

  vars_prompt:
    local_username: "enter your desired local username, again (please)  

... host task activity, also using local_username ...

最佳答案

正如我在对问题的评论中所说:

您可以使用 set_facts 将您的变量注册为当前主机的事实,并从不同的主机访问它。我不认为标准变量存储在角色/任务之后。

这是一个例子:

    - name: First
      connection: local
      hosts: host1
      tasks:
        - name: register real root user to localhost facts
          set_fact: fact_for_host1="1"

    - name: Second
      connection: local
      hosts: host2
      tasks:
        - debug: msg="{{ hostvars['host1']['fact_for_host1'] }}"

请注意 connection: local仅用于本地测试目的。

关于ansible - 如何使用 vars_prompt 在主机之间共享 ansible 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31177635/

相关文章:

json - Ansible 中的自定义动态库存脚本/插件

python - 如何使用 Ansible Playbook 导入 python 文件?

php - Laravel 无法连接到 dockerise 数据库

ansible - 通过剧本根据主机运行不同的任务

ansible - 无论如何,是否可以更有效地以多个用户的身份运行多个 Ansible 剧本?

ansible - 我如何在 Ansible 版本之间切换?

git - 当 git clone 在远程服务器上工作时,无主模式下的 ansible git 任务失败

linux - Ansible:将文件复制到另一个用户的主目录

linux - ansible 卡在 "sudo yum install"' 步骤

ansible - Ansible 如何决定应用哪些 group_vars 文件?