わりと本気で丸一日潰れもうした。
こうする
以下の様にする。
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だめでは、って感じです。