我正在使用Ansible(本地)供应商进行我的Vagrant设置。是否有推荐的方式将环境变量传递给供应商?将环境变量传递给Vagrant供应商
例如,我想运行ENV=development vagrant up
并让流浪汉将环境变量ENV
传递给Ansible。
我试着用extra_vars
,从Vagrant documentation采取:
Vagrant.configure(2) do |vagrant|
# other configuration
vagrant.vm.provision :ansible_local do |ansible|
ansible.playbook = "ansible/server.yml"
ansible.extra_vars = {
env: ENV.fetch("ENV", "development")
}
end
end
然而,当我运行vagrant provision
(甚至没有使用Ansible的env
变量),我得到如下:
$ vagrant provision
==> default: Running provisioner: ansible_local...
default: Running ansible-playbook...
ERROR: Expecting property name: line 1 column 2 (char 1)
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.
删除ansible.extra_vars
修复此错误,但后来我无法完成我想要的。
看起来它应该可以工作,但我想知道是否有一个名为'ENV'的环境变量与Ruby或其他地方的某些东西可怕地发生了冲突。如果你尝试使用'ENV.fetch(“foobar”,“development”)',然后用'export foobar =“notdevelopment”''尝试它,会发生什么? – ydaetskcoR
@ydaetskcoR事情是,如果我只是做'env:“开发” - 这不会导致同样的错误 - 不知道为什么。 –
啊,我们走了,这将是Ansible中的'env'变量名称冲突。尝试调用它别的 – ydaetskcoR