このページの内容
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デバイスでタスクを実行するためのシンプルなプレイブックを作成するには:
プレイブックを実行する
この例のプレイブックでは、接続を localとして定義する次のAnsibleインベントリ ファイルを使用しています。
[dc1] dc1a.example.com ansible_host=198.51.100.1 [dc1:vars] ansible_connection=local
プレイブックを実行するには:
-
制御ノードで
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