Automatización de los servicios de aplicaciones de F5: guía práctica
Introducción
Automatizar el despliegue y la gestión de la configuración de los dispositivos de entrega y seguridad de aplicaciones se ha convertido en una práctica prácticamente obligatoria. En el informe de IDG de 2017 FutureScape se destacaron la automatización y la gestión multicloud como algunas de las iniciativas clave que afectarían a las empresas de aquí a 2021. La automatización aporta escalabilidad, fiabilidad e integración al despliegue de los servicios esenciales de seguridad, optimización y disponibilidad que necesitan las aplicaciones, e incorpora su entrega a los flujos de trabajo orquestados de compilación, prueba y despliegue que se están consolidando como el modelo predominante de despliegue de aplicaciones.
Incluso una automatización sencilla de tareas básicas, como añadir nuevos servidores virtuales o miembros a un pool, puede permitir que el equipo de operaciones ofrezca funciones de autoservicio a los propietarios de las aplicaciones o a otros sistemas automatizados, y liberar tiempo para trabajos más productivos, como desarrollar la próxima generación de herramientas de automatización.
La necesidad de automatizar cobra aún más importancia cuando una organización empieza a adoptar varias plataformas en la nube para prestar servicios de TI. Al intentar desplegar servicios en varias ubicaciones con plataformas de distintas características, la automatización puede ayudar a reducir el aumento de la carga operativa y a disminuir los errores derivados de la falta de familiaridad con las nuevas plataformas.
Pero ¿qué se debe automatizar y cómo? Dada la diversidad de modelos operativos, interfaces y lenguajes, el software de automatización puede funcionar en la capa de un único dispositivo o adoptar la forma de herramientas más complejas que abarcan varios sistemas. Todas las plataformas en la nube de infraestructura como servicio (IaaS) ofrecen sus propias herramientas nativas para implementar infraestructuras y servicios virtuales. Además, F5 ofrece diversas interfaces y opciones de orquestación. Aunque esta amplia variedad de herramientas y opciones permite automatizar de la forma que mejor se adapte a su organización, elegir la herramienta adecuada puede resultar una tarea abrumadora, y el riesgo de aumentar la complejidad y provocar una proliferación de herramientas es real.
En este documento, ofreceremos una visión general de las formas en que puede automatizar la implementación, la gestión y la configuración de los dispositivos F5 BIG-IP (tanto físicos como virtuales), junto con algunos consejos para elegir la opción más adecuada para su empresa.
Automatización: algunas consideraciones clave
El espectro de la automatización
La automatización abarca una amplia variedad de actividades. En un extremo del espectro se encuentra el desarrollo de scripts sencillos escritos en Bash, TMSH, Python u otros lenguajes, que pueden ejecutarse localmente para agilizar las tareas de configuración manual. En el otro extremo se encuentra un sistema completo de «infraestructura como código» que combina la gestión del código fuente, orquestadores de flujos de trabajo y, potencialmente, varias herramientas de automatización para crear un sistema en el que la configuración de la infraestructura se define y modifica mediante archivos de texto almacenados en un repositorio. Entre ambos extremos existen diversas opciones que le ayudarán a gestionar la implementación y configuración de una plataforma BIG-IP.

Mutable frente a inmutable
La mayoría de las implementaciones actuales de BIG-IP podrían considerarse mutables, lo que significa que cabe esperar que su configuración cambie con el tiempo. Esto se debe a que la plataforma BIG-IP se implementa principalmente como un dispositivo multiinquilino que presta servicios a varias aplicaciones. A medida que se implementen nuevas aplicaciones, o que las existentes se amplíen o requieran servicios adicionales, la configuración de BIG-IP se actualizará en consecuencia. Este método de implementación permite a los equipos de infraestructura gestionar un conjunto de infraestructura centralizada que presta servicios a las aplicaciones desde una plataforma común.
Sin embargo, a veces las plataformas BIG-IP se implementan como parte de una pila de aplicaciones independiente, en la que los servicios de un BIG-IP concreto están vinculados a una aplicación o servicio específicos. En esta situación, podríamos considerar que la configuración de BIG-IP es inmutable; es decir, la configuración se instala durante el arranque o como parte de la imagen de software, y no se modifica durante el ciclo de vida de la instancia de BIG-IP. Los cambios de configuración se realizan modificando la imagen de software o el contenido del script del agente de inicio y, a continuación, volviendo a realizar la implementación. Este modelo suele denominarse «nuke and pave». Aunque en general es menos habitual, la disponibilidad de nuevos modelos de licencia de BIG-IP compatibles con instancias por aplicación, herramientas de gestión de licencias mejoradas y herramientas como F5 cloud libs (un conjunto de scripts y bibliotecas de Node.js diseñados para ayudar a incorporar un BIG-IP a un entorno en la nube) están haciendo de este modelo de implementación una opción viable para las organizaciones que necesitan que una aplicación disponga de una pila aislada y estrechamente integrada tanto de código como de infraestructura.

