Red Hat Training

A Red Hat training course is available for RHEL 8

77.4. 使用证书系统角色指定在证书颁发前或之后要运行的命令

使用 证书 角色,您可以使用 Ansible Core 在签发或更新证书前和之后执行命令。

在以下示例中,管理员确保在为 www.example.com 发布或更新自签名证书前停止 httpd 服务,然后再重启该服务。

先决条件

流程

  1. 创建包含以下内容的 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 来禁用此功能。

  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml

其它资源

  • /usr/share/ansible/roles/rhel-system-roles.certificate/README.md 文件
  • /usr/share/doc/rhel-system-roles/certificate/ directory