7.4. 使用 certificate RHEL 系统角色指定在证书颁发前或之后要运行的命令
使用 certificate
系统角色,您可以使用 Ansible Core 在签发或更新证书前后执行命令。
在以下示例中,管理员确保在为 www.example.com
发布或更新自签名证书前停止 httpd
服务,然后再重启该服务。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
步骤
创建包含以下内容的 playbook 文件,如
~/playbook.yml
:--- - hosts: managed-node-01.example.com roles: - rhel-system-roles.certificate vars: certificate_requests: - name: mycert dns: www.example.com ca: self-sign run_before: systemctl stop httpd.service run_after: systemctl start httpd.service
-
将
name
参数设置为证书的所需名称,如mycert
。 -
将
dns
参数设置为证书中包含的域,如www.example.com
。 -
将
ca
参数设置为您要用来发布证书的 CA,如自签名。
-
将
run_before
参数设置为在签发或续订证书之前要执行的命令,如systemctl stop httpd.service
。 -
将
run_after
参数设置为在签发或续订此证书后要执行的命令,如systemctl start httpd.service
。
默认情况下,
certmonger
会在证书过期前自动尝试续订证书。您可以通过将 Ansible playbook 中的auto_renew
参数设置为no
来禁用此功能。-
将
验证 playbook 语法:
$ ansible-playbook --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
其他资源
-
/usr/share/ansible/roles/rhel-system-roles.certificate/README.md
文件 -
/usr/share/doc/rhel-system-roles/certificate/
directory