不发生变化
本文是Ansible lint Advent Calendar 2022的第22篇文章。
这次我们将解释规则不会改变的情况。
不改变-当
no-changed-when 参数用于验证ansible.builtin.command模块和ansible.builtin.shell模块中的任务是否保证了幂等性。
在Ansible中,几乎每个模块都保证了幂等性,但在ansible.builtin.command模块和ansible.builtin.shell模块中,用户需要指定处理变得幂等的条件。
幂等性是指
维基百科中大致解释了幂等性,指的是进行某个操作一次或多次结果都相同的概念。
有问题的代码 de
每次执行此处理时将返回 changed。
---
- name: Example playbook
hosts: localhost
tasks:
- name: Does not handle any output or return codes
ansible.builtin.command: cat {{ my_file | quote }} # <- 実行するたびに changed ステータスを返す。冪等性が保証されていない。
修改后的代码
将指定条件返回”changed”,同时确保其他情况下的幂等性。
---
- name: Example playbook
hosts: localhost
tasks:
- name: Handle shell output with return code
ansible.builtin.command: cat {{ my_file | quote }}
register: my_output # <- コマンドの結果を変数にセットする
changed_when: my_output.rc != 0 # <- 変数の値に対しステータスが changed になる条件を指定する
请参考以下网站
- no-changed-when — Ansible Lint Documentation