Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
勉強会
by  株式会社リアルグローブ
勉強会  
	
⽬目次
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
I.  構成管理理ツールです
A)  構成管理理とは
システムの企画、開発、運⽤用、廃棄という⼀一連の流流れにおいてハード
ウェア、ソフトウェアの変更更内容を記録、管理理すること
                
B)  構成管理理ツールとは
上記の構成管理理のうち、特にサーバー上での作業やAPIを介した作業を、
コード化した上で⾃自動実⾏行行するようにし、安全かつ効率率率的にシステム構
成を管理理、維持する為のツール
※構成管理理ツールには、Ansible以外にもchef、puppet等がある
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
とは?1.
Ⅱ.何が出来るのか
A)  従来、⼿手順書ベースで⼿手動実⾏行行していたシステムの構成管理理を、
      コードで管理理し、⾃自動で実⾏行行できるようになる
運⽤用イメージ
システムのあるべき姿を定義(e.g.  サーバー構成、各サーバー内の状態…)
↓
YAML形式で⼿手順を記述(Ansibleの場合、Playbookと呼ばれる)
↓
Ansible実⾏行行でシステム構成をあるべき姿に更更新
(Ansibleが記述された⼿手順通りに⾃自動でデプロイを⾏行行う)
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
とは?1.
Ⅲ.Ansible運⽤用のメリット
1.  ミスが減る
•  サーバー構成をプログラムが⾃自動で⾏行行うので、⼿手動で⼊入⼒力力すると起こりうるヒューマンエラーを減らせる
2.  作業の効率率率が上がる
•  同じ構成のサーバーセットアップや、定期メンテナンス等の作業効率率率が上がる
3.  適切切に管理理できる
•  サーバー内のシステム環境が視覚化される(playbookを⾒見見ればサーバー内の環境が分かる)
4.  CI(継続的インテグレーション)が可能になる
•  他のツールやサービス(Jenkins,  githubなど)と連携することで、「コードプッシュ→テスト実施→本番リ
リース」といった完全に⾃自動化されたデプロイが可能になる。
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
とは?1.
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.
I.  シンプル
A)  YAMLとは?
a.  配列列やハッシュで構造化されたデータを表現するためのフォーマットです。
XMLと⽐比べると汎⽤用性に⽋欠けますが、その分シンプルで⼈人間にも読みやすい
データ形式です。
b.  配列列を値に持つハッシュ、ハッシュの配列列の配列列など、ネストしたデータを扱
う場合、インデント(⼀一般的には半⾓角スペース2個)の深さで階層の深さを表
現します。
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
の特徴2.
I.  シンプル
  B)  Playbook  vs  Recipe
AnsibleのPlaybookはYAMLで記述されているので
1.  読みやすい
2.  分かりやすい
3.  作りやすい
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
の特徴2.
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
2.  Ansible  playbook  :  Chef  recipe
playbook.yml	
 recipe.rb	
  
I.  シンプル
C)  YAMLの書き⽅方
YAMLはpythonやrubyの様にインデントベースでデータ構造を表現します
(ただし、JSONの記法も使えるので、右の様にくくった書き⽅方も可能です)
- 1
- “2”
- yes
A:
B:
- C
- D
E: F
G: H
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
の特徴2.
[1, “2”, true]
{
“A”: {
“B”: [“C”, “D”],
“E”: “F”
},
“G”: “H”
}
II.  エージェントレス
A) Ansibleとホストの接続⽅方式
a.  OpenSSHさえ動作していればデプロイ可能
a.  信頼と実績がある
b.  セキュリティリスク⼩小さい
b.  WindowsはWinRMリモート接続経由でPowerShellを操作
a.  PowerShell  3.0以上が必要
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
の特徴2.
II.エージェントレス
B)  エージェント・モデル  -‐‑‒ChefやPuppetの場合-‐‑‒
管理理マシン
(Chefサーバー)
リモートホスト
1.  エージェントを
  起動しておく
4.  変更更があれば
      設定に従って