Declarativo frente a imperativo
Existen dos modelos conceptuales para ofrecer interfaces de automatización a los consumidores. Los esquemas de automatización más habituales de la «primera oleada» suelen seguir un modelo imperativo. En los modelos de automatización imperativos, el consumidor normalmente necesita saber tanto qué quiere conseguir como los pasos concretos (por lo general, mediante llamadas a la API) necesarios para lograrlo. Esto suele trasladar al consumidor la responsabilidad de comprender los detalles de configuración de los servicios avanzados, además de la complejidad y el esfuerzo adicionales que supone integrar dichos servicios con herramientas de automatización. Es como pedir un bocadillo especificando una por una todas las operaciones necesarias para prepararlo, en lugar de limitarse a pedir, sencillamente, un bocadillo y confiar en que quien lo prepara sepa qué operaciones debe realizar y en qué orden.
En cambio, una interfaz declarativa permite a los consumidores (humanos o máquinas) crear servicios solicitando lo que desean. No es necesario conocer en detalle todos los pasos requeridos, ya que el sistema objeto de la automatización dispone de flujos de trabajo preconfigurados o plantillas de servicio para crear la configuración en función de los resultados deseados. Aunque una interfaz declarativa requiere una configuración inicial algo más compleja, esta complejidad se compensa con la sencillez de uso una vez creadas las plantillas de servicio adecuadas. Por lo general, esto la convierte en el mecanismo preferido para crear sistemas de automatización.
Directamente o mediante una herramienta de gestión
Otra decisión que deberá plantearse es si las llamadas a la API de automatización deben realizarse desde herramientas de terceros directamente al dispositivo que se debe modificar o a través de una herramienta de gestión adicional. Las herramientas de gestión pueden abstraer y simplificar las operaciones, además de ofrecer capas adicionales de control y registro frente a una conexión directa con la entidad gestionada. Sin embargo, deberá mantener dicha herramienta para garantizar que sus capas de gestión tengan una alta disponibilidad en situaciones en las que sea fundamental poder realizar cambios rápidamente.

¿API, agente de inicio o CLI?
Los dispositivos BIG-IP se automatizan principalmente mediante la API REST, que expone la mayor parte de las funcionalidades de BIG-IP a través de un esquema documentado. Los módulos proporcionados por F5 para herramientas de automatización como Ansible hacen un uso intensivo de la API REST. Además de ofrecer una interfaz imperativa para cada ajuste, las llamadas a la API REST pueden utilizarse para iniciar plantillas de iApp de F5, pasando los valores para configurar el servicio iApp como una carga útil JSON en la llamada a la API. La incorporación de la funcionalidad iControl LX también permite crear un punto de conexión de API definido por el usuario que puede realizar una operación de varios pasos mediante una única llamada a la API.
Otra forma habitual de automatizar la configuración de BIG-IP consiste en utilizar agentes de inicio, que se ejecutan durante el arranque y pueden obtener información externa para configurar la plataforma BIG-IP. Los agentes de inicio suelen utilizarse para realizar la configuración inicial e «incorporar» dispositivos, y pueden obtener scripts y archivos de configuración adicionales de sitios de terceros, como GitHub, o de su propio repositorio. Los agentes de inicio también pueden utilizarse para configurar por completo una plataforma BIG-IP, especialmente si se ha optado por una configuración fija para cada aplicación.
La configuración de inicio más habitual es cloud-init, que está habilitada en todas las imágenes de BIG-IP VE (excepto en Microsoft Azure), aunque resulta más adecuada para implementaciones en AWS y OpenStack. Además de cloud-init, F5 proporciona una serie de bibliotecas de inicio en la nube para ayudar a configurar BIG-IP durante el arranque.
Si decide utilizar agentes de inicio para configurar una plataforma después del arranque, preste especial atención a la gestión de errores si se utilizan fuentes externas, sobre todo cuando pueda iniciarse una instancia como parte de un evento de escalado. Si los recursos externos no están disponibles, ¿cómo se comportará el sistema? ¿Se crearán dispositivos «zombi» adicionales para intentar satisfacer la demanda?
En algunos casos, los sistemas de automatización pueden actuar como usuarios y ejecutar comandos de la CLI. Aunque esto puede resolver ocasionalmente algunos problemas cuando las llamadas a la API no son suficientes, en general, la dificultad de ofrecer soporte y la fragilidad de la solución hacen que este sea el método de último recurso.
Plantillas y guías de actuación
Las plantillas y los playbooks permiten automatizar las implementaciones y crear infraestructuras con cierto grado de estandarización. Un nivel adecuado de estandarización hace que la infraestructura sea más robusta y fácil de mantener. Las plantillas bien diseñadas ofrecen una interfaz declarativa en la que la entidad solicitante (un usuario o una máquina) solo necesita conocer las propiedades que requiere, no los detalles de implementación. Realizar las implementaciones exclusivamente mediante plantillas y solucionar los problemas únicamente corrigiendo dichas plantillas puede mejorar la calidad del servicio, ya que, por lo general, los problemas se corrigen una sola vez y, a continuación, los servicios se vuelven a implementar a partir de la nueva plantilla.
Integraciones de plataformas
Las herramientas de integración de plataformas vinculan la configuración de los servicios BIG-IP con plataformas informáticas, como nubes privadas o sistemas de gestión de contenedores. Los mecanismos varían según la plataforma y la implementación, pero suelen ajustarse a tres modelos:
Sustitución de los servicios de F5 en una estructura de plataforma existente
En este modelo, los servicios de F5 se integran mediante una estructura de plataforma existente, como el uso de F5 como enrutador de OpenShift Container Platform o el uso de F5 con el sistema equilibrio de carga como servicio (LBaaS) de OpenStack. El uso de estos mecanismos apenas requiere cambios en los procedimientos operativos, ya que se utiliza una interfaz nativa de la plataforma para configurar los servicios, y el controlador suministrado y el resto del software convierten de forma transparente las directivas de configuración de la plataforma en una configuración de F5. No obstante, recuerde que solo se pueden implementar fácilmente las funciones disponibles a través de la interfaz nativa de la plataforma.
Suscripción a eventos de la plataforma
Otro método de integración habitual consiste en que un módulo de software (como Container Connector para Kubernetes y Mesos) se suscriba a los eventos de una plataforma y, a continuación, modifique una configuración en función de dichos eventos. Puede seleccionar qué eventos y servicios se deben implementar etiquetando las aplicaciones que deben recibir servicio y configurando el software del conector para que supervise los eventos que contengan las etiquetas requeridas.
Integración con herramientas de gestión de plataformas
Muchas plataformas de nube privada cuentan con sistemas de gestión diseñados para la automatización. VMware, por ejemplo, dispone de varias herramientas de gestión e integración, entre ellas vRealize Orchestrator (vRO), para el que existe un complemento de terceros destinado a la configuración de BIG-IP. Otros ejemplos incluyen el complemento para el sistema de plantillas OpenStack HEAT.
Descubrimiento de servicios
Aunque no es una solución de automatización completa, la detección de servicios es una forma sencilla y eficaz de adaptar las configuraciones de BIG-IP a los cambios del entorno. La detección de servicios sondea periódicamente el sistema en la nube mediante una API para obtener una lista de recursos y modificar en consecuencia la configuración de BIG-IP. Esto resulta especialmente útil en entornos donde los recursos están configurados en grupos de escalado automático, ya que, al escalar los recursos informáticos de back-end, el equilibrador de carga debe conocer los nuevos recursos. Los componentes de detección de servicios se incluyen con las soluciones de escalado automático en la nube de F5 para AWS y Azure.
Herramientas de automatización habituales: guía de recursos
Aunque no podemos abarcar todas las herramientas de automatización u orquestación imaginables, a continuación se incluye una lista de las herramientas, los casos de uso y las funcionalidades más habituales entre los clientes de F5.
-------------------------
Integraciones de idiomas
Idioma
Estado
Ejemplos y fuente
Python
Contribución de F5
https://github.com/F5Networks/f5-common-python
Go
Aportado por los usuarios
https://github.com/f5devcentral/go-bigip
PowerShell
Compatible con F5
https://devcentral.f5.com/wiki/icontrol.powershell.ashx
Herramientas de gestión de la configuración y automatización de la infraestructura
Herramienta
Estado
Ejemplos y fuente
Ansible
Contribución de F5
https://github.com/F5Networks/f5-ansible
Terraform
Contribución de F5
https://github.com/f5devcentral/terraform-provider-bigip
Puppet
Contribución de F5
https://github.com/f5devcentral/f5-puppet
Chef
Aportado por el usuario
https://github.com/target/f5-bigip-cookbook
SaltStack
Terceros
https://docs.saltstack.com/en/latest/ref/runners/all/salt.runners.f5.html
Sistemas de plantillas de infraestructura
Plataforma
Estado
Ejemplos y fuente
AWS
Compatible con F5 2
https://github.com/F5Networks/f5-aws-cloudformation
Azure
Compatible con F5¹
https://github.com/F5Networks/f5-azure-arm-templates
Compatible con F5¹
https://github.com/F5Networks/f5-google-gdm-templates
OpenStack
Compatible con F5¹
https://github.com/F5Networks/f5-openstack-hot
----------------------------
Agentes de inicio y scripts en la nube
Bibliotecas en la nube
https://github.com/F5Networks/f5-cloud-libs
---------------------------
Integraciones de plataformas
Plataformas de gestión de contenedores
Plataforma
Estado
Ejemplos y fuente
Kubernetes
Compatible con F5¹
https://github.com/F5Networks/k8s-bigip-ctlr
Marathon
Compatible con F5 1
https://github.com/F5Networks/marathon-bigip-ctlr
CloudFoundry
Compatible con F5¹
https://github.com/F5Networks/cf-bigip-ctlr
Plataformas de nube privada
Plataforma
Estado
Ejemplos y fuente
OpenStack (LBaaS)
Compatible con F5¹
https://github.com/F5Networks/f5-openstack-lbaasv2-driver
OpenStack (Heat)
Compatible con F5¹
https://github.com/F5Networks/f5-openstack-hot
VMWare (vRO)
De terceros
https://bluemedora.com/products/f5/big-ip-for-vrealize-operations/
-------------------
Una nota sobre las herramientas de orquestación y flujo de trabajo
Las herramientas e integraciones anteriores permiten implementar y configurar de forma automatizada la plataforma BIG-IP para proporcionar servicios de disponibilidad, seguridad y escalado de aplicaciones. Estos servicios, aunque esenciales, constituyen solo una parte de la implementación de una aplicación de pila completa. Para crear de forma coordinada y probada una pila de aplicaciones completa que incluya los servidores, los datos, el código compilado de la aplicación y la infraestructura, se necesita algo más que una simple herramienta de automatización.
Necesitará una herramienta de orquestación de nivel superior, con sus correspondientes flujos de trabajo e integraciones con diversos sistemas de automatización. Estas herramientas se utilizan principalmente en prácticas de integración continua y entrega continua (CI/CD), en las que la automatización es necesaria para prácticamente cualquier implementación. Aunque existen varias herramientas de orquestación, Jenkins es quizá la más habitual, y hay flujos de trabajo de ejemplo disponibles que muestran cómo utilizar Jenkins, F5 y Ansible para incorporar las capacidades de infraestructura como código de F5 en un flujo de trabajo de CI/CD. Sin embargo, por lo general, la herramienta de orquestación utilizará una de las herramientas de automatización de la configuración para efectuar los cambios necesarios para desplegar los servicios.
Licencias
Las plataformas BIG-IP requieren una licencia para funcionar, por lo que resulta útil incluir la concesión de licencias en la ruta crítica de la automatización. En entornos muy dinámicos, donde puede ser necesario ampliar o reducir rápidamente la capacidad de los dispositivos virtuales BIG-IP, o crearlos con fines de prueba y desarrollo, los modelos de licencia deben evaluarse detenidamente.
En la nube pública, una opción es utilizar versiones de BIG-IP con facturación por consumo (disponibles a través de los marketplaces de los proveedores de nube). Las instancias con facturación por consumo obtendrán la licencia automáticamente, y los costes se cobrarán a través del proveedor de nube según el uso o el periodo de compromiso.
Otra opción es utilizar conjuntos de licencias reutilizables adquiridas mediante suscripción (o de forma perpetua) junto con F5 BIG-IQ License Manager, que le permitirá asignar y revocar licencias de un conjunto.
Puede automatizar los pasos de concesión de licencias mediante agentes de inicio y llamadas a la API, para lo cual será necesario disponer de acceso saliente a Internet al servidor de licencias de F5 (incluso en el caso de las licencias de pago por uso en plataformas en la nube).
¿Qué usar en cada caso?
Dependiendo de su organización, elegir las herramientas de automatización y orquestación adecuadas puede ser muy sencillo o una tarea complicada. Resulta fácil si ya ha adoptado una herramienta o metodología para otros componentes y solo necesita integrar BIG-IP en el sistema. Incluso sin integrarlo con una herramienta concreta, la completa API REST de iControl, combinada con las capacidades de iControl LX y cloud-init, permite integrar BIG-IP en una herramienta de automatización existente de forma relativamente sencilla (especialmente si se combina con plantillas de iApp, que permiten crear incluso una configuración compleja con una sola llamada a la API).
Sin embargo, si parte de cero, la situación puede ser más compleja. Al igual que al seleccionar cualquier otra solución, lo primero es comprender sus requisitos. Aunque este documento no puede elaborar por usted la lista de requisitos, a continuación se ofrecen una serie de preguntas y recomendaciones que le ayudarán a realizar su evaluación.
- Modelo de automatización: Un modelo declarativo será mucho más sencillo de utilizar para los usuarios de la orquestación. Estos solo necesitan saber qué quieren, en lugar de conocer todos los pasos del procedimiento para conseguirlo.
- Plataformas y entornos potenciales: A estas alturas, parece inevitable que los contenedores y diversas plataformas en la nube sean una parte fundamental de la infraestructura de las aplicaciones; planifique en consecuencia.
- Competencias: ¿Ya dispone de conocimientos sobre algunas de las tecnologías subyacentes? Tenga en cuenta que estas competencias pueden existir fuera de su departamento, pero dentro de la empresa en su conjunto. Si es así, podría ser conveniente elegir una herramienta que utilice un lenguaje que su organización ya haya adoptado.
- Capacidad de soporte: Cree únicamente sistemas que pueda mantener. Puede parecer obvio, pero una de las claves del éxito es elegir un nivel de complejidad que su organización pueda asumir, de modo que maximice las ventajas de la automatización sin generar una sobrecarga operativa excesiva.
Paquetes de soluciones de nube privada de F5
Los paquetes de soluciones de nube privada de F5 permiten adquirir fácilmente la tecnología y los servicios necesarios para ofrecer servicios de aplicaciones de F5 en diversos entornos de nube privada. Estos paquetes combinan software, hardware y servicios profesionales para crear una solución integral y validada para distintas plataformas de nube privada. El uso de paquetes de soluciones de nube privada puede proporcionarle una implementación de referencia que se puede replicar en otras plataformas para crear un conjunto más uniforme y coherente de servicios de entrega y seguridad de aplicaciones en múltiples entornos.
Conclusión
El aumento de los niveles de automatización de TI es inevitable. Adoptar un enfoque estratégico para proporcionar servicios clave de entrega y seguridad de aplicaciones garantizará que las aplicaciones que implemente su organización se mantengan seguras y disponibles. La automatización también puede ayudar a reducir la carga operativa, especialmente cuando se trabaja con varias plataformas y nubes públicas.
Elegir el sistema de automatización adecuado puede resultar complicado y, en el mejor de los casos, debería abordarse como un esfuerzo colaborativo e integral, teniendo en cuenta tanto las competencias disponibles como la facilidad de mantenimiento del sistema. Sea cual sea la solución que elija, puede tener la certeza de que contará con la plataforma BIG-IP y la experiencia de F5 para ofrecer los servicios de nivel empresarial de los que dependen sus aplicaciones, independientemente de dónde estén implementadas.
PUBLICADO EL 9 DE FEBRERO DE 2018
