システム管理者であれば、使用しているすべてのサーバーやコンピューターを一貫した方法で管理することが重要です。構成管理システムは、このプロセスを大幅に合理化できます。これらは、中央の場所からすべてのシステムを効率的に管理します。
On Linuxにおいて、複数の構成管理システムが利用可能です。例えば、Puppet, Chef, Ansible, Bcfg2, Juju, CFEngineなどです。PuppetやChefのようなツールはより複雑で高度になる傾向がありますが、Ansibleはシンプルさと使いやすさを提供します。Ansibleを動作させるために、ノードに追加のクライアントソフトウェアをインストールする必要はありません。代わりに、AnsibleはSSHを使用してシステムを管理および自動化します。Ansibleはオープンソースソフトウェアです。また、拡張性が高く、一貫性があり、信頼性も高いです。
このガイドでは、次のOSにおけるAnsibleのインストールと構成方法を説明します:Ubuntu 20.04.
Ubuntu上のAnsible
Ansibleは、3つのタイプの自動化を実現できます。
-
プロビジョニング: インフラストラクチャのニーズに応じて、さまざまなサーバーを構築できます。
-
構成管理: サーバーのさまざまな構成変更を実行できます。例えば、サービスの起動と停止、アプリケーションやアップデートのインストール、セキュリティポリシーの適用などです。
-
アプリケーションのデプロイ: 自社開発したアプリケーションを本番システムに自動デプロイすることで、DevOpsを容易にします。
Ansibleは、ほぼすべてのIT環境 – ホスト型サーバー、従来のサーバー、仮想化プラットフォーム、クラウドなど – で完璧に動作します。また、データベース、ネットワーク、ファイアウォール、ストレージデバイスなど、さまざまなシステムの管理もサポートしています。CloudSigmaもAnsibleをサポートしています(当社のクラウドインフラストラクチャ向け)。
前提条件
このガイドでは、いくつかのマシンが必要です。
-
コントロールノード: コントロールノードは、すべてのホストノードに接続し、タスクを発行してシステムのさまざまな側面を管理する中央ノードです。コントロールノードは、何でも構いません – ローカルマシンでも、リモートサーバーでも。
-
ホストノード: Ansibleホストは、Ansibleコントロールノードが自動化できるマシンです。
ガイドのタイトルが示すように、これらのマシンはすべて最新のパッケージが適用されたUbuntu 20.04で構成されている必要があります。以下は、Ubuntuサーバーのセットアップに関する簡単なガイドです。Ansibleはマシンへの接続にSSHを使用するため、すべてのホストノードにコントロールノードとのSSHキーが適切に設定されている必要があります。すべてのホストノードの authentication_keysファイルに、コントロールノードの公開SSHキーが追加されていることを確認してください。チュートリアルを参照して、LinuxサーバーにSSHキーを生成して追加する方法を学んでください。.
ステップ1:Ansibleのインストール
Ubuntuの場合、追加のパッケージやリポジトリの構成は必要ありません。Ansibleは、Ubuntuの公式パッケージサーバーから直接利用できます。システムレベル of 変更を実行するには、管理者アクセス(rootユーザー、またはsudo権限を持つ非rootユーザー)が必要です。sudoersファイルは、ユーザーとグループに対するsudo権限を管理します。
まず、コントロールノードとして機能するコンピューターにAnsibleをインストールします。コントロールノードにAnsibleをインストールするには、次のコマンドを実行します。
|
1 |
sudo apt update |

|
1 |
sudo apt install ansible -y |

SSH認証メカニズムとしてパスワードを使用する場合は、パッケージ sshpassがインストールされている必要があります。
|
1 |
sudo apt install sshpass |

ステップ2:インベントリファイルの構成
Ansibleでは、インベントリファイルに、Ansibleが管理するすべての hostsに関する情報が含まれています。これには、 inventory fileに登録された数十または数百のサーバーを指定できます。サーバーはグループやサブグループに分割することもできます。一般的に、 inventory fileは、特定の hostsまたはグループに対してのみ有効な変数を設定するために使用されます。これは、プレイブックやテンプレートを作成する際に便利な手法です。特定の変数は、プレイブックの実行方法に影響を与えることもあります。
Ansibleにはデフォルトのインベントリファイルが付属しています。まず、テキストエディタでファイルを開きます:
|
1 |
sudo vim /etc/ansible/hosts |

