La infraestructura como código (IaC) utiliza un lenguaje de codificación descriptiva de alto nivel para automatizar el suministro de la infraestructura de TI. Esta automatización elimina la necesidad de que los desarrolladores suministren y gestionen manualmente servidores, sistemas operativos, conexiones de bases de datos, almacenamiento y otros elementos de la infraestructura cada vez que deseen desarrollar, probar o implementar una aplicación de software.
En una época en la que no es infrecuente que una empresa implemente cientos de aplicaciones en producción todos los días, y en la que la infraestructura se está constantemente renovando, derribando y ampliando y reduciendo en respuesta a las demandas de los desarrolladores y usuarios, es esencial para una organización automatizar la infraestructura para controlar los costos, reducir los riesgos y responder con rapidez a las nuevas oportunidades de negocio y las amenazas competitivas. La IaC hace posible esta automatización.
La IaC es también una práctica esencial de DevOps, indispensable para un ciclo de vida de entrega de software a un ritmo competitivo. Permite a los equipos de DevOps crear y versionar la infraestructura rápidamente de la misma manera que versionan el código de origen y realizar un seguimiento de estas versiones para evitar inconsistencias entre los entornos de TI que pueden generar problemas graves durante la implementación.
Sai Vennam analiza más detenidamente la IaC en el siguiente vídeo, "¿Qué es la infraestructura como código?":
El suministro de TI tradicional es un proceso costoso y laborioso y que requiere la configuración física del hardware, la instalación y la configuración del software del sistema operativo y la conexión a middleware, redes, almacenamiento, etc., por personal experto.
La virtualización y el desarrollo nativo en Cloud elimina el problema de la gestión de hardware físico, lo que permite a los desarrolladores suministrar sus propios servidores virtuales o contenedores bajo demanda. Pero, el suministro de infraestructura virtualizada todavía distrae el enfoque de los desarrolladores de la codificación, aún requiere que repitan el trabajo de suministro para cada nueva implementación y no ofrece una manera fácil de rastrear los cambios del entorno y prevenir inconsistencias que impactan en las implementaciones.
La infraestructura como código (IaC) es el paso final para permitir a los desarrolladores "ordenar" de manera efectiva una infraestructura versionada completamente documentada mediante la ejecución de un script. Los beneficios son exactamente los que podría imaginar:
Una decisión importante que se debe tomar al automatizar una infraestructura con Infraestructura como código (IaC) y al elegir una solución de IaC es si establecer una infraestructura mutable o inmutable.
Infraestructura mutable es la infraestructura que se puede modificar o actualizar después de suministrase inicialmente. La infraestructura mutable ofrece a los equipos de desarrollo la flexibilidad para realizar personalizaciones puntuales del servidor para, por ejemplo, ajustarse más a los requisitos de desarrollo o aplicación o responder a un problema de seguridad emergente. Pero también debilita un beneficio clave de la IaC, la capacidad de mantener la consistencia entre implementaciones o en las versiones, y puede hacer que el seguimiento de la versión de la infraestructura sea mucho más difícil.
Por estas razones, la mayoría de las IaC se implementan como infraestructuras inmutables; una infraestructura que no se puede modificar una vez suministrada inicialmente. Si es necesario cambiar la infraestructura inmutable, debe reemplazarse por una nueva infraestructura. Debido a que la nueva infraestructura se puede poner en marcha rápidamente en Cloud, especialmente con la IaC, la infraestructura inmutable es mucho más viable y práctica de lo que parece.
La infraestructura inmutable lleva la IaC a un siguiente paso lógico, fundamentalmente fortaleciendo la IaC para asegurar aún más los beneficios que ofrece. Todo ello no hace más que eliminar la desviación de la configuración y hace que sea aún más fácil mantener la consistencia entre el entorno de prueba y el de implementación. También facilita el mantenimiento y el seguimiento de las versiones de la infraestructura y revertir con confianza a cualquier versión cuando sea necesario.
Al elegir una solución de IaC, también es importante comprender la diferencia entre un enfoque declarativo o imperativo de la automatización de la infraestructura.
En la mayoría de las organizaciones, el enfoque declarativo, también conocido como enfoque funcional, es el que mejor se ajusta. En el enfoque declarativo, usted especifica el estado final deseado de la infraestructura que desea suministrar y el software de la IaC se encarga del resto, activando la máquina virtual (VM) o contenedor, instalando y configurando el software necesario, resolviendo las interdependencias entre el sistema y el software y gestionando el control de versiones. La principal desventaja del enfoque declarativo es que normalmente requiere un administrador especializado para configurarlo y gestionarlo, y estos administradores a menudo se especializan en su solución preferida.
En el enfoque imperativo, también conocido como enfoque procesal, la solución le ayuda a preparar scripts de automatización que proporcionan a su infraestructura un paso específico cada vez. Si bien esto puede suponer más trabajo que gestionar a medida que escala, puede ser más fácil de entender para el personal administrativo existente y puede aprovechar los scripts de configuración que ya tiene implementados.
Elegir un enfoque declarativo o imperativo es similar a usar un GPS o seguir indicaciones paso a paso. Con un GPS, usted ingresa una dirección y el GPS hace el resto, trazando la ruta más rápida y evitando el tráfico por usted, pero probablemente necesite un experto que le diga por qué se tomaron las decisiones que se tomaron. Las indicaciones paso a paso se basan en la experiencia personal; el proveedor conoce la ruta y por qué la eligió, pero si usted encuentra obstáculos o desea optimizar la ruta, debe llamar para pedir ayuda o hacer el trabajo usted mismo.
Si bien hay muchas herramientas de IaC de código abierto disponibles, las herramientas más comúnmente adoptadas son Ansible y Terraform:
Ansible (enlace externo a ibm.com) es un proyecto comunitario de código abierto patrocinado por Red Hat que está diseñado para ayudar a las organizaciones a automatizar el suministro, la gestión de la configuración y la implementación de aplicaciones. Ansible, una herramienta de automatización declarativa, le permite crear "libros de tácticas" (escritos en el lenguaje de configuración YAML) para especificar el estado deseado para su infraestructura y luego realiza el suministro por usted. Ansible es una opción popular para automatizar el suministro de contenedores de Docker y despliegues de Kubernetes.
Terraform es otra herramienta de orquestación de infraestructura y suministro declarativo que permite a los ingenieros automatizar el suministro de todos los aspectos de su infraestructura empresarial local y basada en Cloud.
Terraform colabora con todos los proveedores de Cloud destacados y le permite automatizar la creación de recursos en múltiples proveedores en paralelo, independientemente de dónde se encuentren los servidores físicos, servidores DNS o bases de datos. También puede suministrar aplicaciones escritas en cualquier lenguaje.
A diferencia de Ansible, Terraform no ofrece funcionalidades de gestión de la configuración, pero funciona mano a mano con herramientas de gestión de la configuración (p. Ej., Cloud Formation) para suministrar automáticamente la infraestructura en el estado descrito por los archivos de configuración y para cambiar automáticamente el suministro de actualizaciones cuando sea necesario en respuesta a los cambios de configuración.
Para profundizar en la elección de una herramienta IaC, consulte "Infraestructura como código: ¿Chef, Ansible, Puppet o Terraform?"
Las funcionalidades de la IaC de IBM, que cuentan con plantillas personalizables y compartibles, pueden sentar las bases para modernizar aplicaciones, sin importar dónde se encuentre en su proceso de cambio hacia Cloud.
Dé el siguiente paso:
Empiece con una cuenta de IBM Cloud hoy mismo.
Cree, modernice y gestione aplicaciones de forma segura en cualquier nube, con confianza
Cree, implemente y gestione aplicaciones nativas en Cloud ricas en seguridad en múltiples dispositivos, entornos y Clouds con las mejores prácticas de DevOps