希望能在测试Ansible的Dry Run时解决安装等问题
【事件发生】
每次进行Ansible的Dry Run测试时,无论是在服务启动时还是在创建符号链接任务中,都会出现找不到等错误,导致无法完整地检查角色。连CI工具最终使用的命令也是进行Dry Run测试的相同命令…
# ansible-playbook -i hosts playbook.yml -vvv --check
解决问题
通过将`tasks`中的`when`设置为`not ansible_check_mode`,可以跳过一些可能会失败的任务。
赶快… …)
■ YAML的编写方式
[root@localhost work]# cat test/tasks/01_test_check.yml
# Check status of taks
- name: Check status of test
systemd:
state: started
enabled: yes
name: "{{ test.name }}"
when: not ansible_check_mode ←これを書く
[root@localhost work]#
■ 能否跳过这个日志记录
TASK [Test : Check status of test]
********************************************************************************************************************
task path: /work/test/tasks/01_test_checkl.yml:9
skipping: [test1] => {
"changed": false,
"skip_reason": "Conditional result was False" ←skipしてくれてい〜る!!
}
【备注】
按照文档的要求尝试了check_mode: no,但结果变成了被严厉批评。
看起来,即使是Dry Run模式,在check_mode为no时也会强制执行。
因此,如果没有安装程序或文件不存在等情况,会返回false并中断执行。
tasks:
- name: this task will make changes to the system even in check mode
command: /something/to/run --even-in-check-mode
check_mode: no
- name: this task will always run under checkmode and not change the system
lineinfile:
line: "important config"
dest: /path/to/myconfig.conf
state: present
check_mode: yes
>Enabling or disabling check mode for tasks
https://docs.ansible.com/ansible/latest/user_guide/playbooks_checkmode.html#id2
请参考
在运行检查模式时,跳过 Ansible 任务?
检查模式:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_checkmode.html#关于检查模式的变量信息
ansible_check_mode指的是Ansible中的一个变量,用于判断是否处于检查模式下。有关ansible_check_mode的更多信息,请参考https://docs.ansible.com/ansible/2.5/user_guide/playbooks_variables.html?highlight=ansible_check_mode。