Acueducto

Intro

Érase una vez … Internet, la red de redes. Que fue creciendo y evolucionando de forma (aunque no lo parezca) orgánica y fractal. Un solución de continuidad de telecomunicaciones (antenas y cables) que componen una compleja, vasta y creciente infraestructura técnica. Hoy no hablaremos de lo que es más tangible (de la ‘capa física’ o de transmisión de los bits) , sino de la que se sustenta sobre ella para ofrecernos la canalización de la conectividad IP y servicios Web en general que sobre dicho protocolo operan.

En otras palabras, un conjunto de redes, sistemas (servidores, bases de datos, enrutadores )… y personas (técnicas) que las operan y tratan de orquestar todo esa sinfonía de flujos de bits que van y vienen a la velocidad de la luz.

¿Cómo ponerse de acuerdo en la evolución y mejora ? ¿Que posibilidades hay de dar marcha atrás cuando algo falla?¿ o de experimentar nuevas posibilidades y servicios (sin perder el sueño) a sabiendas de que podemos sencillamente dar marcha atrás cuando algo falla?

Contexto y día a día TIC en Librebits

Habitualmente nuestros blogposts tienen un carácter marcadamente práctico. Hoy nos tomamos la libertad de asentar algunos conocimientos en forma de conceptos, ¿que nos permitan revisar nuestras prácticas y ampliar nuestro horizonte en este 2022 ?

En la cotidineidad de la actividad de Librebits empezamos manejando 2 servidores en la web (2 entornos: de producción y desarrollo), dichos recursos han aumentado ligeramente llegando a un número 5 servidores en la web (el número, naturalmente según la necesidad del momento/proyecto), e indirectamente somos responsables de alguno más. En tareas de lo que se suele llamar en la jerga en inglés sysadmin o sysOps.

La capacidad de recursos hardware ( memoria RAM, potencial computacional, discos de almacenamiento, ancho de banda etc..) de esta infraestructura es de amplio espectro. Desde unas pequeñas y versátiles SbC’s (single board computing) de arqitectura hardware basada ARM - Raspberry / Banana / Orange Pi- que puedes tener en el patio trasero o salón de tu casa (o en la huerta, a través de la que gestionar la telemetría que informa de su salud) hasta servidores dedicados en grandes centros de datos al alcance de nuestros teclados.

En cualquier caso, en el refinamiento, reciclado y puesta al día de nuestro quehacer, a todo ello le llamaremos infraestructura : en adelante las líneas entre lo tangible e intangible (¿el software y el hardware?) se difuminan, pues hablaremos ‘indistintamente’ de servidores, bases de datos, balanceadores de carga, etc ..

En este 2022 queremos revisar, mejorar y actualizar nuestras prácticas en relación al manejo de infraestructura y recursos TIC. ¿Darle un nuevo enfoque a la forma de gestionar todo ello, más tolerante a fallos y resiliente a la vez?

NOTA: [sin ánimo exhaustivo, mencionaremos algunas de las herramientas que estamos empezando a usar… como mera muestra de un amplio espectro]

Infraestructura cómo Código (fuente) (IaC)

Una posible respuestas a pregunta formuladas anteriormente… según la editorial de referencia en lo que a software libre y de código fuente abierto se refiere (que va dibujando más y más … el rumbo de parte de la industria TIC) . Que publicó la consigna de la denominada IaC :

La Infraestructura como código fuente es un enfoque a la automatización de infraestructura basada en prácticas importadas del desarrollo de software. Enfatiza rutinas consistentes y repetibles para la provisión y la introducción de cambios en sistemas( y redes) y su configuración. Realizas los cambios en forma de código fuente, entonces se usa la automatización para testear y aplicar dichos cambios en los sistemas (y redes).

― Kief Morris, Infrastructure as Code, O’Reilly.

Veamos un enfoque más popular …

Manifiesto " Infraestructura como código - IcC "

Queremos tratar la administración de sistemas como un proyecto de desarrollo de software (libre y de código fuente abierto)

Queremos revisar los cambios que se aplican sobre nuestros sistemas

Queremos poder fácilmente reproducir nuestros sistemas via despliegue automático

Queremos compartir conocimiento con otros, en un círculo virtuoso

« Es por ello que tratamos de publicar todo lo que podemos de la configuración de nuestros sistemas, y gestionar toda nuestra infrastructura con herramientas de gestión de configuración. Por tanto, sin necesidad de acceder mediante conexión SSH y login en nuestros hosts.»

Automatizar la gestión de recursos TIC , ¿un poco de (Git) Dev y otro poco de Ops? ¿ DevOps ? ¿ GitOps ?

