如何在vagrant env中使用hostvars


一只特立独行的猪
2025-03-19 02:49:36 (4小时前)


我在使用hostvars将变量传递给流浪者环境中的另一个主机时遇到了麻烦,我做的代码是:

Vagrant.configure(“2”)执行| config |

config.vm.define“server_1”do | server_1 |


2 条回复
  1. 0# 绵绵 | 2019-08-31 10-32



    你想要的是一个针对服务器和工作者的单一剧本,匹配他们的主机模式,因为这样只有一个

    单一的ansible运行

    与现在发生的情况相比,ansible正在运行两次,每个主机运行一次。从而:



    1.   - hosts: server*
    2. tasks:

        • set_fact: hello=world
        • hosts: worker*
          tasks:

          • debug:
            msg: “{{ hostvars[“server_1”][“hello”] }}”




      并在最后调用,就像你在这里看到的:

      https://github.com/kubernetes-sigs/kubespray/blob/v2.8.3/Vagrantfile#L177-L193



      我还没有研究Vagrant是否会为你写出一个库存文件,或者是什么,但如果你需要一个例子,kubespray也会从所有已知的vms生成一个库存文件:

      https://github.com/kubernetes-sigs/kubespray/blob/v2.8.3/Vagrantfile#L69-L75



      如果你不喜欢这种方法,你也可以使用

      事实缓存插件

      使ansible以工作者可以读入的方式为主机写出事实缓存,但是你可能会怀疑,这是一个


      </强>
      更多的工作。


    登录 后才能参与评论