LoginSignup
7
8

More than 5 years have passed since last update.

自プロジェクトのAnsible構成

Posted at

■前提

現在携わっているプロジェクトでAnsibleを使用していますが、メンテナンス出来るメンバが限られている状態です。そこで、Ansibleの構成について簡単にまとめておきたいと思います。

■環境

CentOS 6.xに対してAnsibleを実行する想定です。

■Ansibleの構成

以下は、サーバにApacheとMySQLをインストールするAnsibleのファイル群です。
「★」がついているものは、任意の名前を付けてOKなものです。

server01 ← [★任意のディレクトリ名、Webサーバに展開するAnsibleであれば「web_server」など]
│
└── roles ← [お決まりのディレクトリ名]
    │
    ├── apache ← [★任意のディレクトリ名、タスクの名前にすると分かりやすい]
    │   │
    │   └── tasks ← [お決まりのディレクトリ名]
    │       │
    │       └── main.yml ← [お決まりのファイル名]
    │
    └── mysql ← [★]
        │
        ├── tasks
        │   │
        │   └── main.yml
        │
        ├── templates ← [お決まりのディレクトリ名]
        │   │
        │   └── my.cnf.j2 ← [★任意のファイル名、拡張子は「j2」]
        │
        └── vars ← [お決まりのディレクトリ名]
            │
            └── main.yml

■「main.yml」の中身(一部抜粋)

・apache -> tasks

Apacheのインストールから設定など、Apacheに関するタスクを記載しています。
どのタスクも「name」と「tags」を付けるようにしています。

main.yml
# Apacheのインストール ← [コメント]
- name: install apache ← [Ansibleを実行したときに表示される]
  yum: name=httpd state=latest ← [最新のApacheをyumインストール]
  tags: apache  ← [Ansible実行時に「このtagsの名前のタスクだけ実行!」と指定できる]

MySQLのインストールから設定など、MySQLに関するタスクを記載しています。

・mysql -> tasks

main.yml
- name: install mysql
  yum: name={{ url }}/{{ item }} state=present ← [インストール済みであればインストールしない、「url」は以下の「vars-main.yml」に記載、「with_items」分実行される]
  with_items: ← [複数ある場合は以下のように複数記載]
    - MySQL-client-{{ version }}.el6.x86_64.rpm ← [「version」は以下の「vars-main.yml」に記載]
    - MySQL-shared-compat-{{ version }}.el6.x86_64.rpm
  tags: mysql

・mysql -> vars

main.yml
url: http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.5/ ← [MySQLダウンロード先URL]
version: 5.5.46-1 ← [MySQLバージョン]

■(少し発展編)全タスクで使用する変数を定義したい!

この場合は、「server01」ディレクトリと同じ階層に「group_vars」というディレクトリを作成し、その中に任意のファイルを作成して変数を定義します。

server01
group_vars
│
└── server ← [★任意のファイル名]

上記「server」ファイルで、以下のように記載すれば全main.ymlで定義した変数「hoge_user」「hoge_version」が使用可能になります。

---                                                                                                                                                                                          
hoge_user: hogeuser
hoge_version: 1.2.3

■最後に

Ansibleは完成させるまで苦労しますが、完成後は環境作成がとても楽になります。
コマンド一つで何度でも同じ環境を作成できるのは本当に楽です。
Ansibleは恐くない!Ansibleを味方につけて楽しよう!

Ansible以外の構成管理ツールもたくさんあるので、Ansibleより楽なツールが無いか今後試してみたいと思います。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8