ansibleguy.infra_certs
Rol de Ansible - Generador de Certificados
Rol de Ansible para crear certificados para usar en un servidor Linux.
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
Meat-role to generate/manage certificates for other roles
ansible-galaxy install ansibleguy.infra_certs