使用检查模式时,如何对Ansible模板任务运行验证?

使用检查模式时,如何对Ansible模板任务运行验证?,ansible,ansible-2.x,ansible-template,Ansible,Ansible 2.x,Ansible Template,在检查模式下运行Ansible(--check)时,似乎没有为模板任务运行验证命令: - 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能够区分在检查模式下运行时要安装的现有目标文件和

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

- 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能够区分在检查模式下运行时要安装的现有目标文件和新文件之间的差异,因此它应该能够验证新文件。现在,如果模板包含错误,它将仅在实际运行中显示,而不是在检查模式下显示


有没有一种方法可以在检查模式下验证模板文件?

我认为您要寻找的是,它有一个非常令人困惑的双重否定名称,但实际上允许任务选择退出检查模式抑制


但是,在您的情况下,您需要先将该文件暂存到某个位置,这样您就可以将模板渲染到磁盘,并让
nginx
对其进行测试,让
mv/tmp/nginx.conf/usr/local/etc/nginx/nginx.conf及其
notify:
由实际检查模式保护。

你知道作为单独任务创建单独的文件是否会让验证在检查模式下运行吗?我不完全理解你的问题,但如果你是说“但是检查模式会阻止
模板:
执行,”然后,是的,当然您也必须选择
模板:
退出检查模式,以及“检查模式现在将文件写入磁盘”“在这种情况下,伴随itSo以检查模式运行的风险仍然会将实际模板写入目标系统?它会将其写入某个位置,是的,除非
nginx
支持检查stdin(如果仍能正确找到任何包含的资源,它可能会这样做);但它只会在运行for real模式时覆盖for real,如果我理解正确,我可以添加两个任务(一个用于呈现临时文件,另一个用于手动验证)并在检查模式下运行这些任务。然后我将模板任务更改为仅在验证任务成功时运行的复制任务?这基本上感觉像是一个手动的“检查模式”黑客…有一个开放的功能要求关于这一点上