状態を更更新
2.  対象ホスト⽤用
の設定を更更新
3.  設定を問い合わせ
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
の特徴2.
リモートホストにエージェントをインストールする必要がある
II.  エージェントレス
C)  エージェントレス・モデル  -‐‑‒Ansibleの場合-‐‑‒
1.Python
スクリプトを⽣生成
3.SSHログイン
して
スクリプト実⾏行行
2.  リモートにコピー
管理理マシン
(Ansibleサーバー)
リモートホスト
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
の特徴2.
リモートホストにエージェントをインストールする必要がない
III.  べき等性
A)  …ってなに?
a.  1度度⾏行行った操作を何度度繰り返しても同じ結果になるような性質のこと
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
の特徴2.
サーバーA
アプリケーション
B
サーバーAに対してアプリケーションBをインストールする	
サーバーA
III.  べき等性
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
の特徴2.
サーバーA
アプリケーションB
アプリケーションB
サーバーAに対してすでに存在するアプリケーションB を再度インストールする	
サーバーA
アプリケーションB
べき等性がないと重複してしまう
III.  べき等性
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
の特徴2.
サーバーA
アプリケーションB
サーバーAに対してすでに存在するアプリケーションB を再度インストールする	
サーバーA
アプリケーションB
べき等性があると重複しない
III.  べき等性
B)  Ansibleでのべき等性
Ansibleのモジュールは(基本的に)べき等性が保証されている。
例例:Ansibleのcopyモジュール
(管理理マシンからリモートマシンにファイルをコピーする)
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
の特徴2.
コピー先にファイルがあることを
確認する
ファイルがある場合、ハッシュ値
を元ファイルと⽐比較する
ハッシュ値が⼀一致した場合は何も
⾏行行わない
I.  Inventory
A)  Host
B)  Group  
II.  Module
A)  Module例例
a.  templateモジュール
III. Playbook
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
⽤用語3.
I.  Inventory
•  Inventoryの例例
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
⽤用語3.
Group
• 役割が同じHostのまと
まり
• ⼀一つのHostを複数グ
ループに所属させる事
も可能。
Host
• デプロイ対象サーバー
• realglobe.jp
• 192.168.1.2
• など
+	
I.  Inventory
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
⽤用語3.
II.  Module
•  リモートホストで実⾏行行される個々のタスクのパッケージ
•  ファイルのコピー
•  ライブラリのインストール
•  ソースのダウンロード
•  デーモンの起動・停⽌止
など細かい作業から、
・AWSのVM作成
・cron.dのタスク管理理
などの⼤大きな⼀一連の作業まで、初期状態で100種類以上のオペレーションが可能です
公式に提供されているモジュールは、
http://docs.ansible.com/modules_̲by_̲category.html
に⼀一覧があります。
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
⽤用語3.
A)  II.  Module例例
a.  templateモジュール
Ø Templateモジュールは変数を埋め込んだ設定ファイルの展開に利利⽤用します。
※Jinja2(テンプレート⾔言語)の記法で書かれたテンプレートファイルは
Ansible上で設定されている値で変数が展開された状態で、対象ホスト上に配置されま
す。
例例:
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
⽤用語3.
デプロイ対象サーバー上には変数が展開されて配置される
III.  Playbook
A)  YAML形式で記述された⼿手順書
a.  操作対象のグループを指定し、タスクを実⾏行行順に記述していく
B)  ファイルを分割して読み込んだりもできる
a.  使いやすいように命名規則も決まっている
C)  {{  user_̲name  }}のようにして変数も使⽤用できる
a.  “{{}}”で変数を設定できます
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
⽤用語3.
III.  Playbook
A)  YAML形式で記述された⼿手順書
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
⽤用語3.
playbook
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に移動する
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	
  によりディレクトリ構造が決められているため	
  
わかりやすくなる
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.
1.  Ansibleは構成管理理ツールである
2.  Ansibleは他のツールと⽐比較すると、シンプルに使える
3.  Ansibleはシンプルだが、複雑な作業もこなせる
4.  使えば使うほど、role資産が蓄積され、運⽤用しやすくなる
Confidential  /  All  Rights  Reserved  ,realglobe  Inc.,  2015
まとめ

Ansible勉強会資料