Closed24

Ansibleメモ

KumaoKumao

Infracture as Codeの対象領域

オーケストレーション

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

システム構成管理

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

ブートストラッピング

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

KumaoKumao

Ansible関係用語

Ansible Project

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

Red Hat Ansible Engine

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

AWX Project

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

Red Hat Ansible Tower

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

KumaoKumao

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

KumaoKumao

注意点

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

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

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

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

KumaoKumao

実行処理

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

プラグインの種類

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

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

KumaoKumao

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

KumaoKumao

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

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

ymlはタブではなく、スペースによるインデントを行うこと!!!
→え?あれそうだっけ。。。。そうなんだ。。。

KumaoKumao

yamlは最初に --- をつけ、最後に ... で定型文を修了する。

KumaoKumao

Handler section

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

KumaoKumao

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

KumaoKumao

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

KumaoKumao

role

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

KumaoKumao

main.ymlが固定で読み込まれる仕様になっている

KumaoKumao

defaultディレクトリ

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

KumaoKumao

fileディレクトリ

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

KumaoKumao

metaディレクトリ

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

KumaoKumao

templateディレクトリ

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

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