![vagrant 구성을 사용하여 쉘 스크립트 실행](https://linux55.com/image/40604/vagrant%20%EA%B5%AC%EC%84%B1%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%8B%A4%ED%96%89.png)
Precision64(ubuntu 14.04)를 사용하여 vagrant box를 설정하고 octopress에 필요한 패키지를 설치했습니다. Vagrant Box에 SSH로 접속하여 게시물을 생성하고 내 octopress 사이트에 대한 미리보기를 실행할 수 있습니다.
이제 머신이 시작된 후 다음 명령을 자동으로 실행하는 구성 스크립트를 생성하고 싶습니다.
gem install bundler
rbenv rehash
bundle install
rake install
rake generate
rake preview
그래서 위의 명령을 사용하여 쉘 스크립트를 만들었습니다. 하지만 vagrant up 또는 vagrant Provision을 실행하려고 하면 다음과 같은 오류가 발생합니다.
==> default: ERROR: While executing gem ... (Gem::FilePermissionError)
==> default: You don't have write permissions into the /opt/vagrant_ruby/lib/ruby/gems/1.8 directory.
==> default: bash: rbenv: command not found
내 Vagrantfile의 구성은 다음과 같습니다. 나는 또한 특권 옵션을 현실로 만들려고 노력했습니다.
config.vm.provision :shell, :privileged => false, :upload_path => "/home/vagrant/octopress/start.sh", :path => "start.sh"
내가 여기서 뭘 잘못하고 있는 걸까?
위의 로그에서 볼 수 있듯이 구성 스크립트는 /opt/vagrant_ruby/lib/ruby/gems 디렉터리의 gem을 사용하려고 합니다. 그러나 vagrant box에 ssh를 접속하여 gem과 rbenv의 위치를 확인하면 이 패키지는 사용자의 홈 디렉터리(/home/vagrant) 안에 있습니다. 문제는 구성 스크립트가 "vagrant" 사용자에 대한 환경 변수를 사용하지 않는 것 같습니다. 그런데 스크립트에서 whoami를 확인하면 출력이 방랑하게 나옵니다.
방랑자 사용자의 변수로 구성 스크립트를 실행하는 방법이 있습니까?
답변1
이 방랑 플러그인은 내 문제를 해결했습니다.
vagrant up
가상 머신 후에 구성 스크립트를 실행할 수 있습니다.
config.trigger.after :command, :option => "value" do
run "script"
...
end
sudo
그리고 명령에 추가하는 것을 잊지 마세요 .