Tech memo

日々学んだ技術のびぼうろく

Ansible ディレクトリ構成のベストプラクティスを考えてみた

概要

Ansible でサーバ構成を管理する場合、公式が推奨しているベストプラクティス では、管理するサーバが多くなるに連れてコードの管理が大変になってくる。

そこで、あらゆるサイトを参考に、個人的なディレクトリ構成ベストプラクティスを作成した。

Github はこちら。

ディレクトリ構成

最終的に、こんな感じに落ち着いた。

ansible
├── ansible.cfg  ----------> ansible 設定ファイル
│
├── apps  -----------------> 各アプリケーション構成用のディレクトリ
│   ├── app-A
│   │   ├── group_vars
│   │   │   ├── prod.yml
│   │   │   ├── dev.yml
│   │   │   └── local.yml
│   │   │
│   │   ├── roles  --------> アプリケーション固有の role
│   │   │   └── nginx-config
│   │   │
│   │   ├── prod
│   │   ├── dev
│   │   ├── local
│   │   └── site.yml
│   │
│   ├── app-B
│   └── app-C
│
├── common-roles  ----------> 汎用的な role
│   ├── awscmd
│   ├── capistrano
│   ├── common
│   ├── grunt
│   ├── gulp
│   ├── laravel
│   ├── memcached
│   ├── mysql
│   ├── newrelic
│   ├── nginx
│   ├── nodejs
│   ├── php
│   ├── redis
│   ├── ruby
│   ├── wordpress
│   └── yo
│
└── vars  
    ├── common.yml  ----------> 汎用的な変数
    └── private.yml ----------> vault する汎用的な変数

実行方法

[local]$ cd ansible/apps/app-A
[local]$ ansible-playbook -i local site.yml

特徴 その① インベントリファイルで stage 変数を定義!

site.yml にて環境毎に読み込むvarsファイルを切り替えるため、
インベントリファイル(例えば ansible/apps/app-A/local.yml )で stage変数 を定義する。

例えば、インベントリファイルで

[all:vars]
stage=local

と定義しておいて、site.yml にて

vars_files:
    - group_vars/{{stage}}.yml

とすると、group_vars/local.yml が読み込まれる。

特徴 その② アプリケーション毎の group_vars は一つのファイルにまとめる!

ansible/apps/app-A/local/web.ymlansible/apps/app-A/local/db.yml のように、
webサーバ用変数、dbサーバ用変数とファイルを分けるのが一般的なやりかた。

ただ、別に変数がめちゃくちゃ多い訳でもないので、環境毎にそれぞれ一つのファイルにまとめた方が管理しやすい。

まとめ

とりあえずここしばらくはこの構成で運用している。
特に不具合や使いづらさも感じないので、しばらくはこの構成でいけそう。

参考

初めてのAnsible

初めてのAnsible

Node.js のインストール (Node.js のバージョン管理ツール nodebrew をつかう)

やること

Node.js のバージョン管理システムである nodebrew をインストールして、
好きなバージョンの Node.js を使えるようにする。

前提

  • CentOS6

nodebrew のインストール

nodebrew は Node.js のバージョン管理を行うツール。
公式 を参考にインストール。

$ curl -L git.io/nodebrew | perl - setup

PATH を通す。

$ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc

確認してみる。

$ nodebrew
nodebrew 0.9.6

Usage:
    nodebrew help   Show this message
・・・・

インストールできた!

nodebrew を使って Node.js をインストール。

インストールできる Node.js を確認。

$ nodebrew ls-remote

インストール可能な Node.js のバージョンがずらっと出てくるが、
現時点で公式からオススメされている v6.9.4 をインストールする。

$ nodebrew install-binary v6.9.4

インストールできたら現在インストールされているバージョンを確認する。

$ nodebrew ls
v6.9.4

current: none

最後に、インストールした Node.js を使えるように設定する。

$ nodebrew use v6.9.4

使えるか確認。

$ node -v
v6.9.4

$ npm -v
3.10.10

使えるようになった!

まとめ

nodebrew をつかっていろいろなバージョンの Node.js をインストールできるようにした!
ものすごく簡単!!

はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-

はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-