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

cda*_*nge 3 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 ...
Run Code Online (Sandbox Code Playgroud)

小智 12

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

您可以使用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'] }}"
Run Code Online (Sandbox Code Playgroud)

请注意,connection: local它仅用于本地测试目的.