57485


itamae を使って新規 EC2 に ruby の環境を構築するレシピを作成中です

itamae のせいなのか ssm-user のデフォルトシェルが sh なせいなのかわからないのですが  
execute リソースの際

[code]

    Executing `sudo -H -u ssm-user -- /bin/sh -c cd\ \~ssm-user\ \;
    
[/code]

というのが頭についてレシピに書いた内容がすべて /bin/sh で実行されてしまい  
bashrc にかいた rbenv の設定が認識されずこまっています

レシピのコマンドに bash をつけて実行しても .bashrc は実行してくれないみたいで  
毎回コマンド前に rbenv init を実行するしかないんでしょうか  
きれいな解決方法があったら教えていただきたいです

追記：

具体的には itamae-plugin-recipe-rbenv  
<https://github.com/k0kubun/itamae-plugin-recipe-rbenv>  
というジェムを利用して

[code]

    rbenv:
      global:
        2.5.1
      versions:
        - 2.1.2
        - 2.5.1
      scheme: https
    rbenv-default-gems:
      default-gems:
        - bundler
      install: true
    
[/code]

という設定で 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 にかいてある

[code]

    export RBENV_ROOT=/usr/local/rbenv; export PATH="${RBENV_ROOT}/bin:${PATH}"; eval "$(rbenv init -)"; コマンド
    
[/code]

というようなことを行えばやりたいことはできそうですがレシピがすごく見づらくなってしまいます  
何かいい方法はないでしょうか


CC BY-SA 4.0
2019-08-20T06:05:51.177
57479
2019-08-20T09:54:19.223
2019-08-20T09:54:19.223
question
rbenv itamae
itamae のレシピが bash ではなく sh で実行されてしまう


自分でしたら、 rbenv でインストールされたバイナリを itamae から実行するのであるならば、そのコマンドをそのまま実行しようとするのではなく、
`rbenv exec` をコマンドの先頭に付与した recipe で実行すると思います。

例えば、`execute 'bundle install'` を実行したいのであるならば、 `execute 'rbenv exec bundle
install'` とすると思います。


CC BY-SA 4.0
2019-08-20T08:45:30.223
57485
2019-08-20T08:45:30.223
754
57479
answer