【发布时间】:2019-02-18 00:47:57
【问题描述】:
我在 vagrant 环境中使用 hostvars 将变量传递给另一个主机时遇到问题,我所做的代码:
Vagrant.configure("2") do |config|
config.vm.define "server_1" do |server_1|
server_1.vm.hostname = "n1"
server_1.vm.box = "centos/7"
server_1.vm.network "public_network", bridge: "wlp1s0", ip: "192.168.0.50"
end
config.vm.define "worker_1" do |worker_1|
worker_1.vm.hostname = "n2"
worker_1.vm.box = "centos/7"
worker_1.vm.network "public_network", bridge: "wlp1s0", ip: "192.168.0.51"
end
config.vm.provider "virtualbox" do |vb|
vb.memory = 1024
end
config.vm.provision "ansible" do |ansible|
ansible.playbook = "t0a.yml"
end
end
t0a.yml
---
- hosts: server*
tasks:
- set_fact: hello=world
- hosts: worker*
tasks:
- debug:
msg: "{{ hostvars['server_1']['hello'] }}"
预期:
TASK [show] *******************************************************************
ok: [worker_1] => {
"msg": [
"works"
]
}
实际:
任务[调试] ******************************************* ************************* 致命的:[worker_1]:失败! => {"msg": "该任务包含一个带有未定义变量的选项。错误是:'ansible.vars.hostvars.HostVarsVars object' has no attribute 'hello'\n\n错误似乎出现在 '/ home/kayke/Documentos/vm-vagrant/provision-ansible/centos/t0_tests/t0a.yml':第 8 行,第 5 列,但可能\n位于文件中的其他位置,具体取决于确切的语法问题。\n\n违规行似乎是:\n\n 任务:\n - 调试:\n ^ 此处\n"}
【问题讨论】:
标签: ansible