Junos OSコレクションおよびモジュール向けAnsibleについて
概要 ジュニパーネットワークスは、Junosデバイスの管理に使用できるAnsibleモジュールを提供しています。
Junosデバイスを管理するためのAnsibleコレクションとモジュールについて
Ansible は、インフラストラクチャの構成管理に使用される IT 自動化フレームワークです。コードの個別の単位である Ansible モジュールを使用して、管理対象ノードで特定の機能を実行します。個々のモジュールをリモートホストで実行してアドホックタスクを実行したり、プレイブックを使用してモジュールを実行したりできます。
Ansibleとジュニパーネットワークスは、Junosデバイスの管理に使用できるAnsibleモジュールを提供しています。ジュニパーネットワークスのAnsibleモジュールは、 Ansible Galaxy リポジトリでホストされているAnsibleコレクションを通じてグループ化および配布されます。 表 1 は、Junos デバイスの管理に使用できるさまざまなコンテンツ セットの概要を示しています。
コンテンツ セット |
形容 |
Ansibleリリース |
---|---|---|
ジュニパーネットワークスがオープンソース プロジェクトとして提供および管理している、Junos デバイス管理用コレクション。 |
Ansible 2.10 以降 |
|
Ansibleが提供、保守、サポートする、Junosデバイスを管理するためのコレクション。 |
Ansible 2.10 以降 |
|
Ansibleコアモジュール |
Ansible基本インストールに含まれるAnsibleモジュール。 Ansible 2.10では、コアモジュールがベースインストールからAnsibleの |
Ansible 2.1 から Ansible 2.9 まで |
|
ジュニパーネットワークスが提供、保守、サポートする、Junosデバイスを管理するためのロール。 このロールは、 |
Ansible 2.1 以降 |
Ansibleロールは、ホストを設定するための一連のタスクとサポート変数、ファイル、テンプレート、およびモジュールです。Ansible 2.10以降、Ansibleは、Ansibleベースインストールの一部として含まれていないAnsibleコンテンツを配布するための形式であるAnsibleコンテンツコレクションをサポートしています。Ansibleコレクションには、モジュール、Playbook、プラグイン、ロールなど、幅広いコンテンツを含めることができます。Ansibleコレクションにも独自のリポジトリがあり、Ansibleベースインストールから独立して開発およびリリースできます。
Ansible 2.9以前では、ジュニパーネットワークスの Juniper.junos
の役割で提供されるモジュールを使用するか、Ansibleベースインストールの一部として提供されるコアモジュールを使用して、Junosデバイスを管理できます。Ansible 2.10以降、 Juniper.junos
ロールとAnsibleコアモジュールは、対応するコレクションに置き換えられます。ジュニパーネットワークスの juniper.device
コレクションの導入により、 Juniper.junos
役割のモジュールはコレクション内の新しい名前で複製されたため、 provider
パラメーターを除き、元のモジュールと同じ機能とパラメーターを保持します。新しい機能は今後コレクションに追加されるだけなので、 juniper.device
コレクションを使用することをお勧めします。
Junos デバイスでモジュールを実行する方法
Ansible Galaxy リポジトリーでホストされているコレクションを使用するには、まず制御ノードに Ansible をインストールしてから、コレクションをインストールする必要があります。 juniper.device
コレクションのインストールの詳細については、「 Ansible for Junos OS Server Requirements」を参照してください。
Ansibleモジュールは、管理対象ノードで操作を実行できます。通常、Ansible制御ノードはモジュールをマネージドノードに送信し、そこで実行した後に削除されます。このシナリオでは、管理対象ノードにはモジュールを実行する機能が必要です。ほとんどの Ansible モジュールは Python で記述されているため、Ansible では通常、マネージド ノードに Python が必要です。
ただし、 juniper.device
コレクション内のジュニパーネットワークスのモジュールでは、マネージド ノードに Python は必要ありません。通常の操作とは対照的に、モジュールはAnsible制御ノード上でローカルに実行し、モジュールはJunos PyEZとJunos XML APIをNETCONF上で使用して管理対象ノードとインターフェイスします。この実行方法では、Ansibleを使用して、サポートされている任意のJunosデバイスを管理できます。 図1 は、Ansible制御ノードと管理対象Junosデバイス間の通信を示しています。
juniper.device
収集モジュールを使用するには、プレイブックまたはコマンドで次のことを行う必要があります。
-
[コレクションまたは FQCN を指定] - コレクションを指定するには、プレイに
collections
キーを含めます。または、collections
キーを省略し、代わりに完全修飾コレクション名 (FQCN) でコレクション コンテンツを参照することもできます (これは推奨される方法です)。 -
制御ノードでモジュールをローカルに実行する—Ansibleモジュールをローカルで実行するには、たとえば、プレイブックに
connection: local
を含めたり、コマンドラインに--connection local
を含めたりして、connection
パラメーターをlocal
として定義します。手記:connection: local
を使用すると、Ansible は、接続を必要とする Play 内のタスクごとにデバイスへの個別の接続を確立します。juniper.device
コレクション モジュールはconnection: juniper.device.pyez
の使用もサポートしており、モジュールはローカルで実行されますが、代わりにプレイ内のすべてのタスクに対してデバイスへの単一の永続的な接続が確立されます。 -
管理対象デバイスに接続するための適切な接続および認証情報を提供する—詳細については、以下を参照してください。
Ansibleモジュールは、管理対象のJunosデバイスにアクセスできる任意のユーザーアカウントを使用して実行できます。Ansibleモジュールを実行すると、Junos OSユーザーアカウントのアクセス権限が適用され、Junos OSユーザーアカウントに設定されたクラスによって権限が決定されます。したがって、ユーザーが設定変更をデバイスにロードするモジュールを実行する場合、ユーザーは設定の関連部分を変更する権限を持っている必要があります。
次のプレイブックは、 juniper.device
コレクションの facts
モジュールを実行して、デバイス ファクトを取得し、ファイルに保存します。この例では、デフォルトの場所にある既存の SSH キーを使用してデバイスで認証を行うため、Playbook で認証情報を明示的に提供しません。
--- - name: Get Device Facts hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve facts from a Junos device juniper.device.facts: savedir: "{{ playbook_dir }}" - name: Print version ansible.builtin.debug: var: junos.version
また、コマンドラインでアドホック操作を実行することもできます。次のコマンドは、 juniper.device
コレクションの facts
モジュールを実行し、インベントリ グループ dc1 のホストからデバイス ファクトを取得します。
user@ansible-cn:~$ ansible --connection local -i production dc1 -m juniper.device.facts
ジュニパーネットワークスjuniper.deviceコレクション
ジュニパーネットワークスは、 juniper.device
Ansible Content Collectionを提供しており、 Ansible Galaxy のWebサイトでホストされています。このコレクションには、Junosデバイスの管理を可能にするAnsibleモジュールが含まれています。
表 2 は、juniper.device
コレクションのモジュールの概要を示しています。コレクションの初期リリースでは、コレクション モジュールは、コレクション モジュールでサポートされていない provider
パラメーターを除き、Juniper.junos
ロールの対応するモジュールと同じ機能とパラメーターを保持します。
モジュールの最新のリスト、ドキュメント、および使用例については、 https://ansible-juniper-collection.readthedocs.io/ を参照してください。
juniper.device モジュール名 |
形容 |
---|---|
|
JunosデバイスでCLIコマンドを実行し、出力をローカルに保存します。 |
|
Junos デバイスの設定を管理します。 |
|
Junos OSのバージョン、シリアル番号、ハードウェアモデル番号など、デバイス固有の情報をリモートホストから取得します。 |
|
Ansible を使用して Python で Junos Snapshot Administrator(JSNAPy)テストを実行します。 |
|
ローカルのAnsible制御ノードとJunosデバイス間でファイルを転送します。 |
|
Junosデバイスで |
|
JunosデバイスでパスMTU検出を実行します。 |
|
Junos OS RPCを実行します。 |
|
Junos OSソフトウェア パッケージをインストールし、Junosデバイスを再起動します。 |
|
Junosデバイス上で、デバイスのリセット、再起動、シャットダウンなどのシステム操作を実行します。 |
|
クラスター対応のSRXシリーズファイアウォール用のSRXシリーズシャーシクラスターを作成します。 |
|
Junos PyEZの運用テーブルとビューを使用して、Junosデバイスから運用情報を取得します。 |