gpt4 book ai didi

vagrant - 有条件地调用 Vagrantfile 中的不同规定

转载 作者:行者123 更新时间:2023-12-04 11:50:57 25 4
gpt4 key购买 nike

我的 Vagrant 文件中设置了以下规定。

 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需要始终运行,但是我需要有条件地运行剩余的规定。对于例如。如果 dev模式,运行 provision/dev-setup.sh
是否有一些内置的 Vagrant 配置设置来实现这一点? (就像将命令行参数传递给 vagrant provision )?

我不想依赖像 this 这样的 ENV 变量如果可能的话。

最佳答案

我认为环境变量是处理这个问题的最常用方法,没有办法通过 vagrant up 传递任何东西。或 vagrant provision命令。以下是您可以探索的几个替代想法:

  • 在 Dev 和 Prod 环境中有一些不同的东西。 Vagrantfile 只是一个 Ruby 脚本,所以任何可以检测到的东西都可以用来控制供应脚本序列。例如,文件的存在/不存在、本地网络、主机名等。
  • 定义独立的 Vagrant 节点,它们实际上是相同的,但根据配置不同。例如,对于如下文件,您可以执行 vagrant up prodvagrant 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
  • 关于vagrant - 有条件地调用 Vagrantfile 中的不同规定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28941494/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com