てくなべ (tekunabe)

ansible / network / automation

[Ansible] ios_config モジュールはデフォルトでは copy run start しない

■ デフォルトでは copy run start によるコンフィグ保存をしない

Ansible には、Cisco IOS ネットワーク機器に対して設定変更などができる ios_config モジュールがあります。 lines オプションなどを利用して実行したいコマンドを指定します。

  • 使用例
- name: test
  ios_config:
    lines:
      - ntp server 10.0.0.123

デフォルトでは、コマンド実行後は copy runnning-config start-config コマンドによるコンフィグ保存をしません。( ios_config モジュールのドキュメント を確認すると分かるのですが、時々忘れそうになるので書いておきます。)

もしコンフィグ保存をする場合は、save_when オプションを利用します。


save_when オプション で選択できる値

save_when オプションでは、コンフィグを保存する条件を以下の4つから選択できます。

選択値 説明 利用可能バージョン
always 実際に設定変更があってもなくても、常にコンフィグ保存します。タスクとしては changed になります。 2.4
never コンフィグ保存をしません(デフォルト 2.4
modified 当該タスクで実際に設定変更されたかどうかに関わらず、startup-configrunning-config に差分がある場合、コンフィグ保存する。 2.4
changed 当該タスクで、実際に設定変更があった場合、コンフィグ保存します。 2.5
  • save_when オプションの使用例
- name: test
  ios_config:
    lines:
      - ntp server 10.0.0.123
    save_when: changed  # このタスクで実際に設定変更があった場合コンフィグ保存

必要に応じて save_when オプションを指定しましょう。


補足

ios_system など、他の設定変更系モジュールも、コンフィグ保存しません。これらのモジュールには save_when オプションが無いので、もしコンフィグ保存をする場合は、別タスクで ios_configsave_when を指定することになると思います。