デフォルトでは、インベントリファイルには参照用のさまざまな例が含まれています。以下は、次の名前のグループを含む例です。 servers。このグループには3つの異なるサーバーが含まれています。変数 ansible_python_interpreterは、インベントリに含まれるすべての hostsのPythonインタープリタを定義します。ディレクティブ ansible_userを使用すると、Ansibleが接続するユーザーアカウントを宣言できます:
|
1 2 3 4 5 6 7 |
[servers] server_1 ansible_host=<server_1_ip> ansible_user=<server_1_username> server_2 ansible_host=<server_2_ip> ansible_user=<server_2_username> server_3 ansible_host=<server_3_ip> ansible_user=<server_3_username> [all:vars] ansible_python_interpreter=/usr/bin/python3 |

次に、ファイルを保存してエディタを閉じます。インベントリを確認するには、次のコマンドを実行します:
|
1 |
ansible-inventory --list -y |
出力は次のようになります:

ステップ3:接続テスト
インベントリファイルを設定した後、AnsibleがSSH経由でそれらのサーバーに接続できるかどうかをテストする必要があります。これは、すべてのホストノードに単純にpingを送信することで実行できます。 コントロールノードから、すべての ホスト ノードにpingを送信します:
|
1 |
ansible all -m ping |
このpingモジュールは以下の項目を確認します:
-
ホストへのアクセス可能性
-
SSH認証情報の有効性
-
ホストがPythonを使用してAnsibleモジュールを実行できること
出力は次のようになります:

特定のノードからの返信が pongである場合、そのノードはサーバー上でAnsibleコマンドやプレイブックを実行する準備ができていることを意味します。
ステップ4:アドホックコマンドの実行
これはオプションのステップです。ただし、リモートサーバーに対するAnsibleの完全な機能を確認するのに役立ちます。このセクションは、Ansibleの追加の使用方法と設定に関する基本的な紹介としても機能します。ノードへの接続が確認できたら、アドホックコマンドとプレイブックの実行を開始できます。通常リモートサーバー上で実行するコマンドは、Ansibleを使用してすべてのサーバーで実行できます。
ここでは、次のコマンドを実行します。これにより、すべてのノードのディスク使用状況を同時に確認できます:
|
1 |
ansible all -a "df -h" |

テストのために pingモジュールを実行したのと同様に、アドホックコマンド機能を使用してさまざまなAnsibleモジュールを実行することもできます。たとえば、 aptモジュールは、Ubuntu上のAPTパッケージマネージャーで動作します。リモートのUbuntuノード上のパッケージを管理できます。システムレベルの変更を行うにはroot権限が必要であることに注意してください。リモートノードがrootログインを許可しているか、ユーザーが管理タスクを実行する権限を持っている必要があります。
次の例では、AnsibleはすべてのホストノードにNginxをインストールします:
|
1 |
ansible all -m apt -a "name=nginx state=latest" -u root |
単一のサーバーのみでコマンドを実行する場合はどうでしょうか?サーバーを指定するには、(インベントリファイル内で割り当てられた)サーバーのニックネームを使用します:
|
1 |
ansible server_1 -a "df -h" -u cloudsigma |

複数のサーバーを指定することもできます。デリミタとしてコロンを使用して、各対象サーバーのニックネームを宣言します:
|
1 |
ansible server_1:server_2:server_3 -a "df -h" -u cloudsigma |

最後に
このガイドでは、Ansibleをインストールし、Ansibleコントロールノードからアドホックコマンドを実行するためのインベントリファイルを設定する手順を段階的に説明しました。設定が完了すると、コントロールノードはホスト上で実行したい任意のコマンドやプレイブックを実行できるようになります。
ハッピーコンピューティング!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。