venafi.ansible_role_venafi
:warning: Este proyecto de código abierto, respaldado por la comunidad, ha alcanzado su FIN DE VIDA y solo recibirá actualizaciones relacionadas con seguridad y correcciones de errores críticos en adelante. Todas las funcionalidades de este proyecto (y más) están disponibles en la Colección Ansible para Venafi, que está en desarrollo activo. La transición es fácil, simplemente instala la colección venafi.machine_identity
usando Ansible Galaxy y reemplaza role: venafi.ansible_role_venafi
con role: venafi.machine_identity.certificate
en tus playbooks. Por favor, realiza la transición a la mayor brevedad posible.
Rol de Venafi para Ansible
Esta solución agrega capacidades de inscripción de certificados a Red Hat Ansible integrándose fácilmente con la Plataforma de Protección de Confianza de Venafi o Venafi como Servicio, asegurando cumplimiento con la política de seguridad corporativa y proporcionando visibilidad en la emisión de certificados en toda la empresa.
:red_car: Prueba nuestras integraciones hoy mismo
Déjanos mostrarte paso a paso cómo agregar certificados a tu Infraestructura como Código utilizando Ansible.
Productos Ejemplos de integración disponibles... Cómo configurar una entrega de aplicaciones segura usando F5 BIG-IP y el rol de Venafi para Ansible Cómo configurar una entrega de aplicaciones segura usando Citrix ADC y el rol de Venafi para Ansible NOTA Si no ves un ejemplo para un producto que usas, revisa más tarde. Estamos trabajando arduamente para agregar más ejemplos de integración.
Requisitos
Revisa los requisitos de Venafi, luego instala Ansible y VCert-Python (v0.10.0 o superior) usando pip
:
pip install ansible vcert --upgrade
Uso con Ansible Galaxy
Para más información sobre Ansible Galaxy, visita https://galaxy.ansible.com/docs/using/installing.html
Instala el Rol de Venafi para Ansible desde Ansible Galaxy:
ansible-galaxy install venafi.ansible_role_venafi
Crea el archivo
credentials.yml
y complétalo con los parámetros de conexión:Plataforma de Protección de Confianza:
cat <<EOF >>credentials.yml access_token: 'p0WTt3sDPbzm2BDIkoJROQ==' url: 'https://tpp.venafi.example' zone: "DevOps\\Ansible" trust_bundle: "/path/to/bundle.pem" EOF
Venafi como Servicio:
cat <<EOF >>credentials.yml token: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' zone: 'Business App\\Enterprise CIT' EOF
El Rol de Venafi para Ansible soporta los siguientes ajustes de conexión y credenciales:
Nombre de Variable Descripción access_token
Token de acceso de la Plataforma de Protección de Confianza para la API "ansible-by-venafi" password
[OBSOLETO] Contraseña del WebSDK de la Plataforma de Protección de Confianza, use access_token
si es posibletest_mode
Cuando es "true", el rol opera sin conectarse a la Plataforma de Protección de Confianza o a Venafi como Servicio token
Clave de API de Venafi como Servicio trust_bundle
Archivo de texto que contiene certificados de anclaje de confianza en formato PEM (texto), generalmente requerido para la Plataforma de Protección de Confianza url
URL del servicio de Venafi (por ejemplo, "https://tpp.venafi.example"), generalmente solo aplicable a la Plataforma de Protección de Confianza user
[OBSOLETO] Nombre de usuario del WebSDK de la Plataforma de Protección de Confianza, use access_token
si es posiblezone
Carpeta de políticas para TPP o nombre de aplicación y alias de plantilla para API de VaaS (por ejemplo, "Business App\Enterprise CIT") Usa
ansible-vault
para encriptar el archivocredentials.yml
usando una contraseña. Esto es opcional pero muy recomendado. Siempre que conozcas la contraseña, puedes descifrar el archivo para hacer cambios y luego volver a encriptarlo. Visita https://docs.ansible.com/ansible/latest/user_guide/vault.html para más información.ansible-vault encrypt credentials.yml
Escribe un playbook simple llamado, por ejemplo,
sample.yml
.- hosts: localhost roles: - role: venafi.ansible_role_venafi certificate_cert_dir: "/tmp/etc/ssl/{{ certificate_common_name }}"
Ejecuta el playbook.
ansible-playbook sample.yml --ask-vault-pass
Ejecuar el playbook generará un certificado y lo colocará en una carpeta en el directorio /tmp/etc/ssl/. El parámetro
--ask-vault-pass
es necesario si encriptaste el archivocredentials.yml
. Se pueden agregar variables adicionales al playbook para especificar propiedades del certificado y el par de claves, ubicaciones de archivos, y para anular comportamientos predeterminados.Nombre de Variable Descripción credentials_file
Nombre del archivo que contiene credenciales de Venafi y ajustes de conexión
Predeterminado:credentials.yml
certificate_common_name
Nombre Común para solicitar el certificado.
Predeterminado:"{{ ansible_fqdn }}"
certificate_alt_name
Lista separada por comas de Nombres Alternativos de Sujeto para solicitar el certificado. Prefija cada valor con el tipo de SAN.
Ejemplo:"DNS:host.example.com,IP:10.20.30.40,email:[email protected]"
certificate_privatekey_type
Algoritmo de clave, "RSA" o "ECDSA"
Predeterminado:"RSA"
(de VCert)certificate_privatekey_size
Tamaño de clave en bits para claves RSA
Predeterminado:"2048"
(de VCert)certificate_privatekey_curve
Curva Elíptica para claves ECDSA
Predeterminado:"P251"
(de VCert)certificate_privatekey_passphrase
Contraseña para encriptar la clave privada certificate_chain_option
Especifica si el certificado CA raíz aparece "último"
(predeterminado) o"primero"
en el archivo de cadenacertificate_cert_dir
Directorio padre local donde se almacenarán los activos criptográficos
Predeterminado:"/etc/ssl/{{ certificate_common_name }}"
certificate_cert_path
Directorio local donde se almacenarán los archivos de certificado
Predeterminado:{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem
certificate_chain_path
Directorio local donde se almacenarán los archivos de cadena de certificados
Predeterminado:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_privatekey_path
Directorio local donde se almacenarán los archivos de clave privada
Predeterminado:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_csr_path
Directorio local donde se almacenarán los archivos de solicitud de firma de certificado
Predeterminado:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"
certificate_remote_execution
Especifica si se generarán los activos criptográficos de forma remota, o localmente y luego se provisionarán al host remoto
Predeterminado:false
certificate_remote_cert_path
Directorio en el host remoto donde se almacenarán los archivos de certificado
Predeterminado:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_remote_chain_path
Directorio en el host remoto donde se almacenarán los archivos de cadena de certificados
Predeterminado:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_remote_privatekey_path
Directorio en el host remoto donde se almacenarán los archivos de clave privada
Predeterminado:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_copy_private_key_to_remote
Especifica si se copiará el archivo de clave privada al host remoto
Predeterminado:true
certificate_before_expired_hours
Número de horas antes de la expiración del certificado en que se puede renovar
Predeterminado:72
certificate_renew
Especifica si se renovará el certificado si se encuentra dentro de la ventana de "before_expired_hours" cuando se ejecuta el playbook
Predeterminado:true
certificate_force
Especifica si se solicitará un nuevo certificado cada vez que se ejecute el playbook
Predeterminado:false
Los valores predeterminados están definidos en el archivo defaults/main.yml.
Preparando un entorno de demostración con Docker para ejecutar Ansible
(Opcional) Prepara el entorno de demostración. Si deseas usar tu propio inventario, actualiza el archivo tests/inventory.
Para ejecutar nuestro playbook de prueba/demostración necesitarás el rol de aprovisionamiento de Docker. Descárgalo en el directorio
tests/roles/provision_docker
:git clone https://github.com/chrismeyersfsu/provision_docker.git tests/roles/provision_docker
Luego construye las imágenes de Docker necesarias para el playbook de demostración:
docker build ./tests --tag local-ansible-test
Los certificados de demostración se colocarán en el directorio
/tmp/ansible/etc/ssl
en el host de Ansible. Desde allí se distribuirán al directorio/etc/ssl/
de los hosts remotos.Genera un archivo de credenciales para la Plataforma de Protección de Confianza o Venafi como Servicio como se describió en la sección anterior.
Ejecuta el playbook de Ansible (elimina
docker_demo=true
si deseas usar tu propio inventario). El contenido decredentials.yml
se utilizará para decidir si se utiliza la Plataforma de Protección de Confianza o Venafi como Servicio. Si configuras el parámetrotoken
, el playbook asume que estás usando Venafi como Servicio. Si configuras los parámetrosaccess_token
opassword
, el playbook asume que estás usando la Plataforma de Protección de Confianza.ansible-playbook -i tests/inventory \ tests/venafi-playbook-example.yml \ --extra-vars "credentials_file=credentials.yml docker_demo=true" \ --ask-vault-pass
Se te pedirá la contraseña para descifrar el
credentials.yml
como antes. El archivo de origen para las credenciales puede ser anulado utilizando la variable credentials_file y esto se puede especificar en la línea de comandos usando el parámetro--extra-vars
como se muestra.
Ejemplo de Playbook
- hosts: servers
roles:
- role: "ansible-role-venafi"
certificate_common_name: "{{ ansible_fqdn }}.venafi.example.com"
certificate_cert_dir: "/tmp/ansible/etc/ssl/{{ certificate_common_name }}"
certificate_cert_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_chain_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_privatekey_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"
certificate_csr_path: "{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"
# Dónde ejecutar el módulo venafi_certificate. Si se establece en false, el certificado se creará
# en el host maestro de ansible y luego se copiará al servidor remoto.
certificate_remote_execution: false
# Ubicación remota donde colocar el certificado.
certificate_remote_cert_dir: "/etc/ssl"
certificate_remote_cert_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.pem"
certificate_remote_chain_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.chain.pem"
certificate_remote_privatekey_path: "{{ certificate_remote_cert_dir }}/{{ certificate_common_name }}.key"
# Establecer en false si no deseas copiar la clave privada a la ubicación remota.
certificate_copy_private_key_to_remote: true
Para ejemplos de playbook, consulta el archivo venafi-playbook-example.yml. Para ejemplos de roles, consulta el archivo venafi-role-playbook-example.yml
Para más información sobre cómo usar roles ve a https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html
Licencia
Copyright © Venafi, Inc. Todos los derechos reservados.
Esta solución está licenciada bajo la Licencia Apache, Versión 2.0. Consulta LICENSE
para el texto completo de la licencia.
Por favor, dirige preguntas/comentarios a opensource@venafi.com.
Streamline machine identity (certificate and key) acquisition using Venafi vcert.
ansible-galaxy install venafi.ansible_role_venafi