我有 Ansible 角色来安装/激活 Trendmicro。在任务中,有一个操作通过调用 bash 命令来完成该激活 --
- name: Execute /opt/imal/bin/dsupdstat.sh
ansible.builtin.command: /opt/imal/bin/dsupdstat.sh
changed_when: true
failed_when: false
但是由于这个 dsupdstat.sh 总是需要在开始时创建一个锁定文件并在最后删除它。因此,Ansible Molecule 测试不断失败,并出现“幂等”错误……但是锁定文件的创建/删除是不可避免的。所以看起来即使我用
changed_when: true
标记该动作也没有希望通过这个分子测试...
现在我必须使用它来忽略在分子测试中运行该操作--
- name: Execute /opt/imal/bin/dsupdstat.sh
ansible.builtin.command: /opt/imal/bin/dsupdstat.sh
when: not lookup('env', 'MOLECULE_SCENARIO') is defined
changed_when: true
failed_when: false
但我想——有没有更好的方法让分子理解这个动作必须做系统改变并让它通过?
尝试以下操作,但首先确保 .sh 脚本可执行。
- name: Execute /opt/imal/bin/dsupdstat.sh
ansible.builtin.command:
cmd: /opt/imal/bin/dsupdstat.sh
when: lookup('env', 'MOLECULE_SCENARIO') is not defined
changed_when: true
failed_when: false