Vagrant 有条件地调用文件中的不同规定
我在流浪汉档案中设置了以下条款Vagrant 有条件地调用文件中的不同规定,vagrant,vagrantfile,Vagrant,Vagrantfile,我在流浪汉档案中设置了以下条款 config.vm.provision :shell, :path => "provision/bootstrap.sh" config.vm.provision :shell, :path => "provision/step-1.sh" config.vm.provision :shell, :path => "provision/step-2.sh" config.vm.provision :shell, :path => "
config.vm.provision :shell, :path => "provision/bootstrap.sh"
config.vm.provision :shell, :path => "provision/step-1.sh"
config.vm.provision :shell, :path => "provision/step-2.sh"
config.vm.provision :shell, :path => "provision/dev-setup.sh"
provision/bootstrap.sh
需要始终运行,但是我需要有条件地运行其余的provision。例如,如果dev
模式,则运行provision/dev setup.sh
是否有一些内置的流浪者配置设置来实现这一点?(比如将命令行参数传递给vagrant provision
)
如果可能的话,我不想依赖环境变量。我认为环境变量是处理这个问题最常用的方法,没有一种方法可以通过
vagrant up
或vagrant provision
命令传递任何信息。以下是您可以探索的几个备选方案:
vagrant up prod
或vagrant up dev
:
Vagrant.configure("2") do |config|
config.vm.provision :shell, :path => "provision/bootstrap.sh"
config.vm.provision :shell, :path => "provision/step-1.sh"
config.vm.provision :shell, :path => "provision/step-2.sh"
config.vm.define "prod" do |prod|
...
end
config.vm.define "dev" do |dev|
...
config.vm.provision :shell, :path => "provision/dev-setup.sh"
end
end
您还可以在资源清册中创建一个新变量来保存环境,例如dev资源清册中的
env:dev
和prod资源清册中的env:production
,然后使用该变量有条件地包含您的单个任务文件,如下所示:
# provision.yml (your main playbook)
- include: provision/bootstrap.sh
- include: provision/step-1.sh
- include: provision/step-2.sh
- include: provision/dev-setup.sh
when: env == 'dev'
然后在Vagrant中,您可以指定要使用的库存,例如:
config.vm.provision "provision", type: "ansible" do |ansible|
ansible.playbook = 'provision.yml'
ansible.inventory_path = 'inventory/dev'
end
更多信息: