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

AnsibleでRailsが動く環境をDigital Oceanに作る(2)Roleに分割*作業メモ的な不完全な記事です。あとでまとめを書くかもしれません。

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

とりあえず、今回は前回作成した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試行錯誤記録

Pocket
LINEで送る

You may also like...