ansibleguy.infra_certs

Ansible 角色 - 证书生成器

Ansible 角色用于在 Linux 服务器上创建证书。

请给我买杯咖啡

Molecule 测试状态 YamlLint 测试状态 PyLint 测试状态 Ansible-Lint 测试状态 Ansible Galaxy

Molecule 日志: 简短, 完整

测试过:

  • Debian 11
  • Debian 12

安装

# 最新版
ansible-galaxy role install git+https://github.com/ansibleguy/infra_certs

# 从 Galaxy 安装
ansible-galaxy install ansibleguy.infra_certs

# 或者安装到自定义角色路径
ansible-galaxy install ansibleguy.infra_certs --roles-path ./roles

# 安装依赖
ansible-galaxy install -r requirements.yml

使用方法

想要一个简单的 Ansible 图形界面吗?可以查看我的 Ansible WebUI

注意事项

自签名和最小 CA 模式每次运行只会创建一个证书。

重新运行时可以使用 'certs' 标签来节省一些开销。

LetsEncrypt 模式会根据定义创建/删除多个证书。

配置示例

LetsEncrypt 配置示例:

certs:
  mode: 'le_certbot'
  path: '/etc/apache2/ssl'
  letsencrypt:
    certs:
      myNiceSite:
        domains: ['myRandomSite.net', 'ansibleguy.net']
        email: '[email protected]'
    service: 'apache'

自签名配置示例:

certs:
  mode: 'selfsigned'  # 或 'snakeoil'(如果需要更快)
  path: '/etc/nginx/ssl'
  group_key: 'nginx'
  owner_cert: 'nginx'
  cert:
    cn: '我的伟大证书!'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    domains: ['mySoGreat.site', 'ansibleguy.net']
    ips: ['192.168.44.2']
    pwd: !vault ...

最小 CA 配置示例:

certs:
  mode: 'ca'
  path: '/etc/ca/certs'
  mode_key: '0400'
  cert:
    name: 'custom_file_name'  # 将会附加扩展名
    cn: '我的伟大证书!'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    domains: ['mySoGreat.site', 'ansibleguy.net']
  ca:
    path: '/etc/ca'
    cn: '超级证书颁发机构'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    pwd: !vault ...

使用最小 CA 时,可以通过更改 'cert' 配置多次运行角色来创建多个由 CA 签名的证书。

您可能希望使用 'ansible-vault' 加密您的密码:

ansible-vault encrypt_string

执行

运行剧本:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml --ask-vault-pass

还有一些有用的 标签 可用:

  • certs => 忽略 CA 任务;仅生成证书
  • selfsigned
  • config
  • certs

为了解决错误,您可以在运行时设置 'debug' 变量:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes

功能

  • 软件包安装

    • Ansible 依赖(_最小_)
    • 加密依赖
  • 配置

    • 四种可能模式

      • 生成 自签名 证书
      • 使用 最小证书颁发机构 创建签名证书
      • 配置 LetsEncrypt-Certbot 生成公开有效的证书
        • 支持 Nginx 和 Apache
        • 主机需要有指向有效公共 DNS 记录
        • 需要通过 80/tcp 端口公开可达
    • 默认配置

      • 模式 => 自签名

信息

  • 注意: 目前该角色仅支持基于 Debian 的系统。

  • 注意: 大多数角色功能可以选择启用或禁用。

    有关所有可用选项,请查看位于 主默认文件 的默认配置!

  • 注意: 如果您需要 批量管理证书,可以查看 ansibleguy.infra_pki 角色,该角色使您能够创建和管理完整的 公钥基础设施

  • 注意: 证书文件名(_名称变量或公共名称)将进行更新:

    • 空格会转换为下划线
    • 除 "0-9a-zA-Z." 以外的所有字符将被移除
    • 文件扩展名(_crt/chain.crt/key/csr_)将被附加
  • 警告: 并非您提供的每个设置/变量都会被检查有效性。错误的配置可能会导致角色失效!

  • 信息: 为了使 LetsEncrypt 更新正常工作,必须允许对以下地址的出站连接:

    80/tcp,443/tcp+udp 到 acme-v02.api.letsencrypt.org,staging-v02.api.letsencrypt.org(_调试模式_)和 r3.o.lencr.org

关于项目

Meat-role to generate/manage certificates for other roles

安装
ansible-galaxy install ansibleguy.infra_certs
许可证
other
下载
7.6k
拥有者
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg