16.4. 指定在使用 certificate 系统角色前或之后要运行的命令
使用 certificate 系统角色,您可以使用 Ansible Core 在签发或更新证书前后执行命令。
在以下示例中,管理员确保在为 www.example.com 发布或更新自签名证书前停止 httpd 服务,然后再重启该服务。
注意
默认情况下,certmonger 会在证书过期前自动尝试续订证书。您可以通过将 Ansible playbook 中的 auto_renew 参数设为 no 来禁用此功能。
先决条件
- Ansible Core 软件包安装在控制机器上。
-
您已在要运行 playbook 的系统上安装了
rhel-system-roles软件包。
流程
可选:创建一个清单文件,如
inventory.file:$ *touch inventory.file*打开清单文件并定义要请求证书的主机,例如:
[webserver] server.idm.example.com创建 playbook 文件,如
request-certificate.yml:-
将
hosts设置为包含您要对其请求证书的主机,如webserver。 将
certificate_requests变量设置为包含以下内容:-
将
name参数设为所需证书的名称,如mycert。 -
将
dns参数设要在证书中包含的域,如www.example.com。 -
将
ca参数设为您要用来发布证书的 CA,如self-sign。 -
将
run_before参数设为在签发或续订证书之前要执行的命令,如systemctl stop httpd.service。 -
将
run_after参数设为在签发或续订此证书后要执行的命令,如systemctl start httpd.service。
-
将
在
roles下设置rhel-system-roles.certificate角色。这是本例的 playbook 文件:
--- - hosts: webserver vars: certificate_requests: - name: mycert dns: www.example.com ca: self-sign run_before: systemctl stop httpd.service run_after: systemctl start httpd.service roles: - rhel-system-roles.certificate
-
将
- 保存该文件。
运行 playbook:
$ *ansible-playbook -i inventory.file request-certificate.yml*