Ansibleメモ
Infracture as Codeの対象領域
オーケストレーション
リソース集合体の連携したサービスを提供すること。
アプリケーション実行環境の構築とアプリケーションのデプロイメントを一連の処理として行うなど。
システム構成管理
OS起動後のOS初期設定やミドルウェアのインストール、設定などの処理を行うレイヤのこと。
Ansible、Chef、Puppet、Itamaeなどがある。
ブートストラッピング
OSをインストールした後にOSを起動し、利用可能な状態になるまでの処理レイヤ。
クラウドではOSイメージからの起動に相当する。
Cobbler、OpenStack、Dockerなど。
Ansible関係用語
Ansible Project
以前までAnsible Coreと呼ばれていた、コミュニティ版のAnsible。
Red Hat Ansible Engine
エンタープライズサポートを提供するために設計されたAnsibleのサポート製品版。
AWX Project
Towerのコミュニティ版として提供されている製品。
Red Hat Ansible Tower
AnsibleのGUIや権限管理、ジョブワークフローなどの企業コンプライアンス機能を提供する管理ツール。
LinuxのディストリビューションでPythonがインストールされている?
されていない?
注意点
- 複雑な処理の実行が苦手
→YAMLである故。 - 実行の完全性を担保できない
→Ansible自体にはテスト機能が含まれていない。よって実行結果が意図した状態になっているかどうかは、実行者が確認しなければいけない。 - sshポートが必ず空いている必要がある
プレイブック・インベントリの関係
- プレイブック…ターゲットノード側で実行したい処理の流れを記載するファイル
- インベントリ…ターゲットノードをリストして記載するファイル
プレイブックに記載されたタスクが、インベントリに記載されたホスト上で実行される
実行処理
- インベントリの中からホストパターンに合うターゲットノードをリストアップする
- コントロールノードでプレイブックをPythonの実行コードに変換する
- コントロールノードからターゲットノードにSSH接続を確立し、Pythonの実行コードをターゲットノードにsftpで送信する
- ターゲットノード側でPythonの実行コードを実行し、処理した出力結果をコントロールノードに返す
- コントロールノード、ターゲットノードにあるPython実行コードを削除する
プラグインの種類
- Connection Plugin
ssh以外にdocker, chroot, local, smartなどの接続方法に切り替えることができる - Lookup Plugin
- lookup式
外部ファイルや環境変数、コマンドなどを呼び出し、その結果を利用できる - with式
タスクのループなどを行うために利用する。多くの場合、一つのタスクの中で複数回ステップを繰り返すときに使用する。
- lookup式
- Callback Plugin
プレイブックの実行終了や異常終了などのイベントをフックして、処理を仕掛けるためのプラグイン - Cache Plugins
ターゲットノード情報である、ファクトをキャッシュする仕組みを提供するプラグイン - Vars Plugins
可変的な変数を取り扱うことができるプラグイン - Filters
テンプレート書式内にある変数データから固有の情報を制限する機能を提供する
インベントリ変数のファイル分割
- グループ変数は
group_var/{設定したグループ変数名}.yml/
orgroup_var/{設定したグループ変数名}/XXX.yml
- ホスト変数は
group_var/{ホスト名}.yml/
orgroup_var/{ホスト名}/XXX.yml
ymlはタブではなく、スペースによるインデントを行うこと!!!
→え?あれそうだっけ。。。。そうなんだ。。。
Handler section
Tasks sectionと同じく実行したい処理の内容をシーケンスリストで定義するが、notifyを指定したタスクが更新された場合のみ、notifyと同じ名前のハンドラタスクを実行する。
例)httpdの設定ファイルを変更し、変更された時にだけhttpdを再起動する
vars_prompt
変数を対話的にユーザーに問い合わせることができる。
レジスタ変数
タスクの実行結果の返り値を格納するための変数
role
プレイブックを分割するためのコンポーネントで、TasksやVarsセクションを別のファイルに分けて管理する。