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_venafiCrea el archivo
credentials.ymly 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" EOFVenafi como Servicio:
cat <<EOF >>credentials.yml token: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' zone: 'Business App\\Enterprise CIT' EOFEl Rol de Venafi para Ansible soporta los siguientes ajustes de conexión y credenciales:
Nombre de Variable Descripción access_tokenToken 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_tokensi es posibletest_modeCuando es "true", el rol opera sin conectarse a la Plataforma de Protección de Confianza o a Venafi como Servicio tokenClave de API de Venafi como Servicio trust_bundleArchivo de texto que contiene certificados de anclaje de confianza en formato PEM (texto), generalmente requerido para la Plataforma de Protección de Confianza urlURL 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_tokensi es posiblezoneCarpeta 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-vaultpara encriptar el archivocredentials.ymlusando 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.ymlEscribe 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-passEjecuar el playbook generará un certificado y lo colocará en una carpeta en el directorio /tmp/etc/ssl/. El parámetro
--ask-vault-passes 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_fileNombre del archivo que contiene credenciales de Venafi y ajustes de conexión
Predeterminado:credentials.ymlcertificate_common_nameNombre Común para solicitar el certificado.
Predeterminado:"{{ ansible_fqdn }}"certificate_alt_nameLista 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_typeAlgoritmo de clave, "RSA" o "ECDSA"
Predeterminado:"RSA"(de VCert)certificate_privatekey_sizeTamaño de clave en bits para claves RSA
Predeterminado:"2048"(de VCert)certificate_privatekey_curveCurva Elíptica para claves ECDSA
Predeterminado:"P251"(de VCert)certificate_privatekey_passphraseContraseña para encriptar la clave privada certificate_chain_optionEspecifica si el certificado CA raíz aparece "último"(predeterminado) o"primero"en el archivo de cadenacertificate_cert_dirDirectorio padre local donde se almacenarán los activos criptográficos
Predeterminado:"/etc/ssl/{{ certificate_common_name }}"certificate_cert_pathDirectorio local donde se almacenarán los archivos de certificado
Predeterminado:{{ certificate_cert_dir }}/{{ certificate_common_name }}.pemcertificate_chain_pathDirectorio local donde se almacenarán los archivos de cadena de certificados
Predeterminado:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.chain.pem"certificate_privatekey_pathDirectorio local donde se almacenarán los archivos de clave privada
Predeterminado:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.key"certificate_csr_pathDirectorio local donde se almacenarán los archivos de solicitud de firma de certificado
Predeterminado:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.csr"certificate_remote_executionEspecifica si se generarán los activos criptográficos de forma remota, o localmente y luego se provisionarán al host remoto
Predeterminado:falsecertificate_remote_cert_pathDirectorio en el host remoto donde se almacenarán los archivos de certificado
Predeterminado:"{{ certificate_cert_dir }}/{{ certificate_common_name }}.pem"certificate_remote_chain_pathDirectorio 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_pathDirectorio 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_remoteEspecifica si se copiará el archivo de clave privada al host remoto
Predeterminado:truecertificate_before_expired_hoursNúmero de horas antes de la expiración del certificado en que se puede renovar
Predeterminado:72certificate_renewEspecifica si se renovará el certificado si se encuentra dentro de la ventana de "before_expired_hours" cuando se ejecuta el playbook
Predeterminado:truecertificate_forceEspecifica si se solicitará un nuevo certificado cada vez que se ejecute el playbook
Predeterminado:falseLos 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_dockerLuego 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/sslen 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=truesi deseas usar tu propio inventario). El contenido decredentials.ymlse 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_tokenopassword, 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-passSe te pedirá la contraseña para descifrar el
credentials.ymlcomo 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-varscomo 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