■ match オプション を none にするとべき等性を考慮しない
Ansible には、Cisco IOS 機器にコンフィグ投入などができる ios_config
というモジュールがあります。
このモジュールはデフォルトで、べき等性を保とうとする仕様になっています。
大まかな流れとしては以下の通りです。
- 事前に現状のコンフィグを取得
- オプションで指定されたコンフィグとの差分を確認
- 差分コンフィグのみを投入
なんらかの事情で、べき等性を考慮せずに無条件でコンフィグを投入したい場合は match
オプションに none
を指定します。
ios_config
モジュールの match オプションの none の説明if match is set to none, the module will not attempt to compare the source configuration with the running configuration on the remote device.
■ 検証
簡単な例で検証した結果を記載します。
環境: Ansbile 2.7.0
match: no
を指定しない場合(デフォルト)
Playbook
- hosts: iosal gather_facts: no tasks: - name: set ntp ios_config: lines: - ntp server 10.0.0.123
初回実行 (changed=1)
TASK [set ntp] ************************************************************* changed: [iosal1] PLAY RECAP ***************************************************************** iosal1 : ok=1 changed=1 unreachable=0 failed=0
今までなかっコンフィグを指定したため、実際に投入され、changed になりました。
再実行 (changed=0: べき等性を考慮した結果)
同じ Playbook を使用してもう一度実行します。
TASK [set ntp] ************************************************************* ok: [iosal1] PLAY RECAP ***************************************************************** iosal1 : ok=1 changed=0 unreachable=0 failed=0
タスクは changed にならず、べき等性を考慮した結果となりました。
match: none
を指定する場合
先の検証で投入したコンフィグはいったん削除し、match: none
を指定した Playbook で検証します。
Playbook
- hosts: iosal gather_facts: no tasks: - name: set ntp ios_config: lines: - ntp server 10.0.0.123 match: none # 追加
初回実行 (changed=1)
TASK [set ntp] ************************************************************* changed: [iosal1] PLAY RECAP ***************************************************************** iosal1 : ok=1 changed=1 unreachable=0 failed=0
今までなかっコンフィグを指定したため、実際に投入され、changed になりました。
再実行 (changed=1: べき等性を考慮しなかった結果)
同じ Playbook を使用してもう一度実行します。
TASK [set ntp] ************************************************************* changed: [iosal1] PLAY RECAP ***************************************************************** iosal1 : ok=1 changed=1 unreachable=0 failed=0
また changed になり、べき等性を考慮しなかった結果となりました。