En unos pocos años, DevOps ha pasado de ser un movimiento marginal a algo imprescindible para cualquier líder de TI. Hay mucho alboroto a su alrededor, pero también hay mucho conocimiento práctico. El aprovisionamiento de entornos, la implementación de aplicaciones, el mantenimiento de infraestructuras: todas estas son tareas críticas pero delicadas que tradicionalmente se realizan a mano. ¿Qué pasaría si pudiéramos conseguir que una máquina hiciera todo eso por nosotros, no solo ahorrando horas de trabajo sino también eliminando el elemento del error humano?
Aquí tienes una lista de las principales herramientas de gestión de la configuración.
Indice
¿Por qué Gestión de la Configuración?
El software de gestión de configuración permite el uso de prácticas de desarrollo de software comprobadas para administrar y aprovisionar centros de datos en tiempo real a través de archivos de definición de texto sin formato. Algunos consideran las soluciones de CM como «DevOps en una caja», pero eso no es correcto. DevOps se trata de la colaboración entre personas, mientras que las herramientas de CM son solo eso: herramientas para automatizar la aplicación de estados de configuración. Como cualquier otra herramienta, están diseñadas para resolver ciertos problemas de ciertas maneras. La eficacia con la que lo hacen depende del conocimiento y la capacidad de la persona que los empuña.
Beneficios y riesgos
Automatizar los cambios en el estado de configuración de tu infraestructura es una espada de doble filo: puedes realizar cambios muy rápidamente, pero alguien o algo más necesita validar esos cambios. Al considerar qué herramienta de administración de configuración seleccionar, también debes pensar en qué herramienta(s) complementaria(s) utilizarás para evitar los efectos costosos de automatizar la implementación de errores en tu infraestructura como código. Además, las herramientas de administración de configuración de software (o herramientas SCM) controlan la versión y admiten texto; podemos realizar cambios en el código y los cambios se pueden realizar como una solicitud de combinación y enviar para su revisión.
Con las herramientas de administración de la configuración, muchas de las implementaciones específicas del sistema operativo de una configuración se abstraen para ti. El mismo archivo de configuración se puede usar para administrar, por ejemplo, la instalación de Apache HTTPD en los sistemas Red Hat y Ubuntu.
Una mala configuración puede ser un riesgo de seguridad cibernética masivo, lo que resulta en filtraciones de datos y otros ataques cibernéticos. Si estás automatizando la configuración de tu infraestructura, debes pensar en la seguridad cibernética, la seguridad de la información y la gestión de riesgos de la información.
También debes pensar en qué tan seguras son tus herramientas de administración de configuración y si les estás dando acceso a demasiada información confidencial. Piensa en la gestión de riesgos del proveedor y ten a mano un marco de gestión de riesgos de terceros y realiza una evaluación de riesgos de seguridad cibernética.
¿Qué son las herramientas de gestión de la configuración?
Las herramientas de gestión de la configuración realizan varias tareas para mantener la coherencia de los activos físicos y lógicos. Estas herramientas de administración identifican y rastrean todos los elementos de configuración y documentan las dependencias funcionales, lo que ayuda al departamento de TI a comprender cómo el cambio de un elemento de configuración afecta a todos los demás.
Muchas tareas de administración de la configuración están automatizadas, lo que reduce la probabilidad de errores humanos y libera al personal para que se ocupe de otros asuntos.
¿Por qué necesitamos estas herramientas?
Las herramientas de gestión de la configuración facilitan la vida de todos los que utilizan activos digitales. Su objetivo principal es mantener un registro preciso y detallado de la información y los estándares del sistema informático y actualizarlos según sea necesario.
Estas son las funciones mas comunes de la herramienta de administración de configuración:
- Despliegue de aplicaciones
- Aprovisionamiento automatizado
- Automatización de infraestructura
- Gestión de nudos
- Orquestación
- Control de acceso basado en roles
- Administración de tareas
- Visualización e informes
Estos son los principales beneficios de las herramientas de administración de configuración:
- Disminución de la probabilidad de interrupciones y violaciones de seguridad.
- Rentable debido a que evita la duplicación de activos tecnológicos.
- Control de procesos más estricto mediante la aplicación de políticas y procedimientos establecidos.
- Resolución de problemas mas rápida.
- Gestión de cambios eficiente mediante la confianza en la configuración de referencia.
- Respuesta de restauración de servicio mas rápida.
Las herramientas de administración de la configuración en DevOps manejan tareas cruciales, como la implementación de aplicaciones, el mantenimiento de la infraestructura y el aprovisionamiento de entornos. Estas funciones son delicadas y laboriosas, pero las herramientas pueden ahorrar tiempo y reducir la posibilidad de errores humanos si se automatizan.
La gestión de la configuración en DevOps se denomina «gestión integral de la configuración» y consiste en:
Repositorio de código fuente
Utilizado principalmente durante la fase de desarrollo, es el contenedor principal para todas las versiones de código. Además, el repositorio generalmente almacena scripts de compilación, scripts de prueba, scripts de implementación y archivos de configuración.
Repositorio de artefactos
Utilizado durante las operaciones de desarrollo,, es una base de datos para almacenar datos de prueba, archivos binarios y bibliotecas. El repositorio de artefactos almacena archivos legibles.
Base de datos de gestión de configuración (CMDB)
También utilizado durante las operaciones de desarrollo, este es un repositorio de los dispositivos de infraestructura, bases de datos, aplicaciones y servicios de la organización. También contiene las relaciones entre los diversos elementos de la CMDB.
El propósito de DevOps es desarrollar y lanzar software lo más rápido posible. La gestión de la configuración hace que ese objetivo sea más alcanzable.
Herramientas de gestión de la configuración
Hemos hecho que sea fácil obtener una descripción general rápida de cada herramienta y compararla con las alternativas, para que puedas encontrar la herramienta de administración de configuración adecuada para ti.
CFEEngine
CFEngine es una de las herramientas de gestión de configuración de código abierto más antiguas que proporciona configuración de automatización para grandes sistemas informáticos, incluida la gestión unificada de servidores, sistemas, usuarios, dispositivos de red integrados, dispositivos móviles y más. Lo comparamos con Puppet, también una tecnología establecida.
CFEngine se ejecuta en C, a diferencia del uso de Ruby por parte de Puppet. C es el nivel más bajo de los dos lenguajes, y una de las principales quejas con respecto a CFEngine es que la curva de aprendizaje es muy pronunciada. Sin embargo, significa que CFEngine tiene un Huella de memoria dramáticamente más pequeña, se ejecuta más rápido y tiene muchas menos dependencias.
Puppet
El informe anual «Estado de DevOps» de Puppet es uno de los mejores recursos para las tendencias en DevOps. Conocer las fortalezas y debilidades de la plataforma Puppet es cada vez más importante para las personas en operaciones. Puppet usa un lenguaje declarativo o Ruby para describir la configuración del sistema. Está organizado en módulos y los archivos de manifiesto contienen los objetivos del estado deseado para mantener todo según sea necesario.
Con frecuencia se afirma que Puppet es una herramienta que se creó pensando en los administradores de sistemas. La curva de aprendizaje es menos imponente debido a que Puppet se basa principalmente en modelos. Comprender las estructuras de datos JSON en los manifiestos de Puppet es mucho menos desalentador para un administrador de sistemas que ha pasado su vida en la línea de comando que la sintaxis de Ruby.
La edición de código abierto de Puppet está disponible de forma gratuita, mientras que Puppet Enterprise es gratuita para hasta 10 nodos. Nota: una vez que se instala Puppet, cada nodo (servidor físico, dispositivo o máquina virtual) en la infraestructura tendrá un agente de Puppet instalado.
Chef
Junto a Puppet, Chef es el otro peso pesado en el mercado de plataformas de automatización y CM. Administra servidores en la nube, en las instalaciones o en un entorno híbrido. Ser independiente de la nube le permite administrar tanto el centro de datos como los entornos de nube a la vez, incluso si cambia de proveedor de nube.
Al igual que Puppet, Chef también está escrito en Ruby, y su CLI también usa un DSL basado en Ruby. Chef utiliza un modelo de agente maestro y, además de un servidor maestro, una instalación de Chef también requiere una estación de trabajo para controlar el maestro. Los agentes se pueden instalar desde la estación de trabajo mediante la herramienta ‘cuchillo’ que utiliza SSH para la implementación, lo que alivia la carga de la instalación.
Ansible
Más nuevo que Chef o Puppet, Ansible es la mejor herramienta de código abierto de gestión de configuración, implementación, orquestación y también motor de automatización. De hecho, está incluido en distribuciones populares de Linux como Fedora. Ayuda con la automatización de la infraestructura de TI, desde el aprovisionamiento de software y la gestión de la configuración hasta la implementación de aplicaciones, proporcionando grandes ganancias de productividad.
Actualmente, sus soluciones consisten en dos ofertas: Ansible y Ansible Tower, esta última con la interfaz de usuario y el tablero de la plataforma. A pesar de ser un jugador relativamente nuevo en el campo en comparación con competidores como Chef o Puppet, ha ganado una reputación bastante favorable entre los profesionales de DevOps por sus operaciones sencillas y capacidades de administración simples.
Ansible es una de nuestras herramientas favoritas. Puedes usar Ansible para ejecutar el mismo comando en varios servidores desde la línea de comandos. También puedes usarlo para automatizar tareas (como agregar usuarios, instalar paquetes y actualizar las configuraciones del servidor) usando guías escritas en YAML que facilitan la comunicación entre equipos técnicos y no técnicos. Ansible es simple, sin agentes y fácil de leer tanto para programadores como para no programadores.
Sin agentes significa menos gastos generales en tus servidores. Se requiere una conexión SSH en el modo push (el valor predeterminado). Los libros de jugadas se pueden escribir con comandos mínimos o se pueden escalar con tareas de automatización más elaboradas, incluidos roles, variables y módulos.
SaltStack
El principal proveedor del ideal de «infraestructura como código», SaltStack ha ganado muchos seguidores a pesar de su aparición relativamente tardía en el mercado debido a sus muchas integraciones con proveedores de nube como Google Cloud, Amazon Web Services (AWS), etc.
Salt, como Ansible, se desarrolla en Python. También se desarrolló en respuesta a la insatisfacción con la hegemonía de Puppet/Chef, especialmente por su baja velocidad de implementación y la restricción de los usuarios a Ruby. Salt está a medio camino entre Puppet y Ansible: admite Python, pero también obliga a los usuarios a escribir todos los comandos CLI en Python o en el DSL personalizado llamado PyDSL. Utiliza un servidor maestro y agentes implementados llamados minions para controlar y comunicarse con los servidores de destino, pero esto se implementa utilizando la librería de mensajería ZeroMq. en la capa de transporte, lo que lo hace unos pocos órdenes de magnitud más rápido que Puppet/Chef.
Docker
Desde su lanzamiento en 2013, Docker es un novato que ha revolucionado el mundo del desarrollo de software y DevOps. La clave del éxito de Docker es su tecnología de contenedorización ligera:
«Su tecnología implementa aplicaciones de software con todas las partes necesarias en un contenedor, lo que garantiza que se ejecutará en cualquier servidor Linux, independientemente de la configuración y/o la configuración. Los contenedores se pueden crear, configurar y guardar como plantillas para usar en otros hosts que se ejecutan. el motor Docker Estas plantillas se pueden usar para crear más contenedores con el mismo sistema operativo, configuración y archivos binarios».
DSC de PowerShell
La solución de Microsoft para CM, que no se deja superar por las tecnologías de código abierto, es PowerShell DSC:
DSC es una nueva plataforma de administración en Windows PowerShell que permite implementar y administrar datos de configuración para servicios de software y administrar el entorno en el que se ejecutan estos servicios.
DSC proporciona un conjunto de extensiones de idioma de Windows PowerShell, nuevos cmdlets de Windows PowerShell y recursos que puedes usar para especificar declarativamente cómo deseas que se configure tu entorno de software. También proporciona un medio para mantener y administrar las configuraciones existentes.
Herramienta de configuración de TeamCity
TeamCity es también uno de los servidores de gestión e integración continua desarrollados por Jet Brains y basados en el lenguaje de programación Java.
JUJU
Es una herramienta de código abierto que se enfoca principalmente en disminuir la sobrecarga operativa del software de nueva generación. Juju ofrece funciones como configuración, escalado, implementación rápida, integración, etc. No proporciona instrucciones claras sobre el uso del proveedor de nube OpenStack.
Rudder
Es una herramienta de administración de infraestructura de TI de código abierto que funciona sobre CFEngine. La función única de administración de activos de Rudder es capaz de identificar nodos y sus características, y esto puede resultar útil cuando se realizan acciones de administración de configuración. Esta CMT hace uso de la gestión de activos para identificar nodos para la gestión de la configuración.
Rudder depende de un agente local ligero que se instala en todos y cada uno de los sistemas administrados. La interfaz web del lado del servidor de Rudder está construida en lenguaje Scala y su agente local está escrito en lenguaje C.
Jenkins
La herramienta de administración de configuración de código abierto de Jenkins crea y prueba la implementación de etapas de desarrollo de software para proyectos de TI desde el principio hasta el final. La función de integración y entrega continua se utiliza para mantener los procesos de flujo de trabajo que son obligatorios para completar los proyectos. La herramienta SCM de configuración de Jenkins proporciona las extensiones y los complementos que se utilizan para la gestión de la configuración de software en la ingeniería de software.
Características clave de Jenkins:
- Programa basado en Java
- Servidor de automatización extensible
- Comprobaciones de errores sobre la marcha
- centro de actualización
- Cadena de herramientas de entrega continua
- Arquitectura de complementos
- Soporte de múltiples plataformas
Ventajas:
- Proporciona soluciones combinadas para gestionar la sección de preguntas y respuestas.
- Se utiliza para compilaciones automatizadas y manuales.
- Control rápido de procesos y notificaciones automáticas
- Una gran comunidad de desarrollo
- Rápida integración con otras tecnologías.
Contras: Proceso de configuración difícil de gestionar.
Bamboo
Bamboo Server integra, implementa y ofrece compilaciones automatizadas para la entrega de software y la implementación de código. Utiliza este sistema de administración de configuración de software para autorizar agentes para construir y crear planos de construcción de varias etapas. Además, puedes ejecutar pruebas automatizadas paralelas para realizar un seguimiento del impacto de los cambios en el software. La herramienta de configuración del software Bamboo también ayuda a una implementación sin problemas.
Características de la clave de bambú:
- Impulso de canalización de CI
- Control de flujo a través de permisos por entorno
- Pruebas automatizadas en paralelo para el desarrollo Agile
- Integración con AWS CodeDeploy, Jira, Fisheye y Bitbucket.
Ventajas:
- Detección de errores rápida y fácil
- Una herramienta útil para la entrega continua y la integración
- Perfecta integración con Bitbucket y Jira
- Interfaz de usuario sencilla
- Una de las mejores herramientas para la integracion de edificios.
Contras: La documentación puede mejorarse para una mejor referencia.
Octopus Deploy
Acelera los sistemas de construcción y controla los servidores mediante la compilación de códigos y la ejecución de pruebas. Octopus Deploy también se utiliza para la gestión de la configuración en la ingeniería de software mediante la automatización de implementaciones y operaciones para mantener el software en funcionamiento. Ayuda a administrar lanzamientos y automatizar implementaciones de aplicaciones complejas.
Características clave de Octopus Deploy:
- Flujos de trabajo de promoción de lanzamiento repetibles
- Despliegues continuos y continuos
- Pruebas y restauración de copias de seguridad
- Renovación de certificado
- Recuperación de desastres
Ventajas:
- Se pueden implementar fácilmente nuevas versiones de diferentes interfaces
- Fácil de instalar
- El proceso de configuración para implementar canalizaciones es simple
- Guión personalizado para administrar objetivos de distribución
- Distribución de software para múltiples plataformas.
Contras: La sobrecarga puede ser un problema a veces.
Plan para el éxito
Independientemente de la herramienta que utilices para la gestión de la configuración, la forma de iniciar tu proyecto de automatización es descubrir lo que tienes. Automatizar procesos deficientes o una infraestructura mal entendida es una forma rápida y costosa de multiplicar tus problemas. Para aprovechar al máximo cualquier herramienta de automatización, primero debes comprender dónde ya existen las minas terrestres.