19 Herramientas de DevOps para automatización y monitoreo de infraestructura

Para lograr una entrega de aplicaciones más rápida, se deben utilizar las herramientas de automatización de infraestructura adecuadas en los entornos DevOps. Desafortunadamente, no existe una herramienta única que se adapte a todas sus necesidades, como el aprovisionamiento de servidores, la administración de la configuración, las compilaciones automatizadas, las implementaciones de código y la supervisión.

Muchos factores determinan el uso de una herramienta en una infraestructura. Este artículo analizará las herramientas principales que se pueden utilizar en un entorno típico que practica la filosofía DevOps.

Herramientas de DevOps para la automatización de infraestructuras

Hay muchas herramientas disponibles para la automatización de la infraestructura. La selección de herramientas se decide por la arquitectura de la plataforma, los conjuntos de habilidades y las necesidades de su infraestructura.

A continuación, enumeramos algunas herramientas excelentes, que se incluyen en varias categorías, como administración de configuración, orquestación, integración continua, monitoreo, etc.

Hemos categorizado los conjuntos de herramientas de la siguiente manera.

  1. Infraestructura como código
  2. Integración / implementación continua
  3. Configuración / Gestión de secretos
  4. Seguimiento

Infraestructura como código (IaaC)

Cuando se trata de automatización de la infraestructura, a menudo se escucha el término infraestructura como código. En resumen IaaC.

Las herramientas de IaaC pueden ayudarlo a automatizar y administrar todos los componentes de la infraestructura, como redes, servidores, servicios administrados en la nube, aplicaciones, firewalls, servicios administrados en la nube y en las instalaciones, etc.

Al igual que en el desarrollo de aplicaciones, una práctica estándar para el código IaaC es seguir todas las prácticas de codificación estándar, como pruebas, revisiones, etc., muchas empresas siguen IaaC impulsada por pruebas desarrolladas para tener sistemas de cambio de infraestructura infalibles.

Una vez que tenga listo el código de infraestructura, puede usarlo para crear un entorno en cualquier momento que desee sin mucha intervención manual. Solo los parámetros cambiarían y el código sigue siendo el mismo.

La mayoría de las herramientas de IaaC (código abierto) se pueden utilizar en cualquier plataforma en la nube o en entornos locales sin la dependencia de un proveedor, a menos que utilice una nube o una herramienta específica del proveedor para administrar su infraestructura.

Ahora comencemos con la lista.

  1. Terraform

Terraform  es una herramienta de aprovisionamiento de infraestructura independiente de la nube. Es creado por Hashicorp y escrito en Go. Es compatible con todo el aprovisionamiento de infraestructura de nube pública y privada (redes, servidores, servicios administrados, firewall, etc.).

A diferencia de otras herramientas de gestión de la configuración, terraform hace un gran trabajo manteniendo el estado de su infraestructura utilizando un concepto llamado archivos de estado.

Puede empezar a utilizar Terraform en unos días, ya que es fácil de entender. Terraform tiene su propio lenguaje específico de dominio (DSL) llamado HCL (lenguaje de configuración Hashicorp).

Además, puede escribir su propio complemento terraform usando Golang para funcionalidades personalizadas.

Terraform tiene un gran apoyo de la comunidad y la mayoría de los módulos necesarios para el aprovisionamiento de infraestructura en todas las plataformas en la nube se pueden encontrar en terraform registry.

  1. Pulumi

Pulumi es una herramienta IAC que admite múltiples lenguajes de programación como Python, Go, Javascript, C #, etc.

A diferencia de otras herramientas de creación de plantillas de IaaC, Pulumi tiene como objetivo proporcionar una mayor flexibilidad en términos de código de infraestructura en su lenguaje de programación favorito. Esto facilita las pruebas de código infra con los marcos de prueba existentes que son nativos de un lenguaje de programación.

Pulumi es compatible con todas las principales plataformas en la nube como AWS, Google Cloud y Azure. La mejor parte es que utiliza conceptos similares como Terraform para la gestión del estado.

Si usted es alguien que quiere escribir código puro para su infraestructura, lo probará con Pulumi.

Nota: Terraform y Pulumi son puramente herramientas de aprovisionamiento de infraestructura. Simplemente crea redes, servidores, etc., mientras que herramientas como Ansible / Chef configuran aplicaciones dentro del servidor de manera idempotente. Por lo tanto, es esencial comprender la diferencia entre el aprovisionamiento de infraestructura y la administración de la configuración.

  1. Ansible

Ansible  es una gestión de la configuración sin agentes, así como una herramienta de organización. En Ansible, los módulos de configuración se denominan “Playbooks”.

Los libros de jugadas están escritos en formato YAML y es relativamente fácil de escribir en comparación con otras herramientas de administración de configuración. Al igual que otras herramientas, Ansible también se puede utilizar para el aprovisionamiento en la nube.

Ansible también es compatible con el inventario dinámico, donde puede obtener los detalles del servidor de forma dinámica a través de llamadas a la API.

Pero es mejor usar herramientas como terraform y Ansible para la provisión de infraestructura y usar Ansible solo para la administración de la configuración.

Puede encontrar todos los libros de jugadas de la comunidad de Ansible Galaxy

  1. Chef

Chef es una herramienta de gestión de configuración basada en ruby. Chef tiene el concepto de libros de cocina en los que codifica su infraestructura en DSL (lenguaje específico de dominio) y con un poco de programación.

Chef configura máquinas virtuales de acuerdo con las reglas mencionadas en los libros de cocina.

Un agente chef se ejecutará en todos los servidores que deben configurarse. El agente extraerá los libros de cocina del servidor maestro de chef y ejecutará esas configuraciones en el servidor para alcanzar el estado deseado.

Puede encontrar todos los libros de cocina de la comunidad de Chef Supermarket.

  1. Puppet

Puppet es también una herramienta de gestión de configuración basada en ruby como Chef. El código de configuración está escrito usando títeres DSL y envuelto en módulos.

Mientras que los libros de cocina de chef están más centrados en el desarrollador, mientras que el títere se desarrolla teniendo en cuenta a los administradores del sistema.

Puppet ejecuta un agente de marionetas en todos los servidores que se van a configurar y extrae el módulo compilado del servidor de marionetas e instala los paquetes de software necesarios especificados en el módulo.

Puede encontrar todos los módulos de marionetas de la comunidad de  Puppetforge

  1. Saltstack

Saltstack  es una herramienta de gestión de configuración abierta basada en Python. A diferencia de chef y puppet, Saltstack admite la ejecución remota de comandos.

Normalmente, en chef y puppet, el código para la configuración se extraerá del servidor mientras que, en Saltstack, el código se puede enviar a muchos nodos simultáneamente. La compilación del código y la configuración es muy rápida en Saltstack.

Nota: La selección de la herramienta debe basarse completamente en los requisitos del proyecto y la capacidad del equipo para aprender y usar la herramienta. Por ejemplo, puede usar Ansible para crear componentes de infraestructura y configurar instancias de VM. Entonces, si tiene un equipo y un entorno pequeños, terraform no es necesario para administrar la infraestructura por separado. Nuevamente, depende de cómo el equipo existente pueda aprender y administrar los conjuntos de herramientas.

Herramientas de implementación / integración continua

Ahora veamos las mejores herramientas de CI / CD que pueden ser parte de la automatización de la infraestructura.

  1. Jenkins

Jenkins es una herramienta de integración continua basada en Java para una entrega de aplicaciones más rápida. . Jenkins debe estar asociado con un sistema de control de versiones como GitHub o SVN.

Cada vez que se envía un nuevo código a un repositorio de código, el servidor de Jenkins creará y probará el nuevo código y notificará al equipo de los resultados y cambios.

Puede que te guste: Tutorial de Jenkins para principiantes

Jenkins ya no es solo una herramienta de CI. Jenkins se utiliza como una herramienta de orquestación para crear canalizaciones que implican el aprovisionamiento y la implementación de aplicaciones. Su nueva funcionalidad de canalización como código le permite mantener las canalizaciones de CI / CD como un código completo.

  1. Github Actions

Si está utilizando Github, Github actions son una excelente manera de configurar sus canalizaciones de CI.

Las acciones de Github proporcionan muchas integraciones y flujos de trabajo para configurar una canalización de CI. Además, se puede utilizar en cuentas de Github públicas y empresariales.

El concepto de corredores de Github le ayuda a configurar un entorno de ejecución de CI en un entorno autohospedado.

  1. Packer

Si desea seguir un patrón de infraestructura inmutable utilizando máquinas virtuales, Packer es útil para empaquetar todas las dependencias y crear imágenes de VM implementables.

Es compatible con la administración de imágenes de VM tanto en nubes privadas como públicas. También puede hacer que Packer forme parte de su canalización de CI para crear una imagen de máquina virtual como un artefacto implementable.

  1. Docker

Docker works  trabaja en el concepto de virtualización a nivel de proceso. Docker crea entornos aislados para aplicaciones llamadas contenedores.

Estos contenedores se pueden enviar a cualquier otro servidor sin realizar cambios en la aplicación. Se considera que Docker es el siguiente paso en la virtualización.

Docker tiene una enorme comunidad de desarrolladores y está ganando gran popularidad entre los profesionales de DevOps y los pioneros en la computación en la nube.

  1. Helm

Helm es un administrador de implementación de Kubernetes. Puede implementar cualquier aplicación compleja en un clúster de Kubernetes mediante Helm Charts.

Tiene excelentes características de plantillas que admiten plantillas para todos los objetos de kubernetes como implementaciones, pods, servicios, mapas de configuración, secretos, RBAC, PSP, etc.

Puede utilizar una sola plantilla para implementar varias aplicaciones.

Además, visita Kustomize.. Es una utilidad de administración de configuración nativa para Kubernetes.

  1. Kubernetes Operators

Kubernetes es una de las mejores herramientas para la organización de contenedores.

Si está utilizando Kubernetes, los operators son algo que realmente debería tener en cuenta. Ayuda a automatizar y administrar la aplicación Kubernetes con lógica personalizada definida por el usuario.

