Closed24

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ポートが必ず空いている必要がある
こまきちこまきち

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

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

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

こまきちこまきち

実行処理

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

プラグインの種類

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

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

こまきちこまきち

つまりホストPCのAnsible入れて、既存のec2に設定入れるファイルを用意すればよさそう

こまきちこまきち

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

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

Handler section

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

こまきちこまきち

vars_prompt
変数を対話的にユーザーに問い合わせることができる。

こまきちこまきち

レジスタ変数
タスクの実行結果の返り値を格納するための変数

こまきちこまきち

role

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

こまきちこまきち

defaultディレクトリ

変数の初期値を定義したYAMLファイルを設置するディレクトリ

こまきちこまきち

fileディレクトリ

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

こまきちこまきち

metaディレクトリ

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

こまきちこまきち

templateディレクトリ

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

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