首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Vagrant provisioning之后,以用户身份执行命令

在Vagrant provisioning之后,以用户身份执行命令
EN

Stack Overflow用户
提问于 2014-03-21 07:53:39
回答 2查看 37.7K关注 0票数 83

在初始配置之后,必须以普通用户身份运行一些命令。我想我可以使用一个单独的shell脚本和命令su --login -c <command> vagrant来实现这一点,但是它不能从.bashrc获得用户的路径或其他环境设置。

例如:

代码语言:javascript
复制
#!/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将其复制到机器上,并执行类似的命令,但这看起来有点像黑客。

这样做的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-21 19:03:44

你应该能够使用Vagrant Shell provisioner来做到这一点,例如

代码语言:javascript
复制
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

票数 163
EN

Stack Overflow用户

发布于 2020-04-08 16:52:21

有时,您希望混合使用特权命令和非特权命令。如果您的情况需要这样做,请使用runuser。

runuser -l vagrant -c 'command'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22547575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档