Puede usar GitOps methodologies para tener implementaciones de kubernetes completamente automatizadas basadas en cambios y verificaciones de Git.

Puede consultar las siguientes herramientas de CD basadas en el operador.

  1. ArgoCD
  2. FluxCD

Herramientas para el desarrollo de infraestructura

Puede usar las siguientes herramientas para desarrollar y probar el código de su infraestructura.

  1. Vagrant

Vagrant es una gran herramienta para configurar máquinas virtuales para un entorno de desarrollo. Vagrant se ejecuta sobre soluciones de VM como VirtualBox, VMware, Hyper-V, etc.

Vagrant usa un archivo de configuración llamado Vagrantfile, que contiene todas las configuraciones necesarias para la VM. Una vez que se crea y se prueba una máquina virtual con un Vagrantfile, se puede compartir con otros desarrolladores para tener entornos de desarrollo idénticos.

Vagrant también tiene complementos para el aprovisionamiento en la nube y la integración con herramientas de administración de configuración (chef, marioneta, etc.) para configurar la VM en tiempo de ejecución.

  1. Minikube

Minikube proporciona una configuración de desarrollo local mediante Kubernetes. Puede utilizar Mikukube para desarrollar y probar Kubernetes. Es ligero y rápido.

Si desea una configuración completa de Kubernetes en su estación de trabajo local, puede consultar la configuración vagabunda de Kubernetes.

Configuración / Gestión secreta

  1. Consul

Consul es un almacén de valores clave de código abierto y de alta disponibilidad. Se utiliza principalmente con fines de descubrimiento de servicios. Si tiene un caso de uso para almacenar y recuperar configuraciones en tiempo real, Consul es la opción adecuada.

  1. etcd

etcd es otro almacén de valores clave de código abierto creado por el equipo de CoreOS. Es uno de los componentes clave que se utilizan en Kubernetes para almacenar el estado de las operaciones y la gestión del clúster..

  1. Vault

Hashicorp Vault es una herramienta de código abierto para almacenar y recuperar datos secretos. Proporciona muchas funcionalidades para almacenar su clave secreta de forma encriptada. Puede crear ACL, políticas y roles para administrar cómo los usuarios finales accederán a los secretos.

También puede integrar la bóveda con el clúster de Kubernetes para inyectar secretos en los pods.

Supervisión de la infraestructura

El monitoreo también es un aspecto importante de la automatización de la infraestructura. Puede usar métricas y alertas de los sistemas de monitoreo para tomar decisiones automáticamente como escalado, notificaciones, remediaciones, etc.

Veamos algunas de las herramientas de supervisión que pueden formar parte de su infraestructura. 

  1. Prometheus & Alert Manager

Prometheus es un sistema de monitoreo de código abierto. Es muy liviano y está construido específicamente para el monitoreo de aplicaciones modernas. Es compatible con el servidor Linux y la supervisión de Kubernetes.

Tiene soporte listo para usar para monitoreo de Kubernetes y Openshift. El administrador de alertas administra toda la configuración de alertas para las métricas de monitoreo.

Además, hay muchos exportadores de código abierto disponibles para aplicaciones. Puede utilizar estos exportadores para enviar métricas de aplicaciones a Prometheus.

  1. New Relic

New Relic es una solución basada en la nube (SaaS) para el monitoreo de aplicaciones. Es compatible con el monitoreo de varias aplicaciones como Php, Ruby, Java, NodeJS, etc. Le brinda información en tiempo real sobre su aplicación en ejecución. Se debe configurar un nuevo agente reliquia en su aplicación para obtener datos en tiempo real. New relic utiliza varias métricas para proporcionar información valiosa sobre la aplicación que está monitoreando.

  1. Sensu

Sensu es un marco de monitoreo de código abierto escrito en Ruby. Sensu es una herramienta de monitoreo diseñada específicamente para entornos en la nube. Se puede implementar fácilmente con herramientas como chef y títere. También tiene una edición empresarial para monitoreo.

  1. Datadog

Datadog es también una solución de monitoreo de servidores y aplicaciones basada en la nube (Saas). Puede monitorear contenedores de Docker y otras aplicaciones usando Datadog.

Otras herramientas que vale la pena considerar,

  1. Riemann (herramienta de monitoreo de código abierto)
  2. AppDynamics (para monitoreo de aplicaciones)
  3. Logz.io (para análisis y gestión de registros)
  4. Pila ELK (Elasticsearch, Logstash, Kibana)
  5. Splunk (análisis de registros y alertas)

Conclusión

La automatización de la infraestructura es un requisito para todos los equipos de DevOps. El uso y la selección de una herramienta dependen de factores como el costo, el conjunto de habilidades, la funcionalidad, etc.

Una vez más, una herramienta definitivamente no se ajustará a sus necesidades. La selección de conjuntos de herramientas debe basarse en los requisitos de la organización / equipo más que en la funcionalidad de la herramienta.

Entonces, ¿Qué herramientas está utilizando para la automatización de la infraestructura?

 

Referencia

Tomado de la web https://devopscube.com/ by devopscube July 28, 2021 https://devopscube.com/devops-tools-for-infrastructure-automation/

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Top