最新の管理手法の 1 つである「Ansible」を利用して、デバイス上のすべての監視対象ホストを一覧表示する方法を紹介します。 Ansible では、「インベントリ」プラグインを使用して、ネットワーク内のすべてのホストを一覧表示します。
Ansible にすべてのホスト マシンのリストを用意することが重要です。在庫ファイルを整理しておくことは、プレイブックやタスクを維持することと同じくらい重要です。なぜなら、在庫ファイルが適切に管理されていない場合、常に不確実な状態に陥り、いくつかの懸念を自問するからです。上記に加えて、必要な変数のインベントリ ファイルの定義により、プレイブック内のタスクのコンテンツが最小限に抑えられ、解釈が高速化されます。 Playbook と Ansible インベントリ ファイルの両方で宣言できる変数のグループがあり、ホスト マシンへの接続と接続の動作を構成します。
前提条件:
Ansible でホスト リスト インベントリ コマンドを実装する前の要件は次のとおりです。
- 実装を開始するには、まず最新バージョンのサーバー デバイスにインストールされている Ansible 構成に使用されるソフトウェアが必要です。ネットワーク内のすべてのホスト マシンを簡単に一覧表示できるように、Ansible を構成する必要があります。
- Ansible で構成タスクを実行するには、メインの構成マネージャーが必要です。このチュートリアルでは、コントローラ サーバーをメイン コントローラとして使用します。
- 変更を実装するには、ホスト リスト インベントリ チュートリアルでホスト サーバーをターゲットにする必要があります。ここでは、2 つのターゲット リモート ホストがあります。
例: マシン内のホスト リスト インベントリ
Ansible ツールに実装して、ホスト リストのインベントリを確認または定義する例を次に示します。そのために、このチュートリアルの作業と実装を簡単に理解できるように、この例をさまざまなステップで実行します。手順は次のとおりです。
ステップ 1: ターゲット リモート ホスト デバイスのデフォルト ホスト リスト インベントリを確認する
まず、Ansible ツールのインベントリにあるホストの数を確認します。そのために、「ansible」ステートメントと「-list-hosts」を使用して、デフォルトで処理されるノードをインベントリーに表示できるようにします。
[ 根 @ マスターアンシブル ] # ansible all --list-hosts
前のコマンドを書き込んだ後の出力は次のとおりです。
インベントリーを宣言していないため、Ansible ターミナルには、提供された応答でわかるように「0 ホスト」が表示されます。これに対処する前に、ターミナルでホストのインベントリを一覧表示するインベントリを生成します。
デフォルトのインベントリ:
ソフトウェアに Ansible をインストールすると、Ansible は、ターミナルに次のステートメントを書き込むことで検出されるインベントリ ファイルを作成します。
[ 根 @ マスターアンシブル ] # sudo nano /etc/ansible/hosts
結果は、前のステートメントを書くときに生成されます。次に、パスワードの入力を求められます。
このスナップショットでは、デフォルトの Ansible ホスト ファイルが、グループ化されていないホストと webservers グループ ホストに関する情報を提供します。これらのホストには、URL とさまざまな IP アドレスが含まれます。
ステップ 2: Ansible でカスタム インベントリを定義する
Ansible では、Ansible ターミナルで複数のステートメントを記述してインベントリを定義することもできます。ステートメントと Playbook の実行時にインベントリーを定義することは、ホストとの接続中にホストの衝突や障害を防ぐ賢明な決定です。
独自にインベントリーの定義を開始するには、まず次のステートメントを記述して、Ansible でインベントリーを構築し、そこにホストを一覧表示して、Ansible コントローラーとターゲットのリモート ホストを接続できるようにします。
[ 根 @ マスターアンシブル ] # ナノホスト.yml
前のステートメントを記述した後、インベントリーが作成され、「hosts.yml」というタイトルの新しい Ansible ターミナルで起動されます。次に、対象のホストを 1 つずつインベントリに一覧表示します。接続する最初のホストは Linux ホストです。 Linux ホストの IP アドレス、Ansible ユーザー、Ansible パスワード、接続の種類、および Ansible ポート番号を提供します。 2 番目のターゲット ホストでも同じことを行います。 2 番目に使用するホストは Ansible ホストです。リストしたすべてのホストは、インベントリーの Ansible パラメーターの下にあります。
アンシブル:ホスト:
Linux_ホスト:
ansible_host: 192.168.3.229
ansible_user: ルート
ansible_password: tpstps_22
ansible_connection: ssh
ansible_port: 22
Ansible_Host:
ansible_host: 192.168.7.10
ansible_user: アイリス
ansible_password: TpsTps_1
ansible_connection: ssh
ansible_port: 22
インベントリ ファイルを作成し、その中にホストを提供したら、インベントリ ファイルを終了し、メインの Ansible ターミナルに戻ります。
ステップ 3: Ansible で Playbook を作成する
次に、Ansible ツールでプレイブックを作成して、タスクを定義します。そのために、Ansible のメイン ターミナルで次のコマンドを記述します。
[ 根 @ マスターアンシブル ] # nano ansible_advanced_inventory.yml
これで、プレイブックが新しいターミナルで起動されます。まず、プレイブックのタイトルを書きます。次の行で、ターゲット ホストを指定します。ホストのすべての情報を取得するために使用される、事実の収集オプションを使用します。ただし、ここでは「no」を渡します。これは、ホストのすべてのデータを取得したくないことを意味します。
次に、プレイブックにタスクをリストします。最初のタスクは、ターゲット ホストをホスト名とともに表示するために使用されます。次のタスクでは、ホストの結果を出力します。
- 名前: Ansible の高度なホスト インベントリホスト: アンシブル [ 0 ]
収集_事実: いいえ
タスク:
- 名前: ゲット ホスト名 管理対象ノードの
シェル: 「ホスト名」
登録: 結果
- 名前: プリント ホスト名
デバッグ:
メッセージ: '{{result.stdout}}'
ここで、インベントリ ファイルとともにプレイブックを実行します。そのため、まずプレイブックを終了します。以下は、コマンドを実行するために使用するステートメントです。
[ 根 @ マスターアンシブル ] # ansible-playbook ansible_advanced_inventory.yml –i host.yml
以下は、接続が成功したことを示す出力表示です。 Playbook で Ansible[0] を渡したので、最初のホストが出力に表示されます。
結論
このチュートリアル全体を通して、Ansible インベントリーで詳細な議論を行いました。 Ansible でインベントリを作成し、それらをターゲットのリモート ホストに接続する方法を学びました。また、Ansible インベントリーの概念を簡単に理解できるように例を実装しました。