Closed24

Ansibleメモ

komaki/こまきちkomaki/こまきち

Infracture as Codeの対象領域

オーケストレーション

リソース集合体の連携したサービスを提供すること。
アプリケーション実行環境の構築とアプリケーションのデプロイメントを一連の処理として行うなど。

システム構成管理

OS起動後のOS初期設定やミドルウェアのインストール、設定などの処理を行うレイヤのこと。
Ansible、Chef、Puppet、Itamaeなどがある。

ブートストラッピング

OSをインストールした後にOSを起動し、利用可能な状態になるまでの処理レイヤ。
クラウドではOSイメージからの起動に相当する。
Cobbler、OpenStack、Dockerなど。

komaki/こまきちkomaki/こまきち

Ansible関係用語

Ansible Project

以前までAnsible Coreと呼ばれていた、コミュニティ版のAnsible。

Red Hat Ansible Engine

エンタープライズサポートを提供するために設計されたAnsibleのサポート製品版。

AWX Project

Towerのコミュニティ版として提供されている製品。

Red Hat Ansible Tower

AnsibleのGUIや権限管理、ジョブワークフローなどの企業コンプライアンス機能を提供する管理ツール。

komaki/こまきちkomaki/こまきち

LinuxのディストリビューションでPythonがインストールされている?
されていない?

komaki/こまきちkomaki/こまきち

注意点

  • 複雑な処理の実行が苦手
    →YAMLである故。
  • 実行の完全性を担保できない
    →Ansible自体にはテスト機能が含まれていない。よって実行結果が意図した状態になっているかどうかは、実行者が確認しなければいけない。
  • sshポートが必ず空いている必要がある
komaki/こまきちkomaki/こまきち

プレイブック・インベントリの関係

  • プレイブック…ターゲットノード側で実行したい処理の流れを記載するファイル
  • インベントリ…ターゲットノードをリストして記載するファイル

プレイブックに記載されたタスクが、インベントリに記載されたホスト上で実行される

komaki/こまきちkomaki/こまきち

実行処理

  1. インベントリの中からホストパターンに合うターゲットノードをリストアップする
  2. コントロールノードでプレイブックをPythonの実行コードに変換する
  3. コントロールノードからターゲットノードにSSH接続を確立し、Pythonの実行コードをターゲットノードにsftpで送信する
  4. ターゲットノード側でPythonの実行コードを実行し、処理した出力結果をコントロールノードに返す
  5. コントロールノード、ターゲットノードにあるPython実行コードを削除する
komaki/こまきちkomaki/こまきち

プラグインの種類

  • Connection Plugin
    ssh以外にdocker, chroot, local, smartなどの接続方法に切り替えることができる
  • Lookup Plugin
    • lookup式
      外部ファイルや環境変数、コマンドなどを呼び出し、その結果を利用できる
    • with式
      タスクのループなどを行うために利用する。多くの場合、一つのタスクの中で複数回ステップを繰り返すときに使用する。
  • Callback Plugin
    プレイブックの実行終了や異常終了などのイベントをフックして、処理を仕掛けるためのプラグイン
  • Cache Plugins
    ターゲットノード情報である、ファクトをキャッシュする仕組みを提供するプラグイン
  • Vars Plugins
    可変的な変数を取り扱うことができるプラグイン
  • Filters
    テンプレート書式内にある変数データから固有の情報を制限する機能を提供する
komaki/こまきちkomaki/こまきち

今回やりたいこと
コントロールノード→ホストPC
ターゲットノード→EC23台

komaki/こまきちkomaki/こまきち

インベントリ変数のファイル分割

  • グループ変数は group_var/{設定したグループ変数名}.yml/ or group_var/{設定したグループ変数名}/XXX.yml
  • ホスト変数は group_var/{ホスト名}.yml/ or group_var/{ホスト名}/XXX.yml
komaki/こまきちkomaki/こまきち

Handler section

Tasks sectionと同じく実行したい処理の内容をシーケンスリストで定義するが、notifyを指定したタスクが更新された場合のみ、notifyと同じ名前のハンドラタスクを実行する。
例)httpdの設定ファイルを変更し、変更された時にだけhttpdを再起動する

komaki/こまきちkomaki/こまきち

role

プレイブックを分割するためのコンポーネントで、TasksやVarsセクションを別のファイルに分けて管理する。

komaki/こまきちkomaki/こまきち

fileディレクトリ

copuモジュールなどのファイル操作関連モジュール
main.ymlを作成する必要はなく配布ファイルやバイナリを配置する

komaki/こまきちkomaki/こまきち

metaディレクトリ

ロールのメタ情報やロール間の依存関係を定義したYAMLファイルを配置するディレクトリ

komaki/こまきちkomaki/こまきち

templateディレクトリ

templateモジュールで仕様するテンプレートファイルを配置するディレクトリ
Jinja2形式のテンプレートを配置する

このスクラップは2022/06/13にクローズされました