Menu Close

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

有了证书系统颁发和续订角色,您可以在证书发布或更新前后使用 Ansible Core 来执行命令。

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

注意

默认情况下,certmonger 会在证书过期前自动尝试续订证书。您可以通过将 Ansible playbook 中的 auto_renew 参数设为 no 来禁用此功能。

先决条件

  • Ansible Core 软件包安装在控制机器上。
  • 您已在要运行 playbook 的系统上安装了 rhel-system-roles 软件包。

    有关 RHEL 系统角色以及如何应用它们的详情,请参阅 RHEL 系统角色入门

流程

  1. 可选:创建一个清单文件,如 inventory.file

    $ touch inventory.file
  2. 打开清单文件并定义要请求证书的主机,例如:

    [webserver]
    server.idm.example.com
  3. 创建 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
  4. 保存该文件。
  5. 运行 playbook:

    $ ansible-playbook -i inventory.file request-certificate.yml

其他资源

  • 请参阅 /usr/share/ansible/roles/rhel-system-roles.certificate/README.md 文件。
  • 请参阅 ansible-playbook(1) 手册页。