¿Por qué debería interesarte la Automatización Empresarial de IT?
Primeros pasos con Ansible
Había una vez un joven Sysadmin Jedi que quería automatizar. Y para esto escribía shell-scripts sin cesar. Pero una incómoda voz en su interior le susurraba, una y otra vez, que no, eso no escalaba. El joven Sysadmin Jedi se preguntaba: ¿Cómo podía integrar su automatización con los servidores Windows? y sobre todo: ¿Qué pasaría cuando un router o un balanceador se involucraran?
El novato Jedi, en su ambiente podía automatizar libremente, pero no tenía un idioma común para dialogar con sus colegas. Entonces algo extraordinario pasó, un poderoso Maestro Jedi apareció, y el poder de la fuerza le mostró. “Ansible es mi nombre”, dijo con una voz que lo inundó todo, y de una forma sabia los obstáculos derribó.
“¿Un Maestro Jedi de la Automatización quieres ser, como yo?”, le dijo mirándolo fijo, “Entonces continúa leyendo con atención.”
La importancia de la automatización empresarial
Ya hace tiempo que la automatización empresarial ha dejado de ser una opción. Con la virtualización, y el uso cada vez mayor de la nube. La aplicación manual de parches para la gestión de vulnerabilidades, o el escalado de la infraestructura, implican un desvío de recursos en tareas de poco valor agregado que impactan negativamente en la fuerza de trabajo.
Un caso de uso sencillo, como el despliegue de una aplicación web, puede llevar hasta un mes o más, desde la solicitud inicial hasta que todos los componentes estén disponibles y la aplicación desplegada.
La documentación de los sistemas se hace difícil de mantener, aumenta el desvío de configuración, los ambientes caen en estados inconsistentes, y las posibilidades de problemas de seguridad aumentan. Y estos problemas se producen principalmente en empresas grandes y con un montón de sistemas heredados para mantener. Donde cada aspecto de IT es además gestionado por grupos distintos: Mesa de Ayuda, Operaciones, Desarrollo, Redes, etc.
La automatización:
- libera recursos para tareas que aportan valor,
- aumenta la satisfacción de la fuerza de trabajo,
- acelera los tiempos de desarrollo, manteniendo la consistencia y aumentando la seguridad.
Desafíos claves para adoptar la Automatización Escalable
Infraestructura Compleja
Sin duda que la infraestructura híbrida y multicloud implica desafíos, principalmente en las grandes organizaciones. La evolución del Departamento de TI naturalmente favoreció la creación de “silos tecnológicos” que administran distintos sistemas y componentes y hablan su propio lenguaje. Para mantener un control se han diseñado procedimientos basados en sistemas de gestión que en general, agregan burocracia sin mejorar el desempeño.
Seguridad y cumplimiento
El control de acceso y consiguiente registro de auditoria es un desafío. En algunas organizaciones se utilizan múltiples usuarios para las tareas administrativas, de acuerdo a los sistemas y el nivel de acceso, con la complejidad de tener que mantener esas múltiples cuentas y sus credenciales y la gestión de la desvinculación de personal de IT.
Gobierno y Estandarización
Los Entornos Operativos Estándar aseguran la consistencia de los sistemas y facilitan la administración. Pero esto es un desafío cuando tenemos sistemas heterogéneos, y ese desafío aumenta con los sistemas en la nube. Cuando los cambios se realizan según necesidades puntuales producirán desvíos, la mayoría de las veces no documentados. La probabilidad de esto también aumenta con las urgencias, y con el tiempo generarán más incidentes de soporte o de seguridad.
La solución de estos problemas requiere un enfoque estratégico a nivel de la organización, para que la solución de los desafíos de IT estén alineados a las necesidades del negocio.
¿Por qué Ansible?
Ansible es una herramienta de automatización de código abierto.
Escrita originalmente por Michael De Haan (Cobbler, FUNC) en 2012, se ha convertido prácticamente en el estándar de facto para la automatización de IT. A diferencia de otras herramientas de automatización basadas en agentes, Ansible utiliza conexiones temporales usando SSH o WinRM, lo que hace más sencilla la implementación. Tiene una arquitectura modular, lo que permite extender su funcionalidad en base a plugins, y fundamentalmente los módulos, que son las “tools in the box”.
Existen más de 2.000 módulos para operar infraestructura en nube en los principales “hyperscalers”, servidores de la familia Unix, servidores Windows y equipamiento de red.
Utiliza una sintaxis declarativa basada en YAML, que hace que sea muy fácil de mantener y sobre todo, de leer.
Ansible sobresale por su:
- Arquitectura escalable: que lo hace ideal para pequeños y grandes despliegues.
- Idempotencia: que asegura un estado consistente entre múltiples sistemas.
- Seguridad: Elimina la necesidad de múltiples cuentas. Las credenciales y otra información sensible se pueden mantener cifradas.
Casos de Uso
Ansible se destaca en:
- Gestión de la configuración: mantiene configuraciones consistentes a través de miles de servidores.
- CI/CD: Automatización de pipelines de build and deploy.
- Orquestación de Cloud: Gestión de infraestructura en la nube híbrida.
Un ejemplo: Como muchas organizaciones, NASA quería pasar de gestionar sus propios datacenters, que son costosos de administrar y difíciles de escalar, a infraestructura en la nube. El desafío particular era mover 65 aplicaciones basadas en hardware, a la nube de Amazon (AWS). Gestionar múltiples VPCs y diferentes cuentas hacía esto bastante complejo. Previamente NASA utilizaba Shell Scripts y conexiones SSH manuales, pero con la implementación de Ansible lograron:
- Aplicar actualizaciones en servidores web con un simple playbook de 10 líneas.
- Reparación inmediata de problemas de seguridad.
- Cada semana las versiones web y mobile de
son actualizadas en menos de 5 minutos. - Los usuarios son creados y eliminados instantáneamente, asegurando que solo tienen acceso a los servidores las personas indicadas.
- También integraron Ansible facts a su CMDB para tener mayor visibilidad de la infraestructura.
Ref: https://www.linkedin.com/pulse/case-study-explained-how-nasa-used-ansible-migrate-cloud-sharma/
Primeros pasos
Los requerimientos básicos para usar Ansible son tener Python, SSH y Ansible. Es recomendable utilizar alguna de las distribuciones de la familia Red Hat.
Puedes seguir las instrucciones de la documentación de Ansible para crear tu nodo de control.
Te muestro un playbook simple para configurar un servidor web.
- name: Demo playbook to install apache web server on Red Hat.
hosts: webserver
tasks:
- name: Install httpd package
dnf:
name: httpd
state: latest
- name: Start and enable httpd service
service:
name: httpd
enabled: true
state: started
- name: Create a custom index.html file
copy:
dest: /var/www/html/index.html
content: \|
Enable SysAdmin Demo
Ansible first steps
Custom Web Page
Con este ejemplo te invito a que des tus primeros pasos.
Conclusión
La automatización de IT en la empresa te va a permitir simplificar las tareas administrativas, y liberar recursos para utilizar donde sea necesario aportarle valor al negocio.
Coming soon
En el próximo artículo de esta serie hablaremos acerca de la Estrategia de Automatización. Te invito a seguir la serie para profundizar en este importante tema.