La automatización de la implementación y la gestión de la configuración de dispositivos de seguridad y entrega de aplicação se ha convertido en una práctica casi obligatoria. En el informe IDG FutureScape de 2017, la automatización y la gestión de múltiples nubes se clasificaron como algunas de las iniciativas clave que impactarán a las empresas en 2021.1 La automatización aporta escala, confiabilidad e integración a la implementación de los servicios esenciales de seguridad, optimización y disponibilidad que necesitan las aplicações , y hace que su entrega sea parte de los flujos de trabajo orquestados de creación, prueba e implementación que están surgiendo como el modelo dominante de implementación de aplicação .
Incluso la automatización sencilla de tareas básicas como añadir nuevos servidores virtuales o miembros de un conjunto puede permitir que las operaciones proporcionen capacidad de autoservicio a los propietarios de aplicaciones u otros sistemas automatizados, así como tiempo libre para un trabajo más productivo, como la creación de la siguiente ola de herramientas de automatización.
La necesidad de automatizar adquiere una importancia aún mayor cuando una organización comienza a adoptar múltiples plataformas en la nube para prestar servicios de TI. Cuando se intenta implementar servicios en varias ubicaciones con diferentes características de plataforma, la automatización puede ayudar a reducir el impacto del aumento de la sobrecarga operativa y a reducir los errores debidos a la falta de familiaridad con las nuevas plataformas.
Pero, ¿cómo y qué automatizar? Con diferentes modelos de operaciones, interfaces e idiomas, el software de automatización puede funcionar en una sola capa de dispositivo, o como herramientas más complejas y multisistémicas. Las plataformas de nube de infraestructura como servicio (IaaS) ofrecen sus propias herramientas nativas para implementar infraestructura y servicios virtuales. Además, F5 ofrece una gama de interfaces y opciones de orquestación. Si bien esta variedad de herramientas y opciones le brinda la oportunidad de automatizar de la manera que mejor se adapte a su organización, la elección de la herramienta adecuada puede ser una tarea desalentadora, y el riesgo de complejidad y proliferación de herramientas es real.
En este documento, le proporcionaremos 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 sobre cómo elegir el camino adecuado para su empresa.
Hay una serie de puntos clave de automatización en el ciclo de vida de la prestación de servicios de aplicaciones. Dependiendo del modelo de infraestructura y de los métodos de implementación de aplicaciones, es posible que necesite desarrollar todos o sólo algunos de ellos.
Si va a implementar servicios en un BIG-IP físico o virtual de alta capacidad multitenant, entonces las actividades de bootstrap e integración no serán una prioridad, en comparación con la implementación, monitorización y actualización de las configuraciones de los servicios de aplicaciones para los cientos o miles de aplicaciones que soportan.
Si se trata de un modelo de implementación en el que cada aplicación tiene instancias BIG-IP dedicadas en múltiples entornos (incluidas las instancias potencialmente efímeras creadas bajo demanda para pruebas y control de calidad), la automatización de los procesos de bootstrap y de integración forma parte del método fundamental, al igual que la implementación de los propios servicios de aplicación.
Cualquiera que sea su entorno y la cantidad de procesos que necesite automatizar, hay algunos temas clave que debe considerar.
La automatización cubre una amplia gama de actividades. En un extremo del espectro está el desarrollo de scripts simples escritos en Bash, TMSH, Python, u otros lenguajes que podrían ejecutarse localmente para acelerar las actividades de configuración manual. En el otro extremo del espectro 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) múltiples herramientas de automatización para crear un sistema en el que la configuración de la infraestructura se define y se modifica con archivos de texto contenidos en un repositorio. Entre estos dos extremos se encuentran una serie de opciones diferentes para ayudarle a gestionar la implementación y la configuración de una plataforma BIG-IP.
La mayoría de las implementaciones actuales de BIG-IP podrían considerarse mutables , lo que significa que podemos 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 proporciona servicios a múltiples aplicações. A medida que se implementan nuevas aplicações (o las aplicações existentes escalan o requieren servicios adicionales), la configuración de BIG-IP se actualizará para que corresponda. Este método de implementación permite a los equipos de infraestructura administrar un conjunto de infraestructura centralizada, que proporciona servicios a las aplicações desde una plataforma común.
Sin embargo, a veces las plataformas BIG-IP se implementan como parte de una pila de aplicação discretas, donde los servicios de un BIG-IP en particular están vinculados a una aplicação o servicio específico. En esta situación, podríamos tratar la configuración de BIG-IP como inmutable ; es decir, la configuración se instala en el arranque o como parte de la imagen del software y no se modifica durante el ciclo de vida de la instancia de BIG-IP. Los cambios de configuración se efectúan modificando la imagen del software o el contenido del script del agente de inicio y luego volviéndolo a implementar. A este modelo se le suele llamar “nuke and pave”. Si bien en general es menos común, la disponibilidad de nuevos modelos de licencias BIG-IP para soportar instancias por aplicación, herramientas de licencias mejoradas y herramientas como F5 Cloud Libraries (un conjunto de bibliotecas y scripts Node.js diseñados para ayudarlo a incorporar un BIG-IP en una nube) están haciendo que este modelo de implementación sea una opción viable para las organizaciones que requieren que una aplicação tenga una pila aislada y estrechamente unida de código e infraestructura.
Existen dos modelos conceptuales de cómo las interfaces de automatización están expuestas a los consumidores. Los esquemas de automatización de “primera ola” más comunes tienden hacia un modelo imperativo. En los modelos de automatización imperativos, el consumidor de automatización normalmente necesita saber tanto lo que quiere conseguir como los pasos explícitos (normalmente mediante llamadas a la API) para conseguirlo. Esto hace que el peso de entender los detalles de configuración de los servicios avanzados, así como la complejidad y el esfuerzo adicional para integrar los servicios con las herramientas de automatización, recaiga en el consumidor. Es como pedir un bocadillo especificando cada una de las operaciones necesarias para hacerlo, en lugar de simplemente pedir un bocadillo con la expectativa de que el que hace el bocadillo sepa los pasos (y el orden de los pasos) necesarios para hacer uno.
Por el contrario, una interfaz declarativa permite a los consumidores (humanos o máquinas) crear servicios pidiendo lo que quieren. No es necesario un conocimiento detallado de todos los pasos necesarios, ya que el objetivo de automatización tiene los flujos de trabajo preconfigurados o las plantillas de servicio para crear la configuración basada en los resultados requeridos. Mientras que una interfaz declarativa implica una configuración inicial un poco más compleja, esa complejidad se ve compensada por la simplicidad de operación una vez que se construyen las plantillas de servicio adecuadas. Esto lo convierte, en general, en el mecanismo preferido para construir sistemas de automatización.
Otra decisión que deberá tener en cuenta es si las llamadas a la API de automatización deben realizarse desde herramientas de terceros directamente al dispositivo que necesita ser modificado o a través de una herramienta de gestión adicional. Las herramientas de gestión pueden abstraer y simplificar las operaciones y pueden ofrecer capas adicionales de control y registro frente a una conexión directa con la entidad gestionada. Sin embargo, tendrá que asegurarse de que sus capas de gestión estén altamente disponibles en situaciones en las que la capacidad de realizar cambios rápidamente es crítica.
Los dispositivos BIG-IP generalmente se automatizan a través de la API REST, que expone la mayoría de la funcionalidad de BIG-IP a través de un esquema documentado . Los módulos de F5 para herramientas de automatización como Ansible hacen un uso extensivo de la API REST. La incorporación de la función iControl LX también permite la creación de un punto final de API definido por el usuario que puede realizar una operación de varios pasos con una sola llamada a la API.
Otra forma común de automatizar la configuración de BIG-IP es utilizar agentes de arranque, que se ejecutan al inicio y pueden obtener información externa para configurar la plataforma BIG-IP. Los agentes de arranque se utilizan a menudo para realizar la configuración inicial de los dispositivos «onboard» y pueden obtener scripts adicionales y archivos de configuración de sitios de terceros como GitHub o su propio repositorio. Los agentes de inicio también se pueden utilizar para configurar completamente una plataforma BIG-IP, especialmente si ha elegido una configuración fija por aplicación.
La configuración de inicio más común es cloud-init , que está habilitada en todas las imágenes de BIG-IP VE (excepto en Microsoft Azure), pero es más adecuada para su uso en implementaciones de 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 en 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 fallos. Esto es especialmente importante si se utilizan fuentes externas, especialmente cuando una instancia puede lanzarse como parte de un evento de escalamiento. Si los recursos externos no están disponibles, ¿cómo se comportará el sistema? ¿Se crearán dispositivos “zombies” adicionales para tratar de mantener el ritmo de la demanda?
En algunos casos, los sistemas de automatización pueden comportarse como usuarios y ejecutar comandos CLI. Si bien esto puede ocasionalmente resolver algunos problemas en los que las llamadas a la API pueden no estar completas, en general la dificultad de soporte y la fragilidad de la solución hacen de este método el último recurso.
Las plantillas y los libros técnicos pueden crear implementaciones automatizadas y construir infraestructuras que tengan un cierto grado de estandarización. El nivel apropiado de estandarización hace que su infraestructura sea más robusta y compatible. Las plantillas bien creadas ofrecen una interfaz declarativa, donde la entidad solicitante (usuario o máquina) sólo necesita conocer las propiedades que necesita, y no los detalles de implementación. La implementación estricta a través de plantillas y la reparación sólo a través de la corrección de plantillas puede conducir a un servicio de mayor calidad, ya que los problemas por lo general sólo tienen que solucionarse una vez. Los servicios se redistribuyen desde la nueva plantilla, y las actualizaciones realizadas en la plantilla evitan que el mismo problema se produzca por segunda vez.
Las herramientas de integración de plataformas vinculan la configuración de los servicios de BIG-IP a plataformas como la nube privada o los sistemas de gestión de contenedores. Los mecanismos varían según las plataformas y las implementaciones, pero generalmente se dividen en tres modelos:
Si bien no es una solución de automatización completa, el descubrimiento de servicios es una forma simple y poderosa de integrar las configuraciones de BIG-IP con los cambios en el entorno. El descubrimiento de servicios funciona sondeando periódicamente el sistema en la nube a través de API para recuperar una lista de recursos y modificando la configuración de BIG-IP en consecuencia. Esto es especialmente útil en entornos donde los recursos están configurados en grupos de escalamiento automático, porque escalar el recurso computacional de back-end requiere que el balanceador de carga esté al tanto de los nuevos recursos. Los componentes de descubrimiento de servicios se suministran con las soluciones de escalamiento automático en la nube de F5 para AWS y Azure .
Por lo tanto, ¿existe un esquema de automatización recomendado por F5? Sí y no. Hay tantas variables a considerar que un asesoramiento totalmente prescriptivo no es útil. Sin embargo, hemos reunido los elementos clave que creemos que necesitará para formar una familia de productos coordinada.
La familia de productos de F5 Automation Toolchain comprende los componentes básicos de automatización y orquestación que le permiten integrar las plataformas F5 BIG-IP en patrones de automatización comunes, como las cadenas de herramientas CI/CD.
F5 Automation Toolchain contiene los siguientes componentes clave:
La familia Automation Toolchain está diseñada para gestionar el ciclo de vida de entrega de los servicios de aplicaciones, desde la implementación de la plataforma (a través de plantillas de nube) hasta la integración, configuración de servicios y telemetría y registro avanzados para garantizar el rendimiento de las aplicaciones durante su vida útil.
Esta creciente familia de herramientas compatibles representa la dirección futura de la automatización de los servicios de aplicaciones de F5; pero esto no significa que no existan otras integraciones o que no sean compatibles. Consulte la sección “Otras herramientas de automatización” de este documento.
F5 Applications Services 3 Extension (AS3) proporciona una forma simple y consistente de automatizar el despliegue de servicios de aplicaciones de capa 4-7 en la plataforma BIG-IP a través de una API REST declarativa. AS3 utiliza un modelo de objeto bien definido representado como un documento JSON. La interfaz declarativa hace que la gestión de las implementaciones de servicios de aplicaciones de F5 sea fácil y fiable.
Diagrama: la arquitectura de AS3
La extensión AS3 admite y analiza las declaraciones y realiza las llamadas a la API iControl apropiadas para crear el estado final deseado en la BIG-IP de destino. La extensión puede ejecutarse en la instancia de BIG-IP o a través de AS3 Container, un contenedor/VM separado que ejecuta la extensión AS3, y luego realiza llamadas externas de API a la BIG-IP.
Las llamadas AS3 también se pueden realizar a través de BIG-IQ , que brinda licencias, administración, visualización y control de acceso para plataformas BIG-IP, y potencia F5 Cloud Edition , que brinda instancias de BIG-IP a pedido por aplicación combinadas con análisis poderosos.
La extensión Declarative Onboarding proporciona una interfaz sencilla para llevar una plataforma F5 BIG-IP desde justo después del arranque inicial hasta que esté lista para implementar seguridad y gestión de tráfico para aplicações. Esto incluye configuraciones del sistema como licencias y aprovisionamiento, configuraciones de red como VLAN e IP propias, y configuraciones de agrupamiento si está usando más de un sistema BIG-IP.
Una vez finalizado el proceso de incorporación, los servicios de aplicación se pueden implementar utilizando el proceso de automatización (o manual) que usted seleccione.
Declarative Onboarding utiliza un esquema JSON coherente con el esquema de AS3 y tiene una arquitectura similar. Declarative Onboarding se suministra como un RPM independiente de TMOS, que se instala en una BIG-IP recién arrancada durante el primer paso de la fase de incorporación.
BIG-IP es un poderoso generador de telemetría de aplicação, seguridad y red. La extensión Telemetry Streaming proporciona una interfaz declarativa para configurar la transmisión de estadísticas y eventos a consumidores externos como:
Al igual que con los otros miembros de la familia Automation Toolchain, la configuración se gestiona a través de una interfaz declarativa utilizando un esquema JSON sencillo y coherente.
La puerta de enlace de servicios API es una imagen de contenedor Docker que permite que las extensiones iControl LX personalizadas se ejecuten en una plataforma independiente de TMOS. Esto puede ayudarle a escalar y administrar sus implementaciones de F5 al abstraer las operaciones de administración de las plataformas BIG-IP individuales.
Las plantillas de nube utilizan las funciones de automatización de la implementación de nubes públicas y privadas para aprovisionar y arrancar dispositivos virtuales BIG-IP.
F5 actualmente admite plantillas para las siguientes nubes:
F5 está desarrollando activamente las plantillas en la nube para cubrir una gama más amplia de escenarios de implementación: envíe problemas o solicitudes de extracción a través del repositorio de GitHub correspondiente.
Los servicios de aplicación son sólo una de las capas de la pila de tecnología que crea una aplicación funcional. La integración, construcción e implementación de todos los componentes para llevar una aplicación desde el compromiso de elaboración del código hasta la implementación y supervisión operativa implica un gran número de pasos dependientes, que necesitan ejecutarse en el orden correcto. Automatizar esta tarea es el trabajo de las herramientas de orquestación que crean canales de flujo de trabajo de tareas y herramientas coordinadas.
La mayoría de las distribuciones comienzan con un repositorio de código fuente que contiene el código para la aplicación, las pruebas y la configuración de la infraestructura.
Con herramientas como AS3, plantillas de nube y la extensión Declarative Onboarding, puede almacenar toda la información de configuración necesaria para crear y configurar servicios de aplicaciones como parte de un canal de implementación.
En arquitecturas que utilizan plataformas de hardware o software de BIG-IP de larga duración multitenant, sólo necesitará la configuración de AS3 gestionada como parte del repositorio de código de una aplicación. Por el contrario, en los escenarios en los que desee iniciar instancias dedicadas bajo demanda como parte del proceso de implementación, la gestión de plantillas y declaraciones Declarative Onboarding deben formar parte de su repositorio de aplicaciones.
Aunque no podemos cubrir todas las herramientas de automatización u orquestación imaginables, a continuación encontrará una lista de las herramientas, casos de uso y funciones más comunes utilizadas por los clientes de F5.
Integraciones de idiomas
Idioma |
Estado |
Ejemplos y fuente |
Python | Contribución de F5 | https://github.com/F5Networks/f5-common-python |
Ir | Contribución del usuario |
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 |
Contribución del 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 |
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 arranque y scripts de nube
Cloud-init
Cloud libs
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 |
Pivotal Cloud Foundry |
Compatible con F5 |
https://github.com/F5Networks/cf-bigip-ctlr |
Marathon |
Compatible con F5 |
https://github.com/F5Networks/marathon-bigip-ctlr |
Red Hat Openshift |
Compatible con F5 |
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) |
Terceros |
https://bluemedora.com/products/f5/big-ip-for-vrealize-operations/ |
Las herramientas e integraciones anteriores representan formas automatizadas de implementar y configurar la plataforma BIG-IP para proporcionar disponibilidad de aplicaciones, seguridad y servicios de escalado. Estos servicios, por esenciales que sean, constituyen sólo una parte del despliegue de una aplicación de pila completa. Crear una pila completa de aplicaciones con los servidores, los datos, el código de aplicación compilado y la infraestructura de forma coordinada y probada requiere algo más que una simple herramienta de automatización.
Necesitará una herramienta de orquestación de nivel superior, con flujos de trabajo asociados e integraciones con varios sistemas de automatización. Estas herramientas se utilizan con mayor frecuencia en prácticas de trabajo de Integración Continua/Entrega Continua (CI/CD), para las cuales se requiere automatización en todas las implementaciones prácticas. Si bien existen varias herramientas de orquestación, Jenkins es quizás la más común y hay flujos de trabajo de ejemplo disponibles que muestran cómo usar Jenkins, F5 y Ansible para incorporar capacidades de infraestructura como código de F5 en un flujo de trabajo de CI/CD. Sin embargo, en general, la herramienta de orquestación funcionará a través de una de las herramientas de automatización de configuración para realizar cambios e implementar servicios.
Las plataformas BIG-IP requieren licencias para funcionar, por lo que es útil incluir las licencias en el camino crítico de la automatización. En entornos altamente dinámicos en los que los dispositivos virtuales BIG-IP pueden necesitar ser rápidamente ampliados o reducidos, o creados con fines de prueba y desarrollo, los modelos de licencia deben ser considerados cuidadosamente.
En la nube pública, una vía es utilizar las versiones de facturación de servicios públicos de BIG-IP (disponible a través de los mercados de la nube). Las instancias de facturación de servicios públicos se autolicenciarán, y los costes se cobrarán a través del proveedor de nube en base a un compromiso de pago por uso o de tiempo.
Otra opción es utilizar grupos de licencias reutilizables compradas a través de suscripción (o de forma perpetua) junto con F5 BIG-IQ License Manager , lo que le permitirá asignar y revocar licencias de un grupo.
Puede automatizar los pasos de licencia a través de agentes de inicio y llamadas de API, que requerirán acceso saliente de Internet al servidor de licencias de F5 (incluso en el caso de licencias de servicios públicos en plataformas de nube).
Dependiendo de su organización, elegir las herramientas de automatización y orquestación adecuadas puede ser muy fácil o una tarea difícil. Es fácil si ya ha adoptado una herramienta o metodología para otros componentes y sólo necesita integrar BIG-IP en el sistema. Incluso sin integración en una herramienta en particular, la API iControl REST combinada con las capacidades de iControl LX y el Cloud Init hacen que la integración de BIG-IP en una herramienta de automatización existente sea relativamente sencilla (especialmente si se combina con plantillas iApp, que se pueden utilizar para crear incluso una configuración compleja con una sola llamada de API).
Sin embargo, si está empezando de cero, las cosas pueden ser más complejas. Al igual que la selección de cualquier otra solución, la comprensión de sus necesidades debe ser lo primero. Si bien este documento no puede elaborar su lista de requisitos, a continuación le presentamos un conjunto de preguntas y recomendaciones que le ayudarán a realizar su evaluación.
Modelo de automatización: Será mucho más sencillo para los consumidores de su orquestación interactuar con un modelo declarativo. Los consumidores sólo necesitan saber lo que quieren, en lugar de todos los pasos procesales para llegar a ese objetivo. La familia de cadenas de herramientas de automatización F5 representará el modelo de implementación para sitios nuevos en el futuro.
Plataformas y entornos potenciales: Es inevitable que los contenedores y una variedad de plataformas en la nube sean una parte clave de la infraestructura de aplicaciones : planifique en consecuencia.
Habilidades: ¿Ya tienes habilidades en algunas de las tecnologías subyacentes? Tenga en cuenta que estas habilidades pueden existir fuera de su departamento, pero dentro de su empresa en su conjunto. Si es así, podría tener sentido elegir una herramienta que utilice un lenguaje que su organización ya haya adoptado.
Capacidad de soporte: Construya únicamente sistemas que pueda soportar. Puede parecer obvio, pero una clave del éxito es elegir el nivel de complejidad que puede ofrecer dentro de su organización, de modo de maximizar los beneficios de la automatización sin causar una sobrecarga operativa excesiva.
El aumento de la automatización de los sistemas de TI es inevitable. Adoptar un enfoque estratégico para la entrega de aplicaciones clave y los servicios de seguridad garantizará que las aplicaciones que su organización implementa se mantengan seguras y disponibles. La automatización también puede ayudar a reducir sus gastos operativos, especialmente cuando trabaja en múltiples plataformas y nubes públicas.
Elegir el sistema de automatización adecuado puede ser todo un reto, y lo ideal es que se haga como un esfuerzo colaborativo y holístico con vistas a los conjuntos de habilidades disponibles para usted, así como su capacidad para dar soporte al sistema que construye. Cualquiera que sea la solución que elija, puede estar seguro de que la plataforma BIG-IP y la experiencia en F5 estarán disponibles para ayudarle a ofrecer los servicios de nivel empresarial en los que confían sus aplicaciones, sin importar dónde se implementen.
Una nota sobre el soporte de F5. F5 proporciona soporte para varias, pero no todas, las plantillas y herramientas. Cuando el software está disponible en Github, el código con soporte se encuentra sólo en las carpetas que cuentan con soporte de los repositorios de F5. El resto de software tendrá las políticas de soporte definidas en los archivos readme correspondientes.