Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ansibleプレイブックを作成および実行して、Junosデバイスを管理

ジュニパーネットワークスモジュールを実行するAnsibleプレイブックを作成して、Junos OSを実行しているデバイスやJunos OS Evolvedを実行しているデバイス上で運用タスクと設定タスクを実行できます。

ジュニパーネットワークスは、Junosデバイス上で運用および設定タスクを実行できるようにするAnsibleモジュールを提供します。このトピックでは、Junosデバイス上でジュニパーネットワークスモジュールを実行するためのシンプルなAnsibleプレイブックを作成する方法について説明します。

プレイブックの概要

Ansibleプレイブックを作成して、より複雑な管理タスクを処理します。プレイブックは、定義されたホストのセットで動作する1つ以上のプレイまたはタスクのグループで構成されます。各プレイブックプレイでは、以下を指定する必要があります。

  • タスクが動作するホスト

  • 各ホストで実行するタスクのリスト

  • 必須の変数またはモジュールパラメーター(認証パラメーターを含む)(他の場所で定義されていない場合)

プレイブックが参照するすべてのAnsibleホストは、Ansibleインベントリファイルで定義する必要があります。Ansibleインベントリファイルのデフォルトの場所は /etc/ansible/hostsです。

プレイブックは、モジュールを呼び出すことでホスト上でタスクを実行します。ジュニパーネットワークス Ansibleモジュールは、Ansible Galaxyでホストされているjuniper.deviceコレクションを通じて配布されます。プレイブックでジュニパーネットワークスモジュールを使用するには、Ansibleコントロールノードにコレクションをインストールする必要があります。コレクションとモジュールの詳細については、「Ansible for Junos OSコレクションとモジュールについて」を参照してください。

ジュニパーネットワークスモジュールは、デバイスとのインターフェイスにJunos XML APIとNETCONFを使用するため、JunosデバイスでPythonを必要としません。したがって、Junosデバイス上で操作を実行するには、PythonがインストールされているAnsible制御ノードでモジュールをローカルに実行する必要があります。適切なAnsible接続パラメーターとネットワークOSパラメーターを定義することで、モジュールをローカルで実行できます。 juniper.device コレクション内のモジュールの接続パラメーターと値については、「 Junos デバイスでモジュールを実行する方法」を参照してください。

デフォルトでは、Ansibleプレイはリモートホストからシステムファクトを自動的に収集します。ただし、プレイをローカルで実行すると、Ansibleはリモートホストではなく、Ansible制御ノードからファクトを収集します。制御ノードのファクトの収集を回避するには、プレイブックに gather_facts: no を含めます。

SSHを介したNETCONFセッションを使用してジュニパーネットワークスモジュールを実行する場合、JunosデバイスでNETCONFを有効にする必要があります。プレイブックに、他のタスクを実行する前に、各デバイスでNETCONFが有効になっているかどうかを明示的にテストするシンプルなタスクを作成することをお勧めします。このタスクがホストで失敗した場合、デフォルトでは、Ansibleはこのホストの残りのタスクを実行しません。このテストを行わないと、プレイブックの実行中に、この問題または別の問題が失敗の原因であるかどうかが示されない一般的な接続エラーが発生する可能性があります。

プレイブックはYAML形式で記述します。YAMLは空白の影響を受けやすく、インデントは重要です。そのため、プレイブックでは常にタブではなくスペースを使用する必要があります。YAMLでは、ハイフン(-)の前に付く項目はリスト項目であり、 key: value 表記はハッシュを表します。Ansibleプレイブックの作成について詳しくは、 https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks.html にあるAnsibleの公式ドキュメントを参照してください。

Ansibleプレイブックの作成

始める前に:

  • Junosデバイスの管理に使用するモジュールセットを選択します。 juniper.device コレクションには、 juniper.device 元のモジュールと junipernetworks.junos モジュールが含まれています。

  • Junosデバイスの管理時にAnsibleインベントリファイルを理解するで説明されているように、モジュールセットに適したAnsible接続およびネットワークOS変数でインベントリファイルを更新します。

Junosデバイスでタスクを実行するためのシンプルなプレイブックを作成するには:

  1. お気に入りのエディターで、 .yaml ファイル拡張子を使用する説明的なプレイブック名を持つ新しいファイルを作成します。
  2. YAMLドキュメントの開始を示す3つのダッシュを含めます。
  3. 演劇の説明的な名前を入力します。
  4. モジュールが動作するホストまたはホスト グループのカンマ区切り(またはコロン区切り)のリストを定義します。インベントリ ファイル内のすべてのホストを示すように all を指定します。

    Ansibleインベントリファイルは、プレイブックで参照するホストまたはホストのグループを定義する必要があります。

  5. (オプション)ターゲットホスト(ローカル接続の場合はAnsible制御ノード)の事実収集を防ぐための gather_facts: no を含めます。
  6. (オプション)コレクションを参照します。

    プレイブックで collections キーを定義し、タスクでモジュール名のみを参照できます。ただし、推奨される方法は、 collections キーを省略し、代わりに完全修飾コレクション名 (FQCN) でコレクションのコンテンツを参照することです。

    この例では、 collections キーを省略し、完全修飾コレクション名を使用します。

  7. タスク セクションを定義し、1 つ以上のタスクをリスト アイテムとして含めます。
  8. (オプション)SSH を介した NETCONF セッションの追加チェックとして、各 Junos デバイスの NETCONF 接続を確認するタスクを作成します。
  9. ジュニパーネットワークスモジュールを使用するタスクを作成し、必要な接続パラメーターと認証パラメーターを指定します。

    この例では、SSHキーエージェントにロードされたSSHキーを使用し、プレイブック内の facts モジュールの認証情報を明示的に提供しません。

  10. (オプション)必要に応じて、追加のタスクまたは追加のプレイを定義します。

プレイブックを実行する

この例のプレイブックでは、接続を localとして定義する次のAnsibleインベントリ ファイルを使用しています。

プレイブックを実行するには:

  • 制御ノードで ansible-playbook コマンドを発行し、プレイブックパスと必要なオプションを指定します。