使用 vagrant 配置运行 shell 脚本

使用 vagrant 配置运行 shell 脚本

我已经使用 Precision64 (ubuntu 14.04) 设置了一个 vagrant box,并安装了 octopress 所需的软件包。我可以 ssh 进入 vagrant box 并生成帖子并为我的 octopress 网站运行预览。

现在我想创建一个配置脚本,以便在机器启动后自动运行以下命令。

gem install bundler
rbenv rehash
bundle install
rake install
rake generate
rake preview

所以我使用上面的命令创建了一个 shell 脚本。但是当我尝试运行 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。但是当我 ssh 进入 vagrant box 并检查 gem 和 rbenv 的位置时,这些包位于用户主目录 (/home/vagrant) 内。问题似乎是配置脚本没有使用“vagrant”用户的环境变量。但是当我检查脚本中的 whoami 时,我得到 vagrant 作为输出。

有没有办法使用流浪用户的变量运行配置脚本?

答案1

这个流浪插件解决了我的问题:

流浪者触发器

vagrant up您可以在虚拟机之后运行您的配置脚本:

config.trigger.after :command, :option => "value" do
    run "script"
    ...
  end

并且不要忘记添加sudo到您的命令中。

相关内容