項目一覧
Junosデバイスを管理するためのAnsibleプレイブックを作成および実行する
概要 ジュニパーネットワークスのモジュールを実行するAnsibleプレイブックを作成して、Junosデバイス上で運用タスクと設定タスクを実行できます。
ジュニパーネットワークスは、Junosデバイス上で運用タスクと設定タスクを実行できるAnsibleモジュールを提供しています。このトピックでは、Junos デバイスでジュニパーネットワークスのモジュールを実行するためのシンプルな Ansible プレイブックを作成する方法について説明します。
Ansibleプレイブックを作成して、より複雑な管理タスクを処理します。プレイブックは、定義されたホストのセットで動作する 1 つ以上のプレイまたはタスクのグループで構成されます。プレイブックで参照されるAnsibleホストは、デフォルトで /etc/ansible/hostsに存在するAnsibleインベントリファイルで定義する必要があります。
各プレイブックプレイでは、以下を指定する必要があります。
-
タスクが動作するホスト
-
各ホストで実行するタスクのリスト
-
必要な変数またはモジュール・パラメーター (認証パラメーターを含む) が他の場所で定義されていない場合
Playbook は、モジュールを呼び出すことによってホストでタスクを実行します。ジュニパーネットワークスのAnsibleモジュールは、Ansible Galaxyでホストされているjuniper.device
コレクションを通じて配布されます。プレイブックでジュニパーネットワークスのモジュールを使用するには、Ansible制御ノードにコレクションをインストールする必要があります。コレクションとモジュールの詳細については、Junos OSのコレクションとモジュール向けAnsibleについてを参照してください。
ジュニパーネットワークスのモジュールは、Junos PyEZとNETCONF上のJunos XML APIを使用してデバイスとインターフェイスするため、JunosデバイスにPythonは必要ありません。そのため、Junosデバイスで操作を実行するには、PythonがインストールされているAnsible制御ノードでローカルにモジュールを実行する必要があります。Playbook プレイに connection: local
を含めることで、モジュールをローカルで実行できます。 connection: local
を使用すると、Ansible は、接続を必要とする Play 内のタスクごとにホストへの個別の接続を確立します。 juniper.device
収集モジュールも connection: juniper.device.pyez
をサポートします。この接続タイプでは、モジュールは Ansible 制御ノードでローカルに実行されますが、プレイ内のすべてのタスクの実行に対して持続するホストへの接続が確立されます。
デフォルトでは、Ansibleプレイはリモートホストからシステムファクトを自動的に収集します。ただし、ローカルでプレイを実行すると、Ansible はリモートホストではなく Ansible 制御ノードからファクトを収集します。制御ノードのファクトが収集されないようにするには、プレイブックに gather_facts: no
を含めます。
SSH経由のNETCONFセッション(デフォルト)を使用してジュニパーネットワークスのモジュールを実行する場合、JunosデバイスでNETCONFが有効になっている必要があります。他のタスクを実行する前に、各デバイスで NETCONF が有効になっているかどうかを明示的にテストするシンプルなタスクをプレイブックに作成することを推奨します。このタスクがいずれかのホストで失敗した場合、デフォルトでは、Ansible はこのホストの残りのタスクを実行しません。このテストを行わないと、Playbook の実行中に、この問題と別の問題のどちらが失敗の原因であるかが示されない一般的な接続エラーが発生する可能性があります。
プレイブックは YAML で表現されます。YAMLは空白を区別し、インデントは重要です。したがって、プレイブックでは、常にタブではなくスペースを使用する必要があります。YAML では、ハイフン (-) が前に付いた項目はリスト項目と見なされ、 key: value
表記はハッシュを表します。Ansibleプレイブックの作成の詳細については、 https://docs.ansible.com/ansible/latest/playbook_guide/playbooks.html の公式Ansibleドキュメントを参照してください。
以下のセクションでは、Junosデバイス上でAnsibleモジュールを実行するシンプルなプレイブックを作成して実行する手順について説明します。
プレイブックの作成
Junos デバイスでタスクを実行するシンプルなプレイブックを作成するには、次の手順に従います。
プレイブックを実行する
Playbook を実行するには、次のようにします。
-
制御ノードで
ansible-playbook
コマンドを発行し、プレイブックのパスと必要なオプションを指定します。user@ansible-cn:~$ ansible-playbook junos-get-facts.yaml PLAY [Get Device Facts] *************************************************** TASK [Check NETCONF connectivity] ***************************************** ok: [dc1a.example.net] TASK [Retrieve information from Junos devices] **************************** ok: [dc1a.example.net] TASK [Print version] ****************************************************** ok: [dc1a.example.net] => { "junos.version": "19.4R1.10" } PLAY RECAP **************************************************************** dc1a.example.net : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0