Ansibleを使用して実行中のデバイスからファクトを取得Junos OS
ジュニパーネットワークスは、Ansibleを使用してJunos OSを実行するデバイスをサポートし、デバイスで運用と設定のタスクを実行できる Ansibleモジュールを提供します。モジュールは、デバイスへのインターフェイスに PyEZ 管理対象デバイス Junos PyEZ Junos XML API を NETCONF 上で使用Junos Python を必要としません。そのため、Ansible を使用してデバイスで Junos OS を実行する場合、Ansible モジュールをコントロール ノード上でローカルに実行する必要があります。そのため、Ansibleのデフォルトでは、マネージドノードではなく、Ansibleコントロールノードからファクトを収集します。
ジュニパーネットワークスは、アクティブ構成を含むデバイスのファクトを、Junos OS を実行しているデバイスから収集できるモジュールを提供しています。表 1 に、使用可能なモジュールの概要を示します。モジュールは PyEZ Junos PyEZ ファクト収集システムを使用してデバイスの情報を取得します。PyEZ のJunos収集システムと、返された辞書キーの完全なリストの詳細については、 jnpr.junos.facts を参照してください。
コンテンツ セット |
モジュール名 |
---|---|
|
|
と facts
モジュール juniper_junos_facts
は、デバイスの情報を辞書 ansible_facts.junos
で返します。これらのモジュールを使用すると、戻されたデータをローカルの Ansible コントロール ノード上のファイルに保存することもできます。取得した情報を保存するディレクトリを指定するには、module の引数を含め、ターゲット ディレクトリへの savedir
パスを定義します。引数を指定すると、各デバイスで次のファイルが生成されます。デバイスから取得した情報の値は、モジュールに渡されるホスト名とは異なる savedir
hostname 可能性があります hostname
。
hostname -facts.json— デバイスのファクト(JSON 形式)
hostname -inventory.xml— デバイスのハードウェア インベントリ(XML 形式)を使用
たとえば、以下のプレイブックは、インベントリ グループ内の各デバイスのデバイスのファクトを取得し、Ansible Control Node のプレイブック ディレクトリにある個別のファイルに各デバイスのデータを保存します。プレイブックはローカルでジュニパーネットワークスモジュールを実行します。Ansibleは制御ノードからファクトを収集します。プレイブックには、Ansibleが制御ノードからファクトを収集するのではなく、収集にモジュールを使用してサーバーからファクトを取得する引数 gather_facts: no
facts
juniper.device
が含管理対象デバイス。デバイスでの認証を行う場合、この例ではデフォルトの場所で既存のSSHキーを使用するため、プレイブック内のモジュールの認証情報は facts
明示的に提供されません。
--- - name: Get device facts hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve device facts and save to file juniper.device.facts: savedir: "{{ playbook_dir }}"
デフォルトでは、 facts
および juniper_junos_facts
モジュールはデバイス設定を返しません。デバイスのアクティブな設定をデバイスのファクトに加えて返す場合は、 オプションを含め、設定を返す形式 config_format
を指定します。受け入れ可能な形式の値は 'json'
、 'set'
、 'text'
'xml'
です。要求された形式は、デバイスで実行されているJunos OSでサポートされている必要があります。
オプションを含める場合、モジュール応答の辞書には、指定された形式で設定された鍵が 1 つの複数行の文字列 config_format
ansible_facts.junos
config
で含まれます。オプションが savedir
含まれている場合、設定データ はファイル に書き込まれません。
Ansibleを使用してJunos OSを実行しているデバイスから設定データを取得し、データをファイルに保存するには、 または モジュールの代わりに、 または モジュール config
juniper_junos_config
facts
を使用 juniper_junos_facts
します。詳細については、「 Ansible を使用してネットワーク設定を取得または比較Junos OSする 」 を参照してください。
次の例のプレイブックでは、次の操作を実行します。
インベントリ グループ内の各デバイスのデバイスのファクトとアクティブな設定を取得します。
Ansible Control Nodeのプレイブックディレクトリにある別のファイルに、各デバイスのファクトとハードウェアインベントリを保存します。
各デバイスの設定を標準出力に印刷します。
--- - name: Get device facts and configuration hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve device facts and configuration and save facts to file juniper.device.facts: savedir: "{{ playbook_dir }}" config_format: "xml" register: result - name: Print configuration debug: var: result.ansible_facts.junos.config
user@ansible-cn:~$ ansible-playbook facts.yaml PLAY [Get device facts and configurations] ********************************** TASK [Retrieve device facts and configuration and save facts to file] ******* ok: [dc1a.example.net] TASK [Print configuration] ************************************************** ok: [dc1a.example.net] => { "result.ansible_facts.junos.config": "<configuration commit-seconds=\"1605564153\" commit-localtime=\"2020-11-16 14:02:33 PST\" commit-user=\"admin\">\n <version>20191212.201431_builder.r1074901</version>\n [...output truncated...] </configuration>\n" } PLAY RECAP ****************************************************************** dc1a.example.net : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0