helen's blog

ずっとおもしろいことしてたいな。

VagrantにpipとPygmentsを入れて、Ansibleに組み込んだらみんな幸せになった話

railsでのドキュメント生成でpygmentsが必要になったんです

  • pip:Pythonのパッケージ管理ツール
  • pygments:ドキュメントをきれいにしてくれるpythonパッケージ

これらを入れていきます。

$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py
$ easy_install #easy_installがインストールされてるか確認
error: No urls, filenames, or requirements specified (see --help)
$ sudo easy_install pip
$ sudo pip install pygments

easy_install→pip→pigmentsの順に入れましたが
pipはyum installできるため、easy_installは必要無いというオチでした

これで私の環境では華麗にドキュメントが生成されるようになりましたが
Ansibleに組み込めばみんなが幸せになれるよね!ということで
Ansibleのタスクにpip, pygmentsのロールを追加します。

  • pip.yml
- name: install python-pip
  yum: name=python-pip enablerepo=epel

CentOS 標準のリポジトリでは提供されていないパッケージを、
yum コマンドでインストールすることを可能にするためにenablerepo=epelを指定。

  • pygments.yml
- name: install pygments
  pip: name=Pygments

pipが入っていれば
Ansibleでpip installできちゃうんです。

  • playbook.yml
   - role: pip
     tags: [pip]
   - role: pygments
     tags: [pip, pygments]

pipがないとpygmentsはインストールできないので順番が大事でした。
pygmentsのtagsには依存関係としてpipを入れます。

vagrant provisionでdry runさせると
実際にはpipがインストールされないのでpip install pygmentsでこけます。
dry runでなければ問題ありません。

あとは個人がAnsibleをpullすればみんな幸せになれるね!やったね!

参考
プログラミング はじめる。: Easy_installのインストール
Welcome! — Pygments
pip - Manages Python library dependencies. — Ansible Documentation