はじめに
Cisco IOS のネットワーク機器 から 指定の宛先に ICMP による Ping を実行する cisco.ios.ios_ping
というモジュールがあります。
指定した宛先などのオプションに基づいて ping
コマンドを生成し、IOS の機器上で実行して結果を表示します。
[Ansible] -----> [IOS] -- ICMP Ping -->[dest指定先]
この cisco.ios.ios_ping
モジュールに、ping
コマンドの df-bit
と size
オプションに相当するオプションを追加しました。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_bit
と size
の指定
併用もできます。
- 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
試行錯誤記録(スレッド続きます)
はじめて Ansible のモジュールに機能追加のプルリク出してみました。これまではドキュメント typo 修正レベルだったのですが。どうなることか・・
— よこち (@akira6592) 2021年1月24日
changelog のファイル名の頭につける数字が何なのか最初わからなかったんですが、issueとかPRの番号なんですね。
[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