syedur_rahman.vrf_command

vrf_command

Ansible Galaxy

このAnsibleネットワークロールは、VRF対応のネットワークコマンドをネットワークデバイスに動的に送信する機能を提供します。現在、これはIOS / EOS / NXOSデバイスでサポートされています。

このロールは、以下のモジュールのデフォルトの動作を強化することを目的としています:

  • ios_command
  • nxos_command
  • eos_command

デモ

この例のデモの詳細については、Example Playbook 2を参照してください。

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によって作成されました。

インストール
ansible-galaxy install syedur_rahman.vrf_command
ライセンス
mit
ダウンロード
87
所有者
A network engineer with a passion for all things automation.