我正在为我的 Vagrant 设置使用 Ansible(本地)配置器。是否有推荐的方法将环境变量传递给供应商?
例如,我想运行ENV=development vagrant up并让 Vagrant 将环境变量传递ENV给 Ansible。
我尝试使用extra_vars,取自Vagrant 文档:
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
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时vagrant provision(甚至不使用envAnsible 中的变量),我得到以下信息:
$ 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.
Run Code Online (Sandbox Code Playgroud)
删除ansible.extra_vars修复了这个错误,但是我无法完成我想要的。
小智 5
您需要安装 Vagrant 插件:
\n\nvagrant plugin install vagrant-env\nRun Code Online (Sandbox Code Playgroud)\n\n我希望我的代码片段能有所帮助:
\n\nconfig.vm.define "k8s-master" do |master|\n master.vm.box = IMAGE_NAME\n master.env.enable # Enable vagrant-env(.env)\n master.vm.network "private_network", ip: "192.168.50.10"\n master.vm.hostname = "k8s-master"\n master.vm.provision "ansible" do |ansible|\n ansible.playbook = "./playbooks/master.yml"\n ansible.compatibility_mode = "2.0"\n ansible.extra_vars = {\n env: development,\n }\n end\nend\nRun Code Online (Sandbox Code Playgroud)\n\n每当您运行 Vagrant 命令时添加 config.env.enable,\xe2\x80\x99 就会将 .env 加载到 ENV 中,这将允许您进行自定义。\n并且您可以在 playbook 中将其用作{{ variable_name }}\n.
小智 1
需要设置什么环境变量?
如果可能的话,我会尝试使用不同的方法。如果您希望对 ansible 中的环境变量进行操作,则可以在 inventory group_vars 文件中设置该值,该文件仅对本地配置 vagrant 有效。其他环境可以通过更新适当的清单 group_vars 文件来对同一变量使用不同的值。
| 归档时间: |
|
| 查看次数: |
2030 次 |
| 最近记录: |