在初始配置之后,必须以普通用户身份运行一些命令。我想我可以使用一个单独的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?我曾想过创建另一个外壳脚本来生成.bashrc
,使用:file provisioner将其复制到机器上,并执行类似的命令,但这看起来有点像黑客。
这样做的正确方法是什么?
发布于 2014-03-21 19:03:44
你应该能够使用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
关键是指定privileged: false
,以便它将使用默认用户而不是root
。
发布于 2020-04-08 16:52:21
有时,您希望混合使用特权命令和非特权命令。如果您的情况需要这样做,请使用runuser。
runuser -l vagrant -c 'command'
https://stackoverflow.com/questions/22547575
复制相似问题