こんにちは、ちゃりおです。
社内へのAnsible啓蒙の一環として、Ansibleの入門記事を書いてみます。
後編には、Dockerを使ったansibleのハンズオンを用意しています。
なぜインフラをコードするのか
Ansibleを使用することで、インフラをコード化することができます。
これまで行っていた、構築作業を自動化することができます。
コード化せず手動でサーバを構築する場合、下記の流れが考えられます。
- 手順書作る
- 手順書をレビューしてもらう
- 手動で手順書の通り構築する
この方法の問題点は下記があります。
- 手順書を書くのが手間
- 手順書のレビューがしづらい(ファイル形式やフォーマットやら)
- 手順書を管理する必要がある(最新化したり)
- 作業ミスが発生する(手動なので)
- 構築台数が増えると構築にかかる時間も増えていく
- サーバの中身がブラックボックスになりやすい
自動化することで、解決します。
- 手順が大幅に減る(実行手順だけ)
- GithubのPRでレビュー可能
- Github上でコードで管理できる
- 自動化された手順通り行われる
- 並列実行することで何台でも時間は変わらない
- コードにすべて書かれている
構成管理ツールとは
Ansibleは構成管理ツールの一つです。
サーバ・ソフトウェアとか何らかの構成を構築したり管理するのを代わりにやってくるツールです。
設定を自動化するだけだったら、シェルスクリプト使えばいいじゃんと思う方もいるのではないでしょうか。
ちょっとした作業を自動化するにはには問題ないかもしれませんが、複雑な作業を書くにはつらくなりがちです。
例えば、ユーザ追加するシェルスクリプトを書いたとします。
実行して一回目は、普通にユーザ追加ができました。
しかし、2回目実行した際、該当ユーザがいるにも関わらずユーザ追加の処理は実行されます。
これを避けるためには、2回目はユーザ追加しないという処理を書く必要があります。
このように、やりたい処理以外にも色々制御する処理を書く必要がでてきます。
徐々に複雑になっていきスクリプトのメンテナンス性は下がっていきます。
構成管理ツールは、処理を自動化するという観点ではなく、マシンを目的の状態にするという観点で作成されたツールのことです。
Ansibleの特徴
YAMLで記述できる
Ansibleを書けるようになるために、特別な言語の習得は不要です。
設定ファイルを書くようにサーバの構成を書くことができます。
エージェントレス
構成管理ツールによっては、専用のエージェントを対象のサーバにインストールする必要がありますが
Ansibleでは不要です。
対象のサーバにSSHが可能であれば、実行することができます。
Python製のツール
Python製のツールです。
現在、主要なOSにはPythonがでデフォルトで入っているので、インストールも容易です。
さまざまな対象がコントロールできる
Ansibleでは、下記のように様々な対象をコントロールすることが可能です。
- 物理サーバ
- LinuxやWindowsなどのOS
- ネットワーク機器
- ストレージ
- 仮想化基盤
- クラウド環境
Redhatがサポートしている
OSSですが、Redhatがサポートを提供しています。
エンタープライズ版とコミニュティ版があります。
コミニュティ版は無償で使用することができます。
サポートが受けられるエンタープライズ版があることで、SIerでも提案しやすいと思います。
まとめ
前半では、構成管理ツールを使う目的についやAnsibleの特徴についてまとめてみました。
Ansibleの特徴
- YAMLで記述できる
- エージェントレス
- Python製のツール
- Redhatがサポートしている
後編に続きます。