ansibleguy.infra_certs

Rol de Ansible - Generador de Certificados

Rol de Ansible para crear certificados para usar en un servidor Linux.

Cómprame un café

Estado de la Prueba de Molecule Estado de la Prueba de YamlLint Estado de la Prueba de PyLint Estado de la Prueba de Ansible-Lint Ansible Galaxy

Registros de Molecule: Corto, Completo

Probado en:

  • Debian 11
  • Debian 12

Instalación

# última versión
ansible-galaxy role install git+https://github.com/ansibleguy/infra_certs

# desde galaxy
ansible-galaxy install ansibleguy.infra_certs

# o en una ruta de rol personalizada
ansible-galaxy install ansibleguy.infra_certs --roles-path ./roles

# instalar dependencias
ansible-galaxy install -r requirements.yml

Uso

¿Quieres una interfaz gráfica para Ansible sencilla? Mira mi Ansible WebUI

Notas

Los modos auto-firmado y ca-mínima solo crearán un solo certificado por ejecución.

Las repeticiones pueden ahorrar algo de tiempo usando la etiqueta 'certs'.

El modo LetsEncrypt creará/eliminará múltiples certificados como se define.

Configuración

Ejemplo de configuración para LetsEncrypt:

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

Ejemplo de configuración para auto-firmado:

certs:
  mode: 'selfsigned'  # o 'snakeoil' (si es más rápido)
  # elige 'ca' si utilizas nombres DNS
  #   algunos navegadores no te permitirán conectar usando certificados auto-firmados
  path: '/etc/nginx/ssl'
  group_key: 'nginx'
  owner_cert: 'nginx'
  cert:
    cn: '¡Mi gran certificado!'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    domains: ['mySoGreat.site', 'ansibleguy.net']
    ips: ['192.168.44.2']
    pwd: !vault ...

Ejemplo de configuración para ca-mínima:

certs:
  mode: 'ca'
  path: '/etc/ca/certs'
  mode_key: '0400'
  cert:
    name: 'nombre_archivo_personalizado'  # se añadirá la extensión
    cn: '¡Mi gran certificado!'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    domains: ['mySoGreat.site', 'ansibleguy.net']
  ca:
    path: '/etc/ca'
    cn: 'SUPER Autoridad Certificadora'
    org: 'AnsibleGuy'
    country: 'AT'
    email: '[email protected]'
    pwd: !vault ...

Usando la ca-mínima puedes crear múltiples certificados firmados por la CA al volver a ejecutar el rol con configuraciones de 'cert' cambiadas.

Es posible que desees utilizar 'ansible-vault' para cifrar tus contraseñas:

ansible-vault encrypt_string

Ejecución

Ejecuta el playbook:

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

También hay algunas etiquetas útiles disponibles:

  • certs => ignora tareas de ca; solo genera certificados
  • selfsigned
  • config
  • certs

Para depurar errores, puedes establecer la variable 'debug' en tiempo de ejecución:

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

Funcionalidad

  • Instalación de paquetes

    • Dependencias de Ansible (mínimas)
    • Dependencias Cripto
  • Configuración

    • Cuatro Modos Posibles:

      • Generar certificado auto-firmado
      • Usar una Autoridad Certificadora Mínima para crear certificados firmados
      • Configurar LetsEncrypt-Certbot para generar certificados válidos públicamente
        • Soportado para Nginx y Apache
        • El host necesita tener un registro DNS público válido apuntando a él
        • Debe ser accesible públicamente a través del puerto 80/tcp
    • Configuración predeterminada:

      • Modo => Auto-firmado

Información

  • Nota: este rol actualmente solo soporta sistemas basados en Debian.

  • Nota: La mayoría de las funcionalidades del rol pueden ser habilitadas o deshabilitadas.

    Para todas las opciones disponibles, consulta la configuración predeterminada en el archivo principal de defaults!

  • Nota: Si tienes la necesidad de gestionar certificados en masa, podrías investigar el rol ansibleguy.infra_pki que te permite crear y gestionar una infraestructura completa de Claves Públicas.

  • Nota: El nombre del archivo del certificado (variable name según sea definida o el CommonName) será actualizado:

    • los espacios se transforman en guiones bajos
    • todos los caracteres excepto "0-9a-zA-Z." son eliminados
    • la extensión del archivo (crt/chain.crt/key/csr) será añadida
  • Advertencia: No todas las configuraciones/variables que proporciones serán verificadas por validez. Una mala configuración podría romper el rol!

  • Información: Para que la renovación de LetsEncrypt funcione, debes permitir conexiones salientes a:

    80/tcp, 443/tcp+udp a acme-v02.api.letsencrypt.org, staging-v02.api.letsencrypt.org (modo de depuración) y r3.o.lencr.org

Acerca del proyecto

Meat-role to generate/manage certificates for other roles

Instalar
ansible-galaxy install ansibleguy.infra_certs
Licencia
other
Descargas
7.6k
Propietario
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg