vagrant 구성을 사용하여 쉘 스크립트 실행

vagrant 구성을 사용하여 쉘 스크립트 실행

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그리고 명령에 추가하는 것을 잊지 마세요 .

관련 정보