En la industria se oye hablar de la tan cacareada cultura DevOps … Sin dejarnos llevar por las modas ni el último ‘trending topic’ en Twitter, trataremos de esbozar algunas líneas con nuestra perspectiva y experiencia. Pues, a las finales… de lo que se trata es de manejar y orquestar sistemas y redes. Llámale ‘sysOps’ , ‘devOps’, ‘gitOps’ … ¿o como más te resuene?.

NOTA : el mantra práctico aquí podría ser… adpoptar Git como «única fuente de la verdad» (común, vaya…) para toda la coordinación ¿de recursos técnicos y personas ?

Herramientas de automatización de infraestructura TIC : Ansible

Ansible es una herramienta de código fuente abierto (desarrollada por Red Hat Linux , ahora IBM ) para gestionar y automatizar todas aquellas tareas relacionadas con la configuración y administración de aplicaciones y sistemas, permite trabajar menos: «escribe una vez, ejecuta muchas», permite simplificar tareas tediosas y complejas y convertirlas en un proceso automático. El doble de potente que un «script bash» y diez veces mas fácil.

Si quieres ahondar más, Drymer ha publicado una serie de blogposts sobre la herramienta Ansible que recomendamos…

Hemos aprendido y queremos compartir aquí que si bien Ansible facilita el provisionamiento automatizado de infraestructura TIC, no hace un seguimiento de su ciclo de vida . Es decir, que los cambios que dichos recursos experimenten tienen que ser reintroducidos manualmente en el <código fuente> que trata de reflejar la infraestructura deseada.

En el horizonte de la automatización de recursos TIC … ¿ Terraform ?

Podríamos hacerlo también en la OrangePi 3 (mini computadora hermana de la popular Raspberry ) que tenemos en la estantería del salón… Por exigencias del guión, se nos ha planteado esta vez la necesidad de publicar la popular herramienta de gestión de contenidos y Blogging Wordpress en Amazon AWS . De forma ya no manual sino automatizada (usando la herramienta Terraform ).

Hablamos de una herramienta que convierte ficheros declarativos

Infraestructura-i

de configuración en infrastructura.

Infraestructura-ii

En este caso sí, Terraform (código fuente abierto también) hace un seguimiento de su ciclo de vida , además de facilitar despliegues de infraestructura a gran escala. Cierto es que nuestro caso no solemos usar habitualmente tantos recursos computacionales, ello no es óbice para que siempre podamos a aprender algo de las mejores prácticas a las que induce la herramienta.

Por otro lado, naturalmente, hay quien combina ambas herramientas, Ansible y Terraform , a lo BoB (‘best of both’) extrayendo lo mejor de ellas según el escenario que se plantee. Lo interesante en ambos casos es que uno puede acudir a un repositorio git (el esperanto de todo esto), la verdadera fuente de verdad que registra cualquier modificación/cambio en una colección de ficheros) y ¿ver el histórico y/o como hicieron otros antes ?.

Así pues, en la práctica, lo que nos parece más útil de todo ello es poder reutilizar (como si de librerías de programación en Python o PHP se tratara) tareas que hicieron otros, adaptarlas/refinarlas a nuestro antojo y usar a partir de ellas una herramienta que se encargue del ciclo de, por ejemplo, el provisionamiento de Wordpress en Amazon AWS, (sirva como inspiración) al estilo del colega Javier Ruiz Giménez

PostData:

reproducimos acá una conversación (microbblogging) entorno a ideas como libreSaaS , Infraestructura cómo Código fuente IcC (IaC - Infraestructure as Code ) que nos inspiró a escribir este artículo

@z428 … well, before reading your thoughts on #libreSaaS …. just to share that i woke up with those words in my head. (i’ll come back later on, after reading yours …)

#libreSaaS should be offered on a freesoftware ( as in freedom ) basis , adapted to IaC ( Infraestructure as Code … being manage on a kind of #libreDevOps ? ) vision. Tools like Puppet, Ansible ( Terraform ? ) … etc are already allowing this .

I mean, - we want to share our IaC à la libreDevOps . Transparency goes first. Naturally ?

- only like this we will be able to progress on that… without putting ( back again) our users on a ‘black box’ ?

- this virtous circle allows us to keep #coop erating in those #clouds ( blabla) that were always meant to be ' computers of others ' ? #libreSaaS

Infrastructure as code - IaC

We want to treat system administration like a (free) software development project:

We want to enable people to participate without needing an account on the Tails servers.
We want to review the changes that are applied to our systems.
We want to be able to easily reproduce our systems via automatic deployment.
We want to share knowledge with other people.

This is why we try to publish as much as possible of our systems configuration, and to manage our whole infrastructure with configuration management tools. That is, without needing to log into hosts.


Recursos :