1. Confidential / All Rights Reserved ,realglobe Inc., 2015
勉強会
by 株式会社リアルグローブ
2. 勉強会
⽬目次
1. Ansibleとは?
I. 構成管理理ツール
II. 何が出来るのか
III. Ansible運⽤用のメリット
2. Ansibleの特徴
I. シンプル
II. エージェントレス
III. べき等性
3. Ansible⽤用語
I. Inventory
A) Hosts
B) Group
II. Module
III. Playbook
Confidential / All Rights Reserved ,realglobe Inc., 2015
6. I. シンプル –YAMLで書かれたPlaybook-‐‑‒
A) YAMLとは
B) Playbook vs Recipe
C) YAMLの書き⽅方
II. エージェントレス
A) Ansibleとホストの接続⽅方式
B) エージェント・モデル -‐‑‒ChefやPuppetの場合-‐‑‒
C) エージェントレス・モデル -‐‑‒Ansibleの場合-‐‑‒
III. べき等性
A) べき等性ってなに?
B) Ansibleでのべき等性
• copyモジュール
Confidential / All Rights Reserved ,realglobe Inc., 2015
の特徴2.
7. I. シンプル
A) YAMLとは?
a. 配列列やハッシュで構造化されたデータを表現するためのフォーマットです。
XMLと⽐比べると汎⽤用性に⽋欠けますが、その分シンプルで⼈人間にも読みやすい
データ形式です。
b. 配列列を値に持つハッシュ、ハッシュの配列列の配列列など、ネストしたデータを扱
う場合、インデント(⼀一般的には半⾓角スペース2個)の深さで階層の深さを表
現します。
Confidential / All Rights Reserved ,realglobe Inc., 2015
の特徴2.
8. I. シンプル
B) Playbook vs Recipe
AnsibleのPlaybookはYAMLで記述されているので
1. 読みやすい
2. 分かりやすい
3. 作りやすい
Confidential / All Rights Reserved ,realglobe Inc., 2015
の特徴2.
9. Confidential / All Rights Reserved ,realglobe Inc., 2015
2. Ansible playbook : Chef recipe
playbook.yml
recipe.rb
13. II. エージェントレス
C) エージェントレス・モデル -‐‑‒Ansibleの場合-‐‑‒
1.Python
スクリプトを⽣生成
3.SSHログイン
して
スクリプト実⾏行行
2. リモートにコピー
管理理マシン
(Ansibleサーバー)
リモートホスト
Confidential / All Rights Reserved ,realglobe Inc., 2015
の特徴2.
リモートホストにエージェントをインストールする必要がない
14. III. べき等性
A) …ってなに?
a. 1度度⾏行行った操作を何度度繰り返しても同じ結果になるような性質のこと
Confidential / All Rights Reserved ,realglobe Inc., 2015
の特徴2.
サーバーA
アプリケーション
B
サーバーAに対してアプリケーションBをインストールする
サーバーA
15. III. べき等性
Confidential / All Rights Reserved ,realglobe Inc., 2015
の特徴2.
サーバーA
アプリケーションB
アプリケーションB
サーバーAに対してすでに存在するアプリケーションB を再度インストールする
サーバーA
アプリケーションB
べき等性がないと重複してしまう
16. III. べき等性
Confidential / All Rights Reserved ,realglobe Inc., 2015
の特徴2.
サーバーA
アプリケーションB
サーバーAに対してすでに存在するアプリケーションB を再度インストールする
サーバーA
アプリケーションB
べき等性があると重複しない
21. II. Module
• リモートホストで実⾏行行される個々のタスクのパッケージ
• ファイルのコピー
• ライブラリのインストール
• ソースのダウンロード
• デーモンの起動・停⽌止
など細かい作業から、
・AWSのVM作成
・cron.dのタスク管理理
などの⼤大きな⼀一連の作業まで、初期状態で100種類以上のオペレーションが可能です
公式に提供されているモジュールは、
http://docs.ansible.com/modules_̲by_̲category.html
に⼀一覧があります。
Confidential / All Rights Reserved ,realglobe Inc., 2015
⽤用語3.
22. A) II. Module例例
a. templateモジュール
Ø Templateモジュールは変数を埋め込んだ設定ファイルの展開に利利⽤用します。
※Jinja2(テンプレート⾔言語)の記法で書かれたテンプレートファイルは
Ansible上で設定されている値で変数が展開された状態で、対象ホスト上に配置されま
す。
例例:
Confidential / All Rights Reserved ,realglobe Inc., 2015
⽤用語3.
デプロイ対象サーバー上には変数が展開されて配置される
23. III. Playbook
A) YAML形式で記述された⼿手順書
a. 操作対象のグループを指定し、タスクを実⾏行行順に記述していく
B) ファイルを分割して読み込んだりもできる
a. 使いやすいように命名規則も決まっている
C) {{ user_̲name }}のようにして変数も使⽤用できる
a. “{{}}”で変数を設定できます
Confidential / All Rights Reserved ,realglobe Inc., 2015
⽤用語3.
25. III. Playbook
B) role毎にタスクを分割する
Confidential / All Rights Reserved ,realglobe Inc., 2015
⽤用語3.
playbook
roles/apache/vars/main.ymlに移動する
roles/apache/tasks/main.ymlに移動する
roles/apache/handlers/main.ymlに移動する
roles/apache/templates/h9pd.j2に移動する
26. III. Playbook
B) role毎にタスクを分割する
Confidential / All Rights Reserved ,realglobe Inc., 2015
⽤用語3.
playbook
roles/
apache/
files/
copyモジュールでコピーするファイルをここに置く
handlers/
main.yml
tasks/
main.yml
templates/
httpd.j2
vars/
main.yml
rolesのディレクトリ構造
Ansible
によりディレクトリ構造が決められているため
わかりやすくなる
27. III. Playbook
C) Playbook 内での変数の定義と利利⽤用
a. 変数の利利⽤用⽅方法
i. {{ user_̲name }} のように記述するとその箇所が展開される
(例例) my_̲software_̲{{ version }}.conf など
b. 変数の定義⽅方法
i. ansible実⾏行行時にコマンドライン引数で渡す
ii. インベントリ内で設定する
l group_̲vars、host_̲varsにファイルを設置する
Ø グループ名/ホスト名がファイル名と⼀一致する場合には⾃自動で読み込んでくれる
iii. Playbook内で設定する
l varsに設置する
l roles内のvarsにファイルを設置する
Ø そのrole内のタスクを実⾏行行する時には⾃自動で読み込んでくれる
l vars_̲filesを利利⽤用して外部ファイルから読み込む
l include_̲varsモジュールにより外部ファイルから読み込む
Confidential / All Rights Reserved ,realglobe Inc., 2015
⽤用語3.