syedur_rahman.vrf_command
vrf_command
このAnsibleネットワークロールは、VRF対応のネットワークコマンドをネットワークデバイスに動的に送信する機能を提供します。現在、これはIOS / EOS / NXOSデバイスでサポートされています。
このロールは、以下のモジュールのデフォルトの動作を強化することを目的としています:
ios_command
nxos_command
eos_command
デモ
この例のデモの詳細については、Example Playbook 2を参照してください。
要件
特になし。
ロール変数
以下の値は、要件に基づいて更新する必要があります(defaults/main.yml
を参照):
vrf_command_list:
- "show ip route vrf <vrf>"
- "show version"
vrf_command_list
は、ネットワークデバイスに対して実行したいすべてのコマンドを含むように更新する必要があります。表示コマンドをVRF対応の方法で動作させるには、上記のように<vrf>
という構文を使用します。
コマンド内の<vrf>
は、デバイス上で利用可能なVRFとグローバルテーブルと置き換えられます。たとえば、デバイスがdev
およびprod
というVRFを持っている場合、show ip route vrf <vrf>
コマンドはダイナミックに次のように展開されます:
show ip route
show ip route vrf dev
show ip route vrf prod
このロールを通じて、通常の非VRF関連コマンドも実行できることに注意してください。
出力変数
このロールは、ユーザーの便利のためにvrf_command_output
というカスタム出力変数を生成します。
データ構造の形式は次のとおりです:
vrf_command_output:
- command: "show ip route vrf dev"
failed: False
output: "...77.77.77.0が直接接続されている、FastEthernet1/0\n..." (省略)
- command: "show blah blah"
failed: True
output: "...% 無効な入力が検出されました..." (省略)
このデータ構造は、値のリストを返します。各リスト項目には3つのキーがあります。
command
- ネットワークデバイスに対して実行された表示コマンド。failed
-true
の場合はコマンドが失敗し、false
の場合はコマンドが正常に実行されたことを示すブール値。output
- 表示コマンドの出力。
Example Playbook 1
以下の例のプレイブックは、ロールの基本的な使用方法を示しています。
- hosts: all
vars:
vrf_command_list:
- "show ip interface brief vrf <vrf>"
- "show ip route vrf <vrf>"
- "show interface status"
- "show version"
roles:
- syedur_rahman.vrf_command
Example Playbook 2
以下の例のプレイブックは、vrf_command_output
を操作してテキストファイルにダンプする方法を示しています。
- hosts: all
vars:
vrf_command_list:
- "show ip route vrf <vrf>"
roles:
- syedur_rahman.vrf_command
- hosts: localhost
tasks:
- template:
src: "show_command.j2"
dest: "{{ item }}.txt"
loop: "{{ groups['all'] }}"
以下がshow_command.j2
テンプレートです。
{% for show_command_info in hostvars[item]['vrf_command_output'] %}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{{ show_command_info['command'] }}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{{ show_command_info['output'] }}
{% endfor %}
これにより、デバイスごとに次のような出力ファイルが作成されます。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route vrf management
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IPルートテーブル VRF "management"のための
'*'は最も良いユニキャスト次ホップを示します
'**'は最も良いマルチキャスト次ホップを示します
'[x/y]'は[優先度/メトリック]を示します
'%<string>'は出力でVRF <string>を示します
192.168.12.0/24, ubest/mbest: 1/0, attached
*via 192.168.12.135, mgmt0, [0/0], 05:12:12, direct
192.168.12.135/32, ubest/mbest: 1/0, attached
*via 192.168.12.135, mgmt0, [0/0], 05:12:12, local
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
show ip route
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IPルートテーブル VRF "default"のための
'*'は最も良いユニキャスト次ホップを示します
'**'は最も良いマルチキャスト次ホップを示します
'[x/y]'は[優先度/メトリック]を示します
'%<string>'は出力でVRF <string>を示します
2.2.2.0/24, ubest/mbest: 1/0, attached
*via 2.2.2.2, Lo100, [0/0], 05:12:28, direct
2.2.2.2/32, ubest/mbest: 1/0, attached
*via 2.2.2.2, Lo100, [0/0], 05:12:28, local
2.3.4.0/24, ubest/mbest: 1/0, attached
*via 2.3.4.5, Lo23, [0/0], 05:12:28, direct
2.3.4.5/32, ubest/mbest: 1/0, attached
*via 2.3.4.5, Lo23, [0/0], 05:12:28, local
ライセンス
MIT
著者情報
このロールは2020年にSyedur Rahmanによって作成されました。