希望能在测试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。

广告
将在 10 秒后关闭
bannerAds