在初始设置后,有一些命令必须作为普通用户运行。我想我可以使用单独的shell脚本和命令su –login -c< command> vagrant,但它没有从.bashrc获取用户的路径或其他环境设置。
例如。:
#!/usr/bin/env bash su --login -c "rbenv install 2.0.0-p353" vagrant su --login -c "rbenv global 2.0.0-p353" vagrant su --login -c "gem update --system" vagrant su --login -c "yes | gem update" vagrant su --login -c "gem install rdoc" vagrant su --login -c "gem install rails pg" vagrant
有没有办法做到这一点?也许它必须用另一个配置工具,如Puppet或Chef?我想到创建另一个shell脚本来源.bashrc,将它复制到框中使用:文件配置文件并执行这样的命令,但它似乎有点像一个黑客。
什么是正确的方法这样做?
你应该能够使用
Vagrant Shell provisioner,例如。
Vagrant.configure("2") do |config| $script = <<-SCRIPT rbenv install 2.0.0-p353 rbenv global 2.0.0-p353 gem update --system yes | gem update gem install rdoc gem install rails pg SCRIPT config.vm.provision "shell",inline: $script,privileged: false end
关键是指定特权:false,以便它将使用默认用户,而不是root。