最初に
Ansibleを業務で使用することになりました。
そのため勉強したことをまとめています。
プレイブック(Playbook)について
- プレイブック(Playbook)とはAnsibleにおける「ターゲットノードに対するオペレーションの設定書兼手順書」の役割をする。
- Ansibleはプレイブック(Playbook)を参照し実行可能なPythonスクリプトを生成する。
- Ansibleはプレイブック(Playbook)を上から下に解釈し順番に実行していくため、どこかの”task”にジャンプなどはできない
- YAML形式で記載するのでフィルの拡張子は.ymlになる。
プレイブック(Playbook)の書き方
□例文
---
- hosts: web_servers
become: yes
tasks:
- name: Update PHP
yum:
name: php
state: latest
□例文の解説
-
「---」
プレイブック(Playbook)の先頭に書くもの
これからYAMLフォーマットで書くことを表しているだけで深い意味はない -
「- hosts: web_servers」
実行対象を指定しており、この場合では”web_servers”というサーバに対して処理を行おうとしている。
実行対象のサーバについてはインベントリ(Inventory)に記述する。
hostsの設定値については下記の通り
all : インベントリ(Inventory)に記述したすべてのホストに対して実行
localhost : Ansibleを実行しているノード自身に対して実行
<ホスト名> : インベントリ(Inventory)に記述した特定のサーバのみに実行
<ホストグループ名> : インベントリ(Inventory)に記述したホストグループに所属するサーバ全てに対して実行 -
「become: yes」
権限昇格を行っている。
もし特定のユーザに切り替えしたい場合は”become_user”で指定する。
rootへ昇格する場合は省略可能で、今回は指定していないためrootに昇格している。
また今回は省略しているが”become_method:”で昇格方法を指定することも可能
sudoで昇格する場合はデフォルトなので不要ですがもしsu等で昇格した場合は記載する。 -
「tasks:」
実際に処理する内容を定義する。
1つのプレイブック(Playbook)に複数の”task”を定義可能 -
「- name: Update PHP」
タスクの名前を定義している。
必須ではないため省略することも可能ではあるが、何をしているのかわかりにくくなるため設定したほうが良い -
「yum:」
Ansibleの「yumモジュール」を使用することを示しており、yumパッケージマネージャーを通じて行うよう指示している。 -
「name: php」
yumモジュールでのアップデート対象を示しており今回はPHPを対象としている。
もし省略するとすべてのパッケージが更新対象になるため注意が必要。 -
「state: latest」
最終的になりたい状態を示しており、今回であればPHPのバージョンを最新にすることとしている。
設定値については他に下記がある。
present/installed : パッケージがインストールされていない場合インストールする。既にインストール済の場合は何もせず、またもしアップデート可能でもアップデートしない
absent/removed : パッケージがインストールされている場合削除する。既に削除済の場合は何もしない
最後に
Ansibleのプレイブック(Playbook)では上記以外にも色々な処理(ループ処理等)ができます。
今回はシンプルで単純な処理を書いて細かく処理内容を記載してみました。
実際業務で書く場合はバージョンの指定が必要だったりが必要なのでもっと複雑になりそうです。
次はインベントリについて勉強したいです。