2014-10-28 3 views
1

Vagrant를 사용하면 vagrant up {args}에서 args를 제공된 파일로 전달할 수 있습니까?Vagrant가 명령 줄에서 제공된 파일로 args 전달

나는 내가 프로비저닝 파일에 전달할 수 있도록 사람들이 자신의 GitHub의 계정 이름을 전달 할 수 있도록하려면 - 같은 :

vagrant up iwayneo 

iwayneo 다음 프로비저닝 파일로 전달됩니다 - 이것이 가능한?

나는 vagrant up 전에 실행되는 쉬 스크립트에서 다음과 같은 경우 : 다음

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 인상이 호출되고 puts "Current user is #{ENV['LOCALUSER']}"Current user is가 나오므로 확실히받지 못합니다.

AHAAAA - 하나의 라이너 형식을 사용해야합니까? 이 형식을 사용하지 않는 방법이 있습니까?

는 알맞은 대답을 언급하지만, 여기에 어떤 도움이 정말

답변

2

가장 일반적으로 이런 종류의 일을 수행하는 방식으로 환경 변수를 사용하는 것입니다을 감상 할 수있다. 예를 들어 :

ACCOUNT=iwayneo vagrant provision 

은 그럼 당신은 the ENV class를 사용 Vagrantfile에서 사용할 수 있습니다. 당신이 shell provisioner 스크립트에 인수로 전달하려는 가정하면, 다음과 같이 사용할 수 있습니다

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 

편집 : 당신은 당신의 쉬 source해야

: 쉬 스크립트 설정을위한 추가 쉘 세션에서 변수가 적용되도록하는 스크립트. 그렇지 않으면 해당 하위 쉘에 대한 스크립트 실행 중에 만 사용할 수 있습니다. 마찬가지로, 변수가 .bashrc에있는 변수를 export으로 변경하여 Vagrant 프로세스에서 사용할 수 있도록해야합니다.

이 모든 것은 셸과 하위 프로세스가 환경 변수와 함께 작동하는 방식과 관련이 있습니다. 방랑제에 특별한 것은 없습니다.

+0

Perfect! 고맙습니다. 나는 모든 종류의 복잡한 방법으로 고심하고 있었지만,이 점이 보입니다. – iwayneo

+0

이것이 꽤 효과적이지 않은 것 같습니다. 내 q를 업데이트했습니다. – iwayneo

+0

내 수정 된 답변에서 문제를 해결했습니다. – tmatilai

관련 문제