首页 > 解决方案 > 使用检查模式时如何对 Ansible 模板任务运行验证?

问题描述

在检查模式 ( --check) 下运行 Ansible 时,似乎validate没有为template任务运行该命令:

- name: Nginx is configured
  template:
    src: nginx.conf.j2
    dest: /usr/local/etc/nginx/nginx.conf
    validate: /usr/local/sbin/nginx -t -c %s
  notify: Reload Nginx

由于 Ansible 能够在检查模式下运行时区分现有目标和要安装的新文件,因此它应该能够验证新文件。就像现在一样,如果模板包含错误,它只会在实际运行中显示,而不是在检查模式下显示。

有没有办法在检查模式下验证模板文件?

标签: ansibleansible-2.xansible-template

解决方案


我认为您正在寻找的东西是check_mode: no具有非常令人困惑的双重否定名称,但有效地允许任务选择退出检查模式抑制。

但是,在您的情况下,您将希望首先将该文件暂存到某个地方,这样您就可以将模板渲染到磁盘并对其进行nginx测试,而将mv /tmp/nginx.conf /usr/local/etc/nginx/nginx.conf其保留在notify:实际检查模式下。


推荐阅读