我正在使用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