1. ホーム
  2. shell

[解決済み] Vagrantのプロビジョニング後にユーザとしてコマンドを実行する

2023-06-03 19:23:24

質問

最初のプロビジョニングの後、通常のユーザーとして実行しなければならないコマンドがいくつかあります。 別のシェル スクリプトを使用してこれを行うことができると考え、コマンド 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 を使用してボックスにコピーし、そのようにコマンドを実行することを考えましたが、それは一種のハックのように思えます。

正しい方法は何でしょうか?

どのように解決するのですか?

これを行うには Vagrant Shell プロビジョナー を使用すれば可能です。

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 .