実際のプレイブック構成を使った利用
プレイブックの構成が多少複雑になっていたとしても基本の利用方法は変わりません。
ここでは例としてOS初期設定を行うプレイブックを利用するにあたっての手順を進めていきます。
まず同様に実行環境を準備し、
そこにテンプレートとなるプレイブックを用意、配置しておきます。
ホスト情報の記載
対象ホスト情報を定義していきます。
ホスト情報はhosts
内に格納します。
hosts
内はデフォルトでは下記のように大きくグループ分けされています。
- hosts
- production
- stage
- develop
各ファイルはその名のとおり本番、ステージング、開発環境のグループになっています。
本番環境用のプレイブックをセットアップしていく場合production
を編集していきます。
各ホストグループファイルは中で下記のようにさらにグループが細分化されています。
# cat hosts/production
[webservers]
web1
web2
[dbservers]
db1
db2
[production:children]
webservers
dbservers
webservers
がWEBサーバグループ、dbservers
がDBサーバグループ、
production:children
がwebservers,dbservers
両方全てとなっています。
グループ分けは 同一のプレイブックを実行するホスト 単位でグルーピングしましょう。
上記の場合production
環境のApacheインストールを行いたい場合はプレイブックのhosts
に
hosts: webservers
OS初期設定を行う場合は
hosts: production
とグループ指定を変えるだけで簡単に「本番のWEBサーバ郡に」といった実行プレイブックの指定を行うことが出来ます。
実際に対象ホスト情報を記載すると書きのようになって行きます。
[webservers]
pweb-01 ansible_ssh_host=192.168.153.11
pweb-02 ansible_ssh_host=192.168.153.12
[dbservers]
pdb-01 ansible_ssh_host=192.168.153.21
pdb-02 ansible_ssh_host=192.168.153.22
[production:children]
webservers
dbservers
実行プランの作成
今回はOS初期設定を行うプレイブックを準備していきます。
まず利用するロールプレイブックを確認します。
OS初期設定には2つのロールが用意されています。
- roles
- dev_setting
- init_setting
dev_setting
社内開発環境用の最低限の設定を行うロールプレイブックになります。
実行されるモジュールプレイブックはOSの初期設定やyum、cronやntp、ssh、postfixといった最低限のセットアップが行われます。
# view roles/dev_setting/meta/main.yml
定義する変数名はモジュールプレイブック名と同じ名前を取るようにしているため、all
を見ることで
簡単にどのプレイブックの設定か分かるようになっています。
各プレイブックの詳細は後述のプレイブック詳細を確認してください。
init_setting
本番やSTG環境などで基本的に行うOS初期設定が網羅されたロールプレイブックになります。dev_setting
より実行するプレイブック数が増えセキュリティやユーザー作成まで含まれたプレイブックが実行されます。
# view roles/init_setting/meta/main.yml
実行プレイブックの作成
ロールを利用し、各環境の設定プレイブックを作成すると、下記のようになり、
後は細かい変数値の調整を行うだけで各環境に対して簡単に設定スクリプトを実行する事が出来ます。
# vim provisioning.yml
# [Production]
- name: Prod default Settings
hosts: production
become: yes
roles:
- init_setting
# [Stage]
- name: STG default Settings
hosts: stage
become: yes
roles:
- init_setting
# [Develop]
- name: Dev default Settings
hosts: develop
roles:
- dev_setting