わりと本気で丸一日潰れもうした。
こうする
以下の様にする。
roles/web/tasks/gem.yml
--- - name: gem install gem: name={{ item }} state=latest executable=/usr/local/bin/gem user_install=no with_items: - bundler - passenger - name: passenger-install-apache2-module shell: "/usr/local/bin/passenger-install-apache2-module --auto --languages=ruby" args: creates: /etc/httpd/conf.d/passenger.conf - name: create passenger.conf shell: "/usr/local/bin/passenger-install-apache2-module --snippet > /etc/httpd/conf.d/passenger.conf" args: creates: /etc/httpd/conf.d/passenger.conf
- executableでフルパスを指定しないとgemコマンドが叩けないと怒られるので、対象のサーバ内でwhich gemしてパスを確認してきた
- user_install=noを指定していないと、何故かgem listには出るのに、/usr/local/bin/passenger-なんとかが存在しない不思議な状態になる。
- 最初に「command:」使ってpassenger-install-apache2-moduleを叩いてたけど以下の様なエラーになって困った
TASK [web : passenger-install-apache2-module] ********************************** fatal: [ansible2]: FAILED! => {"changed": false, "cmd": "'passenger-install-apache2-module --auto --languages=********'", "failed": true, "msg": "[Errno 2] そのようなファイルやディレクトリはありません", "rc": 2} to retry, use: --limit @site.retry
shellにしたら通ったのでcommnadだめでは、って感じです。