检测从Ansible调用Certbot时是否进行了更改
我已通过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
- 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不会在没有更改的情况下说什么更改