質問: itamae を使って新規 EC2 に ruby の環境を構築するレシピを作成中です itamae のせいなのか ssm-user のデフォルトシェルが sh なせいなのかわからないのですが execute リソースの際 ``` Executing `sudo -H -u ssm-user -- /bin/sh -c cd\ \~ssm-user\ \; ``` というのが頭についてレシピに書いた内容がすべて /bin/sh で実行されてしまい bashrc にかいた rbenv の設定が認識されずこまっています レシピのコマンドに bash をつけて実行しても .bashrc は実行してくれないみたいで 毎回コマンド前に rbenv init を実行するしかないんでしょうか きれいな解決方法があったら教えていただきたいです 追記: 具体的には itamae-plugin-recipe-rbenv というジェムを利用して ``` rbenv: global: 2.5.1 versions: - 2.1.2 - 2.5.1 scheme: https rbenv-default-gems: default-gems: - bundler install: true ``` という設定で rbenv を /usr/local/rbenv/bin にインストールしたのですが .bashrc の rbenv init で /usr/local/rbenv/shims にパスが通るはずなのですが レシピを実行するとそのパスにあるはずの bundle が見つからないと言われてしまいます ssm-user の ssm 直後のPATHは `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin` になっています これが itamae 実行時の /bin/sh のときのパスになるかどうかもわかりません) 同じだとすると /usr/local/rbenv/bin や shims がはいってないので見つからないのは当たり前なのですが どうやって /bin/sh 実行時に rbenv の内容を反映させるのがいいのでしょうか コマンド全てに bashrc にかいてある ``` export RBENV_ROOT=/usr/local/rbenv; export PATH="${RBENV_ROOT}/bin:${PATH}"; eval "$(rbenv init -)"; コマンド ``` というようなことを行えばやりたいことはできそうですがレシピがすごく見づらくなってしまいます 何かいい方法はないでしょうか
回答: 自分でしたら、 rbenv でインストールされたバイナリを itamae から実行するのであるならば、そのコマンドをそのまま実行しようとするのではなく、 `rbenv exec` をコマンドの先頭に付与した recipe で実行すると思います。 例えば、`execute 'bundle install'` を実行したいのであるならば、 `execute 'rbenv exec bundle install'` とすると思います。