Vagrant 将参数从命令行传递到配置文件中

Vagrant 将参数从命令行传递到配置文件中,vagrant,vagrantfile,Vagrant,Vagrantfile,使用Vagrant时,是否可以将参数从sayVagrant up{args}传递到设置的文件中 我希望人们能够传入他们的github帐户名,这样我就可以将其传递到配置的文件中—类似于: vagrant up iwayneo 然后将iwayno传递到配置文件-这可能吗 如果我在vagrant up之前运行的sh脚本中执行以下操作: echo "Please enter the local username - for vagrant boxes enter vagrant:" read unam

使用Vagrant时,是否可以将参数从say
Vagrant up{args}
传递到设置的文件中

我希望人们能够传入他们的github帐户名,这样我就可以将其传递到配置的文件中—类似于:

vagrant up iwayneo
然后将
iwayno
传递到配置文件-这可能吗

如果我在
vagrant up
之前运行的sh脚本中执行以下操作:

echo "Please enter the local username - for vagrant boxes enter vagrant:"
read uname
export LOCALUSER=$uname
echo " " >> ~/.bashrc
echo "LOCALUSER=$uname" >> ~/.bashrc

echo "Please enter the bitbucket username:"
read bbuname
export BITBUCKETUSER=$bbuname
echo " " >> ~/.bashrc
echo "BITBUCKETUSER=$bbuname" >> ~/.bashrc

echo "Please enter bitbucket password:"
read bbpass
export BITBUCKETPASS=$bbpass
echo " " >> ~/.bashrc
echo "BITBUCKETPASS=$bbpass" >> ~/.bashrc

echo "configured for local username $uname, bitbucket username $bbuname and bitbucket pass $bbpass"

source ~/.bashrc
然后在我的流浪者档案中:

puts "Current user is #{ENV['LOCALUSER']}"

if !ENV.has_key?("LOCALUSER")
  raise "Please specify the `LOCALUSER` environment variable - you can do this by running config.sh"
end

if !ENV.has_key?("BITBUCKETUSER")
  raise "Please specify the `BITBUCKETUSER` environment variable - you can do this by running config.sh"
end

if !ENV.has_key?("BITBUCKETPASS")
  raise "Please specify the `BITBUCKETPASS` environment variable - you can do this by running config.sh"
end
调用LOCALUSER raise,然后
放置“当前用户是#{ENV['LOCALUSER']}”
生成
当前用户是
,因此它肯定不会接受

AHAAAA-我必须使用一行格式吗?有没有办法不使用这种格式


评论说答案是正确的,但是这里的任何帮助都将非常感谢

最常用的方法是使用环境变量。例如:

ACCOUNT=iwayneo vagrant provision
然后您可以在文件中使用它。假设您希望将其作为参数传递给脚本,可以使用如下方式:

if !ENV.has_key?("ACCOUNT")
  raise "Please specify the `ACCOUNT` environment variable"
end

Vagrant.configure("2") do |config|
  config.vm.provision "shell", path: "script.sh", args: ENV["ACCOUNT"]
end

编辑:为sh脚本设置添加:

您必须
source
您的sh脚本才能使变量在shell会话中生效。否则,它们仅在该子shell的脚本运行期间可用。类似地,您还需要导出.bashrc中的变量,以便它们在Vagrant过程中可用


所有这些都与shell和子进程如何处理环境变量有关。流浪汉没什么特别的。

太好了!非常感谢。我一直在为各种复杂的方式挣扎,但这看起来(希望)在我编辑的答案中解决了你们的问题。谢谢!windows开发人员将要面对的许多问题:)