如何使用vars_prompt

时间:2015-07-02 07:02:08

标签: 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 ...

1 个答案:

答案 0 :(得分:11)

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

您可以使用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仅用于本地测试目的。