とーますメモ

Ruby on Rails / Goなどの学習メモ

【Ansible】Rbenvで「rbenv: command not found」というエラーが出た場合の対策

以下のサイトさんが詳しい。
www.bunkei-programmer.net

要は、ansible経由の場合は、/bin/shシェルが使用され
.bash_profileや.bashrcを読み込む、/bin/bashシェルが使用されないため
発生する現象ということっぽい。

引用すると

1)bashコマンドを「-l」オプション付きで実行する方法

- name: install ruby
  shell: bash -lc "rbenv install {{ ruby_version }}"

2)ansible.cfgにexecutableを追加する方法

[defaults]
executable = /bin/bash -l

追記すると、もう一個やり方があって、
以下のようも書けるっぽい。

- name: install ruby
  shell: sudo -i rbenv install {{ ruby_version }}

ユーザを指定するなら以下
例)rootを指定

- name: install ruby
  shell: sudo -iu root rbenv install {{ ruby_version }}

[参考]
ruby - Install Bundler gem using Ansible - Stack Overflow