4

Vagrantrootプロビジョニング中と同じようにスクリプトを実行します。しかし、プロビジョニング中に別のユーザーとしていくつかのコマンドを実行したいと思います。これは私が現時点で行っている方法です:

  su - devops -c "git clone git://github.com/sstephenson/rbenv.git .rbenv"
  su - devops -c "echo 'export PATH=\"$HOME/.rbenv/bin:$PATH\"' >> ~/.bash_profile"
  su - devops -c "echo 'eval "$(rbenv init -)"' >> ~/.bash_profile"
  su - devops -c "git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build"
  su - devops -c "echo 'export PATH=\"$HOME/.rbenv/plugins/ruby-build/bin:$PATH\"' >> ~/.bash_profile"
  su - devops -c "source ~/.bash_profile"

しかし、私はこれをもっと良くしたいと思います。

#become devops user here

git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

# back to the root user here

これは可能ですか?ありがとうございました!

4

2 に答える 2

4

プロビジョニングを実行するとき、vagrant がデフォルトで root として実行されるのは本当です。プロビジョニングを次のようにすることで、この動作を変更できます。

config.vm.provision "shell", privileged: false blablabla

vagrant は、設定されconfig.ssh.usernameていない場合、デフォルトでその vagrant ユーザーとして定義されたユーザーを使用します

システムに複数のユーザーがいて、別のユーザーを使用したい場合、スクリプトを作成し、スクリプトを次のように実行します。su -l newuser -c "path to shell script"

于 2016-02-25T13:33:01.330 に答える
3

スクリプトを残りの部分とインラインにしたい場合は、次のようなコマンド シーケンスを使用できます。

sudo -u devops /bin/sh <<\DEVOPS_BLOCK
# Become devops user here
id
whoami
# Back to the root user here
DEVOPS_BLOCK
于 2016-02-25T13:40:51.303 に答える