てくなべ (tekunabe)

ansible / network automation / 学習メモ

ntc-templates のパース結果のキー名は標準化によって変わってきている

はじめに

ネットワーク機器の通常の show コマンド結果を、構造化データにパースしてくれる ntc-templates というパーステンプレート集があります。

TextFSM というパーサーに対応したテンプレートです。

例えば、Cisco IOS の 'show ip interface brief` の結果を以下のようにしてくれます。

        {
            "intf": "GigabitEthernet0/0",
            "ipaddr": "192.168.1.11",
            "proto": "up",
            "status": "up"
        }

ntc-templates は、様々なベンダーにの機器に対応するテンプレートがありますが、構造化データにした際のキー(interface など)が揃っていなかったようです。

そこで、この1年くらい前?から、キー名の標準化が進んできているようです。キー名の標準化は、特定のバージョンでいっぺんに行われているわけではなく、徐々に行われています。

今回は、たまたま気付いた show ip interface brief コマンド結果のキーの変化について Ansible 経由で検証してご紹介します。

検証環境:

  • ansible-core 2.15.7

Playbook

本題からややそれますが、Playbook は以下のものを利用します。

---
- hosts: ios01
  gather_facts: false

  tasks:
    - name: Run show ip interface brief
      ansible.utils.cli_parse:
        command: show ip interface brief
        parser:
          name: ansible.netcommon.ntc_templates
      register: result_parsed

    - name: Debug paresed
      ansible.builtin.debug:
        msg: "{{ result_parsed.parsed }}"

ntc-templates 3.0.0

3.0.0 で Playbook を実行すると以下のようになりあります。

TASK [Debug paresed] ****************************************
ok: [ios01] => {
    "msg": [
        {
            "intf": "GigabitEthernet0/0",
            "ipaddr": "192.168.1.11",
            "proto": "up",
            "status": "up"
        },
        ...(略)...
}

ntc-templates 4.0.0

続いて 4.0.0 での結果です。

TASK [Debug paresed] ******************************************
ok: [ios01] => {
    "msg": [
        {
            "interface": "GigabitEthernet0/0",
            "ip_address": "192.168.1.11",
            "proto": "up",
            "status": "up"
        },
        ...(略)...

比較

それぞれを比較すると以下の違いがあります。略さない方向になっているようです。

項目 3.0.0 4.0.0
インターフェース intf interface
IPアドレス ipaddr ip_address

4.0.0 の Changelog には以下の記述がありました。

Standardize interface capture group by @mjbear in #1419

関連PR: Standardize interface capture group by mjbear · Pull Request #1419 · networktocode/ntc-templates · GitHub

Standardize capture group IP_ADDRESS by @mjbear in #1439

関連PR: Standardize capture group IP_ADDRESS by mjbear · Pull Request #1439 · networktocode/ntc-templates · GitHub

「Breaking Changes」という扱いではないので、見落としてしまうかもしれません。。

おわりに

Changelog で確認する際は、Standardizenormalize といった言葉に注目するとこの手の変更が見つかりそうです。