不发生变化

本文是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
广告
将在 10 秒后关闭
bannerAds