Ansible

2019/02/03

Ansible

 構成管理ツール

サーバーなどの対象機器が、最終的なあるべき姿の状態にするツールです。そのため構成管理ツールでは、まず構成を管理する機器(対象機器)のあるべき姿を定義します。次に対象機器を確認し、あるべき姿と異なっている場合は定義にもとづいてあるべき姿に変更します。あるべき姿と同じ場合は何もしません。例えば、サーバーのあるべき姿が次のように定義されていたとします。
  1.  open-vm-tools がインストールされていること
  2. インストール済みのすべてのパッケージが最新の状態であること
サーバーに open-vm-tools がインスト-ルされており、かつ インストール済みのすべてのパッケージが最新の状態であれば、構成管理ツールは何もしません。 open-vm-tools がインストールされていない場合、構成管理ツールは open-vm-tools をインストールします。インストール済みのパッケージの中で 1 つでも最新でなければ最新に更新します。このように、対象機器があるべき姿でなければ定義したあるべき姿に変更する働きをするのが構成管理ツールです。この構成管理ツールの 1 つが Ansible です。

 Ansible

まず現時点の Ansible の実行要件などです。CentOS7 では Minimal インストールでも下記条件を満たすため、特に意識をする必要はないと思います。
  • Ansible を実行する機器を Control Machine 、対象機器を Managed Node と呼ぶ
  • Control Machine に Python 2.7 または 3.5 以上が必要
  • Managed Node に Python 2.6 以上または 3.5 以上が必要
  • Control Machine と Managed Node 間は ssh で通信する
次に Ansible 自体の説明です。
  • あるべき姿は playbook ファイルに記述する
  • 対象機器(Managed Node)の情報は inventory ファイルに記述する
  •  playbook ファイルと inventory ファイルは YAML を使用してを記述する( inventory ファイルは ini 形式でも記述が可能です)
  • Ansible には用途ごとに多数のモジュールが用意されており、このモジュールを使って playbook ファイルにあるべき姿を定義する
Ansible は inventory ファイルに記述した対象機器に playbook ファイルに記述したモジュールを実行します。対象機器にあるべき姿と異なる部分があれば、playbook ファイルに記述したモジュールの内容に変更します。あるべき姿と同じであれば何も変更しません。結果、playbook ファイルを何回実行しても、実行後の inventory ファイルに記述した対象機器は常に同じ状態になります。このように何回実行しても同じ結果になることを冪(べき)等性を保っていると言います。

 できること & 得意なこと、不得意なこと

Ansible ができること & 得意なことのまとめです。
  • サーバー構築や更新の自動化ができる
  • 対象機器(サーバー)が playbook ファイルに書かれたあるべき姿に更新される
  • 対象機器に特別なツールやプログラムのインストールが不要
  • python や ssh 通信できる必要があるが、これらは最小インストールでもインストールされる(ことが多い)
  • 冪等性を保っている
  • 何回実行しても同じ結果(状態)になるため、失敗しても途中からするのではなく、最初からやり直すことができる
  • 気楽にサーバーの構築/破壊ができる
  • 壊しても playbook ファイルを使ってすぐに構築できる
  • システム構築と同じ手法が使える = Infrastructure as Code(IaC)
  • YAML で playbook / inventory ファイルをコーディング → コードレビュー → テスト環境で検証 → 実環境に適用
  • 対象機器が 1 台でも 100 台でも手間はさほど変わらない
  • inventory ファイルに記述する対象機器の増減で対処ができる
  • playbook ファイルを残しておけば再利用ができる
  • 過去に実行実績があるコードを部品として再利用することで、コード全体の信頼性が向上する
このようにメリットが多い Ansible ですが、不得意なこともあります。
  • 1 回だけの作業には向かない
  • 1 回だけの作業であれば YAML でコードを書くよりも直接コマンドを打ったほうが圧倒的に早い
  • 版(バージョン)管理が必要である
  • きちんとコードの版(バージョン)管理をしておかないと、古いコードを実行してしまうことがある( Git などで管理するのが望ましい)
  • 適切なコードを書いているかチェックが必要である
  • コードを複数人にさらす(レビューされる)機会がないと、独りよがりのコードになりやすい

 変更履歴

2019/02/20 「できること & 得意なこと、不得意なこと」を追記した
2019/02/25 「構成管理ツール」の例示を変更した

カテゴリー

目次

QooQ