てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible] cisco.ios.ios_ping モジュールに size と df_bit オプションを追加しました

はじめに

Cisco IOS のネットワーク機器 から 指定の宛先に ICMP による Ping を実行する cisco.ios.ios_ping というモジュールがあります。

指定した宛先などのオプションに基づいて ping コマンドを生成し、IOS の機器上で実行して結果を表示します。

[Ansible] -----> [IOS] -- ICMP Ping -->[dest指定先]

この cisco.ios.ios_ping モジュールに、ping コマンドの df-bitsize オプションに相当するオプションを追加しました。cisco.ios collection 1.3.0 としてリリースされました。

この2つのオプションの使い方をご紹介します。

  • 動作確認環境
    • Ansible 2.10.6 / 2.9.17
    • cisco.ios collection 1.3.0

オプションの説明

オプション名 デフォルト 説明
df_bit bool false DF bit を立てるかどうかの指定 。ping コマンドの df-bit オプションに相当
size int モジュールとしてはデフォルトなし サイズの指定。ping コマンドの size オプションに相当

使用例

size のみ指定

サイズを指定する例です。

- hosts: ios
  gather_facts: false

  tasks:
    - name: size
      cisco.ios.ios_ping:
        dest: 192.168.1.1
        size: 1400

ping 192.168.1.1 size 1400 コマンドが実行されます。

df-bit のみ指定

DF bit を指定する例です。

- hosts: ios
  gather_facts: false

  tasks:
    - name: df_bit
      cisco.ios.ios_ping:
        dest: 192.168.1.1
        df_bit: true

ping 192.168.1.1 df-bit コマンドが実行されます。

df_bitsize の指定

併用もできます。

- hosts: ios
  gather_facts: false

  tasks:
    - name: size and df_bit
      cisco.ios.ios_ping:
        dest: 192.168.1.1
        size: 1400
        df_bit: true

ping 192.168.1.1 size 1400 df-bit コマンドが実行されます。

トラブルシューティング

もし、Playbook 実行時に、以下のように指定されたオプションはサポートされない旨のエラーが出た場合は、cisco.ios collection 1.3.0 以上ががインストールされているかどうか、それを Playbook が参照しているかをご確認ください。モジュール名を ios_ping と指定してだめでしたら cisco.ios.ios_ping のような FQCN 表記を試してみてください。

"msg": "Unsupported parameters for (ios_ping) module: df_bit Supported parameters include: auth_pass, authorize, count, dest, host, password, port, provider, source, ssh_keyfile, state, timeout, username, vrf"

おわりに(おまけ)

今回、はじめて機能追加をしてみました。追加したい処理そのものより、ansible-test によるテストの実行方法を調べるほうが時間がかかってしまいました。

参考: Testing Ansible — Ansible Documentation

試行錯誤記録(スレッド続きます)

[2022/08/02 追記]

cisco.ios コレクション 3.2.0 の v6 対応時に size オプションが無くなってしまったようです。

IOS Ping module (#595) · ansible-collections/cisco.ios@1af932e · GitHub

cisco.ios/CHANGELOG.rst at main · ansible-collections/cisco.ios · GitHub