7. #GlobalAIOnTour#GlobalAIOnTourMana
gua
#DotNetNicaragua
¿Azure Portal es suficiente?
Puede que sí, pero...
¿Tienes que hacer cambios incrementales con cierta frecuencia en tu
infraestructura?
La primera vez que vas a producción ¿Cuánto tardas en replicar la
infraestructura de desarrollo?
Si te has tenido que recuperar alguna vez de un desastre ¿tenías todo
documentado?
10. #GlobalAIOnTour#GlobalAIOnTourMana
gua
#DotNetNicaragua
“Al igual que el principio de que el mismo código fuente genera el mismo binario, una infraestructura
como modelo de código genera el mismo entorno cada vez que se aplica.”
Sam Guckenheimer (Product Owner for Azure Devops)
11. #GlobalAIOnTour#GlobalAIOnTourMana
gua
#DotNetNicaragua
¿Qué es Infrastructure as Code?
La Infraestructura como Código (IaC) hace referencia a la práctica de utilizar scripts para configurar la
infraestructura de computación en lugar de hacerlo manualmente, trata la configuración de la
infraestructura exactamente como el software de programación, estamos hablando de máquinas
virtuales, bases de datos entre muchos otros servicios más ofrecidos por algún proveedor computo en
la nube como Microsoft Azure.
Más información: https://wp.me/p4REoZ-Vl
13. #GlobalAIOnTour#GlobalAIOnTourMana
gua
#DotNetNicaragua
¿Por qué debería hacerlo?
Más automatización = Menos errores
Transparencia
Trazabilidad
Integridad
Reproducibilidad y repetibilidad
Tu documentación es la “única fuente de verdad”
Anima a la colaboración entre operaciones y desarrollo
14. #GlobalAIOnTour#GlobalAIOnTourMana
gua
#DotNetNicaragua
¿Cómo empiezo?
Paso 1: Selecciona un proyecto fácil o pequeño, minimiza esfuerzo y riesgo
Si no lo has hecho antes encontrarás problemas, estás experimentando, así que maneja bien las expectativas
Paso 2: Recoge datos, antes y después, demuestra que funciona
Paso 3: Elige una buena herramienta
31. #GlobalAIOnTour#GlobalAIOnTourMana
gua
#DotNetNicaragua
Plantillas
Lo novedoso es la posibilidad de descargar una plantilla de código para implementar este servicio y
administrarlo durante un ciclo de vida, basta con tomar los clientes necesarios para que esto tenga
efecto.
Las versiones de código las tenemos también en Ruby, .Net, PowerShell y Azure CLI.
37. #GlobalAIOnTour#GlobalAIOnTourMana
gua
#DotNetNicaragua
En 2015 fue comprado por RedHat que es la compañía que lo mantiene
ahora.
Inicialmente fue concebido para “Configuración como código” o
“Provisionamiento de software”.
Aún no tiene mucho soporte para Azure.
Está pensado para realizar “secuencias de comandos”, paralelizar es
complicado.
38. #GlobalAIOnTour#GlobalAIOnTourMana
gua
#DotNetNicaragua
Es una herramienta creada por Hashicorp. Autores de Vagrant, Consul,
Packer,....
Introduce el concepto de ‘plan’ para poder previsualizar los cambios antes de
que sucedan.
Usa una sintaxis propia, bastante sencilla y fácil de aprender, pero nueva.
Tiene una comunidad activa.
39. #GlobalAIOnTour#GlobalAIOnTourMana
gua
#DotNetNicaragua
Es la más reciente de las herramientas y está soportada por una empresa
relativamente pequeña gestionada por un grupo inversor.
Su funcionamiento es muy similar al de Terraform pero es la primera en
utilizar lenguajes de programación de “verdad” (JS, Go o Python).
43. #GlobalAIOnTour#GlobalAIOnTourMana
gua
#DotNetNicaragua
Cuando usar cada uno
Especialmente indicado si utilizas las últimas
funcionalidades de Azure y si toda tu infraestrutura
está y estará basada siempre en Azure.
Es la alternativa a ARM más utilizada, más madura
y con gran soporte. La recomendaría a menos que
ya tengas Know How en ARM.
Ahora no parece una herramienta suficientemente
madura para IaC, pero puede ser una opción si usas
mucha VM y ya las configuras con Ansible.
Es una herramienta joven y le falta comunidad,
pero puede ser una gran opción cuando es el
propio equipo de desarrollo quien opera.
Como ya bien sabemos DevOps es uno de los términos más mencionados en el actual entorno de IT. Normalmente se asocia a estrategias de transformación digital, y a metodologías como Continuous Delivery o desarrollo ágil.
Quedémonos con una definición simple de DevOps con la que todos podamos estar de acuerdo: DevOps es una metodología de desarrollo software basada en la integración entre desarrolladores y administradores de sistemas, que permite que los desarrolladores puedan enfocarse sólo en desarrollar y puedan desplegar su código en segundos.
Una vez sabiendo esto, pasemos a conocer que NO es DevOps….
Si bien hemos visto en publicaciones en sitios de empleos buscando un “experto en DevOps”, hay que saber que no es un puesto de trabajo o un rol laboral. El consultor de Agile, Scott Ambler, expreso: “DevOps se trata de que los desarrolladores entiendan la realidad de las operaciones y de que el equipo de operaciones comprenda lo que involucra el desarrollo.”
DevOps no se trata de herramientas, sino de cultura, dijo Patrick Debois en una presentación titulada “DevOps: tonterías, herramientas y otras cosas inteligentes”, durante la Conferencia GOTO. Debois menciono también que las herramientas juegan un papel importante en el apoyo al enfoque de DevOps para la entrega y la gestión de software, pero DevOps no se trata de las herramientas en sí.
Antes de conocer su definicion, les comparto esta frase de Sam Guckenheimer quien nos dice...
Entonces consideremos que nuestra infraestructura es igual de importante que el codigo fuente...
La IaC permite a recursos como máquinas virtuales gestionarse de manera programada, lo que elimina la necesidad de realizar configuraciones manuales o actualizaciones de componentes individuales de hardware. Esto hace que la infraestructura sea muy escalable y replicable. Un solo usuario puede implementar y gestionar una o cientos de recursos como máquinas virtuales usando el mismo conjunto de código (por decir algún ejemplo).
Básicamente: “Trata tu infraestuctura como si fuera tu aplicación”
El concepto de IaC es el marco del que ha surgido DevOps. Una línea cada vez más fina entre el código que ejecuta aplicaciones y el que configura la infraestructura, implica que los desarrolladores de aplicaciones y los profesionales de operaciones compartan cada vez más un conjunto de responsabilidades laborales.
Si ya han tenido la oportunidad de utilizar Microsoft Azure, tendrán muy claro que desde el portal podemos desplegar una gran cantidad de servicios en la nube, basta con hacer unos clics y llenar algunos campos de información para lograr este objetivo. Pero ¿existe otra forma de hacerlo? la respuesta es «si» y de varias formas, en esta ocasión nos centraremos en ARM o mejor conocido como Azure Resource Manager.
En este caso dejamos valores por defecto, si necesitamos especificaciones muy claras sobre aspectos de red, podemos hacer los respectivos cambios
Hay disponibles nuevas características en las plantillas de Resource Manager que ayudan a resolver algunos desafíos clave. Estas nuevas características abarcan desde la mayor facilidad para crear plantillas de Resource Manager con una nueva extensión de Visual Studio Code hasta la realización de análisis de hipótesis para comprender los cambios antes de implementar las plantillas. También incluyen scripts de implementación, aprovisionamiento de grupos de administración y suscripciones a gran escala.Cabe destacar que hay varias características clave de Azure Firewall disponibles con carácter general (GA) y en versión preliminar:
Por ejemplo pronto habrá disponibles con carácter general varias direcciones IP públicas.
Availability Zones ya está en disponibilidad general.
El filtrado de FQDN de SQL está ahora en versión preliminar.
La etiqueta FQDN de Azure HDInsight está ahora en versión preliminar.
Ya está disponible la administración centralizada con soluciones de asociados.
Hasta aquí la implementación de la máquina virtual es un proceso normal como para cualquier otra que no haga uso de ARM.
Las plantillas básicamente definen la infraestructura y configuración de una solución en Microsoft Azure. Resource Manager de Azure toma estas plantillas en formato JSON y las traduce en llamadas API REST para su ejecución.
Si consultamos la definición de su página web oficial, podemos decir que “Ansible es un lenguaje universal, que desentraña el misterio de cómo se realiza el trabajo”, sin duda una definición un poco mística
En Wikipedia encontramos que se trata de “una plataforma de software libre para configurar y administrar computadoras”. Vale esta definición me gusta más.
Desde mi experiencia les puedo decir que, sobre todo si tenemos que trabajar con multitud de dispositivos, no solo servidores, sino también dispositivos de red como switches o routers, o incluso trabajar con plataformas en la llamada nube, como AWS, Ansible nos puede ayudar, y mucho, en nuestro día a día.
Sabemos que hoy en día nos encontramos con grandes retos que afrontar en el mundo Cloud, como el escalado de las aplicaciones y la definición de una arquitectura válida para el servicio que pretendemos desplegar.
Para ello y para otro tipo de problemas, nos encontramos con herramientas como Terraform, capaz de facilitarnos la codificación de una infraestructura dependiendo de nuestras necesidades, los servicios que tengamos que prestar y con una gran variedad de proveedores donde depositar nuestra infraestructura.
Terraform nos permite codificar nuestra infraestructura atendiendo a las necesidades de nuestro servicio y ofreciendo un amplio abanico de proveedores donde desembarcar nuestra infraestructura.
Pulumi es una herramienta que nos permite realizar despliegues sobre plataformas de Cloud pública o privada. Aunque el número de proveedores que soporta es mucho menor que Terraform, soporta AWs, Microsoft Azure, GCP junto a Openstack y Kubernetes por lo que cubrirá la mayor parte de nuestas necesidades.
Al igual que Terraform, Pulumi es otra herramienta de infraestructura cómo código y de código abierto. Sin embargo, la principal fortaleza de Pulumi es que si ya tenemos conocimientos previos de programación, podemos usarlos para desplegar dicha infraestructura. Soporta Node.js (Javascript, Typescript o cualquier otro lenguaje compatible), Python3 y Go, aunque si miramos su documentación es posible añadir cualquier lenguaje que queramos.