你想要的是一个针对服务器和工作者的单一剧本,匹配他们的主机模式,因为这样只有一个
单一的ansible运行
与现在发生的情况相比,ansible正在运行两次,每个主机运行一次。从而:
- hosts: server*
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以工作者可以读入的方式为主机写出事实缓存,但是你可能会怀疑,这是一个
的
吨
</强>
更多的工作。