Ansible基礎 #1 - はじめに

Last Edited: 10/15/2025

このブログ記事では、Ansibleを始めるために必要な基本的な概念を紹介します。

DevOps

Terraformサブシリーズの最初の記事で、インフラストラクチャプロビジョニング用のIaCツールであるTerraformが、 サーバー上でbashスクリプトを実行し、インフラストラクチャ設定を適用できる一方、 インフラストラクチャ設定に適した他のIaCツールも存在することに簡単に触れました。 Ansibleはそのような人気のあるIaCツールの一つで、Linuxサーバーの設定に有用であり、 Terraformやその他のIaCツールと組み合わせて使用されることが多いです。 そこで、この短いサブシリーズでは、Ansibleを始めるために必要な基本概念と技術について説明します。

なぜAnsibleなのか?

リバースプロキシ、Webサーバー、データベースサーバーなどのLinuxサーバーをTerraformで設定したり、 クラウドプロバイダーのGUIやCLI経由で手動で設定した後、ほとんどの場合nginx、Webフレームワーク、 データベース管理システムなどのソフトウェアをインストールし、 それらのソフトウェアアプリケーション用のファイルやスクリプトをコピーし、 サービスを開始するためにスクリプトを実行する必要があります。 これらのタスクを手動で実行したい場合、SSH経由ですべてのLinuxサーバーに接続し、 サーバーの役割とLinuxディストリビューションに対応するスクリプトをそれぞれに実行する必要があり、 これはコストがかかり、エラーが発生しやすく、共有や複製が困難です。 また、変更を加えるたびにこの面倒なプロセス全体を経て、設定全体を更新する必要があり、 これは多くの場合非常に冗長性が高いです。

AnsibleはRed Hatによって開発されたLinuxサーバーのシステム設定用のオープンソースIaCツールで、 これらすべての問題に対処できます。IaCツールとして、Ansibleのコードは簡単にバージョン管理、共有、変更でき、 他のツールとの統合が可能です。Ansibleは主に宣言的であり、 ユーザーは人間が読みやすいYAMLファイルで希望する状態を宣言するだけでサーバーを設定できます。 Ansibleを使用することで、異なるLinuxディストリビューションを簡単に処理し、 すべてのサーバーに一度に必要な変更のみを適用できます。 さらに変更が適用された後、コードがデプロイされた状態を表していることも保証できます。

Ansibleのワークフロー

AnsibleはAnsibleとその他の設定ファイルがインストールされた制御ノードと、 制御ノードが設定する管理ノードから構成されるセットアップを想定しています。 制御ノードは、AnsibleとAnsibleを実行するためにPythonがインストールされたUnix系オペレーティングシステムを持つローカルデバイスまたはリモートサーバーです (管理ノードもAnsibleスクリプトを実行するためにPythonがインストールされている必要があります)。 このセットアップは管理ノードがAnsible用のエージェントをインストールする必要がなく、エージェントレスであるため、 管理ノードの追加の計算、メモリ、ストレージ要件がありません。 これは、他の類似ツールよりもAnsibleを選択する大きな理由になりえます。

Ansible Setup

Ansibleを用いたサーバーの設定は、プレイブックと呼ばれるYAMLファイルを作成し、Ansibleの設定ファイルを編集し、管理ノードに変更を適用するだけで行えます。 この比較的シンプルなワークフローも、他のツールよりもAnsibleを選択するもう一つの利点になりえます。 バージョン管理とCI/CDについては、Git/GitHubを使用してプレイブックと設定ファイルを保存し、 GitHub Actionsで設定を適用するためのコマンドを組み込むことができます。 また、Terraformの出力に基づいてプレイブックやその他のファイルを編集し、 Kubernetesパッケージをインストールしてプロセスを実行するようにサーバーを設定することで、 TerraformやKubernetesなどの他のIaCツールと簡単に組み合わせることもできます。

Ansibleを始めるには、制御ノードでpip install ansibleを使用するか、 パッケージマネージャーを使用するか、こちらからアクセス可能な公式チュートリアルの指示に従ってAnsibleをダウンロードできます。 インストール後、ansible --versionで正常にインストールされたことを確認してください。 この短いAnsibleシリーズでは、主にWebアプリケーション用のLinuxサーバーを設定しますが、 Ansibleの応用がWebアプリケーションに限定されないことを覚えておくことが重要です。 このシリーズを通してAnsibleの使用を実際に試し、練習するために、 仮想マシンやクラウドプロバイダーのリモートサーバーを使用することができます。

結論

この記事では、Ansibleとは何か、なぜAnsibleを使用したいのか、 Ansibleがどのように動作するかという非常に基本的な内容を説明しました。 また、Ansibleのインストール要件についても簡単に説明しました。 次の記事からは、Ansibleプレイブックの書き方と設定ファイルの編集方法、 重要で有用なAnsible機能の詳細とそのベストプラクティスについて説明を始めます。 (注:このAnsibleシリーズの内容と構造は、Learn Linux TV (2020)のチュートリアルコースから着想を得ています。 興味がある場合は、下記に引用されているリンクから確認することをお勧めします。)

リソース