AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

ansible2.1でpassengerをインストールする

わりと本気で丸一日潰れもうした。

こうする

以下の様にする。

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だめでは、って感じです。