Ansibleとは?
Ansibleは、プレーンテキストの指示書をもとにサーバーを構築・保守する、オープンソースの自動化ツールです。Red Hatが開発しており、サポート付きの版も販売しています。
エンジニアに相談する ナレッジベース
どういうものか
管理者は、各サーバーがあるべき状態を一覧にしたYAMLファイル、プレイブックを書きます。どのパッケージをインストールするか、どのユーザーが存在するか、設定ファイルの内容、どのサービスを動かすかなどです。Ansibleはプレイブックを読み取り、各サーバーをそれに一致させます。
エージェントレスです。管理対象のサーバーに追加でインストールするものはなく、管理者がLinuxサーバーにログインするのと同じように、AnsibleはSSHで各サーバーに接続し、小さなプログラムを実行します。それらのプログラムの大半はPythonで書かれているため、サーバー側でPythonを使える必要があります。
実行は冪等です。サーバーがすでにプレイブックと一致している場合、Ansibleは何もせず、変更なしと報告するため、同じプレイブックを安全に再実行して、設定のずれを確認したり修正したりできます。
主な構成要素
- インベントリ:Ansibleが管理するサーバーの一覧。ウェブサーバーやデータベースサーバーなど、役割や場所ごとにグループ化します。
- プレイブック:どのグループに何をするかを記述したYAMLファイル。
- ロール:標準的なファイアウォール設定など、複数のプレイブックで共有できる、再利用可能なタスクのまとまり。
企業にとっての利点
- 一貫したサーバー:同じプレイブックから構築したサーバーは、すべて同じ設定になります。
- レビューされた変更:プレイブックはテキストファイルなので、Gitで管理でき、変更のたびに記録が残り、実行前にレビューできます。
- 再構築の迅速化:障害が起きたサーバーは、記憶を頼りにするのではなく、プレイブックから置き換えて再設定できます。
AnsibleとTerraform
この2つは、組み合わせて使われることがよくあります。Terraformは、仮想マシン、ネットワーク、クラウドアカウントといったインフラを作成します。その後、Ansibleがそれらのマシン上で動くものを設定します。役割は多少重なりますが、一般的にはこのような分担になります。
KawaConnectの構成自動化への取り組み
当社は、Ubuntu、Debian、RHEL系のサーバーを管理し、Infrastructure as Codeをバージョン管理で維持しています。Kubernetesクラスタは、クラスタの設定をGitリポジトリで管理するGitOpsで運用しています。設定を誰かの頭の中ではなくファイルで管理することで、構築を再現でき、すべての変更に記録が残ります。
関連サービス
Linuxサーバーサポート
Ubuntu、Debian、RHEL系サーバーの管理。
Kubernetesコンサルティング
設定をGitで管理するクラスタ。
Proxmoxコンサルティング
多くのサーバーが動作する基盤となる仮想マシン。
詳しく見る
- Ansibleのドキュメントインベントリ、プレイブック、ロールを書くための公式ガイドとモジュールリファレンス。
- AnsibleのWebサイトRed HatによるAnsibleのサイト。オープンソースプロジェクトと、サポート付きのAnsible Automation Platformを紹介しています。
- WikipediaのAnsibleAnsibleの仕組みと、Red Hatの一部になった経緯についての中立的な概要。