AnsibleでRailsが動く環境をDigital Oceanに作る(2)Roleに分割

January 11, 2015

*作業メモ的な不完全な記事です。あとでまとめを書くかもしれません。

はぁはぁ、前回に引き続きやっていきます。手探り過ぎて疲れてきた。。

とりあえず、今回は前回作成したtaskをRoleに分割してみました。わかりやすい範囲でroleに分けたらファイル構成はこうなりました。

. ├── hosts ├── ocean.yml └── roles ├── common │   ├── defaults │   │   └── main.yml │   ├── files │   ├── handlers │   │   └── main.yml │   ├── meta │   │   └── main.yml │   ├── tasks │   │   └── main.yml │   ├── templates │   │   └── my_iptables.j2 │   └── vars │   └── main.yml ├── nginx │   ├── defaults │   │   └── main.yml │   ├── files │   ├── handlers │   │   └── main.yml │   ├── meta │   │   └── main.yml │   ├── tasks │   │   └── main.yml │   ├── templates │   │   └── my_nginx.conf.j2 │   └── vars │   └── main.yml └── ruby ├── defaults │   └── main.yml ├── files ├── handlers │   └── main.yml ├── meta │   └── main.yml ├── tasks │   └── main.yml ├── templates └── vars └── main.yml

メインのymlはこうなりました。roleに収まらなそうなものはtaskとして残してみました。これ全部commonに入れて良いのかな。わからぬ。

-—

  • hosts: ocean roles:

    • common
    • nginx
    • ruby tasks:
    • name: install memcached yum: name=memcached state=present
    • name: install epel yum: name=epel-release state=present
    • name: install node.js yum: name=nodejs state=present
    • name: install npm yum: name=npm state=present
    • name: install ImageMagick yum: name=ImageMagick state=present
    • name: install libxml yum: name=libxml2-devel state=present
    • name: install libxslt yum: name=libxslt-devel state=present

とりあえず、分けてよかったこととして、templateファイルを指定する際に、わざわざvarsを書く必要なく、ファイル名だけで行けたことです。あと、nginxやrubyの設定がまとめて書き出せたのでわかりやすくなりました。それぞれのroleの中でvarsを指定することで柔軟に色々できそうです。

前回と全く同じ処理を実行するのですが、大分スッキリしました!

参考

はじめてのAnsible試行錯誤記録


Profile picture

Written by morizotter who lives and works in Tokyo building useful things. You should follow them on Twitter