Ansible

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の一部になった経緯についての中立的な概要。

サーバーを手作業で設定していますか。

サーバーの現在の構築方法と変更方法をお聞かせください。その設定をファイルで管理するには何が必要かをご説明します。

相談を始める