どうもKuboです。
最近私はAnsibleと呼ばれる構成管理ツールを使ってAWSの構築を行っています。
今日は入門編としてどういうものなのかご紹介させていただきます。
Ansibleとは
Redhatが開発するオープンソースの構成管理ツールです。あらかじめ用意した設定ファイルに従ってネットワーク構成や、サーバーの立ち上げ、OSの設定やソフトウェアのインストールなどを行うソフトウェアです。
言語はPythonで出来ており、Pythonのテンプレートエンジンjinja2も利用できます。
Ansibleの特徴
- エージェントレス
- YAML形式で記述するので学習コストが軽減
- モジュールが豊富
- 冪等性の担保
エージェントレス
エージェントが不要なのでAnsibleはPythonが動く環境にインストールするとすぐに使い始めることが出来る。
エージェント型には、環境の差分をエージェントが埋めるというメリットがあるものの直ぐに試すことが出来るとうのもエージェントレスなAnsibleのメリットです。
YAML形式で記述
Ansibleの処理は一般的なYAML形式で記述するのでシンプルで見た目も見やすくて可読性が高く学習コストが低目です。
ただしその一方で複雑な処理をやろうとすると記述が難しくなるので大規模や複雑なプロジェクトには不向きかな?
多段の条件分岐やループなどを書くと一気に難易度があがります。
設定がテキストベースのコードなのでコードレビューすることが出来るのも利点です。
モジュールが豊富
Ansibleは、AWS、Azureなどのクラウド関連のモジュールが豊富で、モジュールに必要最低限のパラメータを渡すだけで構築が完了します。
このモジュールの豊富さが記述のシンプルさに繋がるのですが、モジュールで出来ないことをやろうすると独自モジュールを作ったりする必要があります。
冪等性の担保
Ansibleは冪等性(何回やっても同じ結果になる)が担保されていることを機能の1つとしてアピールしています。
コードを保存してしまえばサーバが壊れてしまってもまた同じ環境が構築できるしにた構成をいくつも立ち上げることができます。
Ansibleのドキュメント
Ansibleの勉強にあたって読んで置いてほしいのが以下のドキュメントです。
- 公式ドキュメント
- Ansibleのソースコード(GitHubページ)
次回は、簡単な使用方法を紹介したいと思います。
以上、Kuboでした。