Ansible とは
Infrastructure as Code
昔ながらのサーバー構築では、物理サーバーを調達して担当エンジニアが手順書に従ってミドルウェアをインストールする、といった作業が一般的でした。
近年では AWS EC2 を代表とする仮想サーバーの利用が一般的となり、以前とは比較にならない程のスピード・台数でのサーバー構築 が行われています。
そのような背景の中、サーバーをソフトウェアと同様にコードをベースとしてサーバー・プロビジョニングを行う Infrastructure as Code
という流れが出てきました。
サーバー・プロビジョニングについては、大きく以下の 3 つのレイヤーで説明されることがあります。 サーバー・プロビジョニングのためのツールは、対象とするレイヤーが異なるため、適切に選択する必要があります。
Bootstrapping: OS のプロビジョニング
- AWS
Configuration: システム構成のプロビジョニング
- Chef、Puppet、Ansible などの構成管理ツール
Orchestration: アプリケーションのプロビジョニング
- Capistrano、Fabirc などのデプロイツール
また、レイヤーを跨って統合管理するためのオーケストレーションツールとして、Terraform や AWS CloudFormation などがあります。
Ansible とは
Ansible とは、サーバー構成管理ツールの1つです。 特徴は以下の通りです。
SSH 接続が可能であれば実行でき、対象ホスト側にエージェントが不要
- Chef、Puppet はエージェントが必要
冪等性が保証されている
- シンプル
- 実行順序の把握が容易
- シェルスクリプトからの移行が容易
- 部分的な Ansible 化が容易