检测从Ansible调用Certbot时是否进行了更改

检测从Ansible调用Certbot时是否进行了更改,ansible,Ansible,我已通过Ansible成功执行certbot,具体如下: - name: Create and Install Cert Using Nginx Plugin command: "certbot --nginx {% for host in certbot_domains %} -d {{ host }} {% endfor %} -m {{ certbot_email }} --agree-tos --noninteractive --redirect" beco

我已通过Ansible成功执行certbot,具体如下:

- name: Create and Install Cert Using Nginx Plugin
  command: "certbot --nginx {% for host in certbot_domains %}  -d {{ host }} {% endfor %} -m {{ certbot_email }} --agree-tos --noninteractive --redirect"
  become: true
  become_user: root
然而,即使没有任何更改,Ansible也会将其标记为“更改”

我遇到这个问题,建议使用Post钩子来触摸文件(
--Post钩子“touch change\u occured”
),但我不确定下一步该怎么做

当:检测到该文件时,是否注册结果并使用
changed\u?如果是,语法是什么?我能找到的所有文件存在性检查似乎都是整个任务,而不是在:
语句中进行
changed\u


有没有更好的方法来检测certbot是否真的做了任何更改?

从ansible的角度来看,我相信你会想要
--post hook”/bin/true“
,然后
注册:certbot\u输出
在certbot\u输出中的“'Running post hook command'”时发生更改。stdout

-name:使用Nginx插件创建和安装证书
命令:>-
certbot--nginx{%for主机在certbot_域%}-d{{host}}{%endfor%}
-m{{certbot_email}
--同意tos——非交互——重定向
--post hook“/bin/true”
寄存器:certbot_输出
更改了certbot\u output.stdout中的“运行post hook命令”时的\u
变成:真的
成为用户:root

从ansible的角度来看,在流程输出中使用字符串检测更容易,因为检测任何写入文件的时间戳将需要第二个
stat:
任务,该任务使“certbot命令是否更改?”“一个很难回答的问题

该命令的输出中是否包含让您知道发生了更改的文本,或者它只是无声的?而且,不管怎样,从ansible的角度来看,我相信你会想要
——post hook“echo///CHANGED///”
,然后
注册:certbot
CHANGED\u当:“///CHANGED”在certbot.stdout'
类型deal时,我可以想出使用ansible的好理由,但我只是想确保你已经用
cron
更新证书的简单性和可靠性来衡量这些。或者您可以同时使用-
cron
进行更新,并使用Ansible验证证书的有效期是否少于X天。@mdaniel发布后不久,我发现了类似的情况。。。如果执行post hook,Ansible将宣布“运行post hook命令:…”。因此,我使用了
--post hook“echo>/dev/null 2>&1
并在certbot\u output.stdout中的“'Running post hook command'”时更改了
。如果您想将其作为答案发布,我很乐意接受这个好的问题@bitnerant!这是更大的Ansible playbook的一小部分(它还添加了一个用于更新证书的cron任务).主要目标是让我再次运行剧本,以进行其他更改,而certbot不会在没有更改的情况下说什么更改