Durante años, la programabilidad del plano de control ha estado dominada por las API. A partir de F5, se refiere a iControl. Primero como interfaz SOAP y luego como REST, iControl le ha proporcionado a NetOps lo que su nombre indica: control sobre cada aspecto de una configuración de BIG-IP.
Ese método no desaparecerá. Las API proporcionan el control granular que muchas organizaciones necesitan para administrar sus implementaciones de servicios de aplicação . También son claves en los esfuerzos de integración con socios y nuevos entornos.
Eso no significa que las API sean la "única forma verdadera" de automatizar el funcionamiento de una BIG-IP. De hecho, en el movimiento para adoptar un enfoque más continuo para la implementación de aplicações y servicios de aplicação , ha surgido un método alternativo. Ese método es declarativo, en el que el operador describe un estado final de configuración y la responsabilidad de la implementación se transfiere al sistema de destino.
Hay muchas razones para adoptar un método declarativo de configuración, y una de las menos importantes es su alineación con los enfoques de DevOps, como la infraestructura como código y la implementación continua. Este es el objetivo detrás de F5 AS3: proporcionar una interfaz declarativa que disminuya la dependencia de las API y aumente la capacidad de implementar un proceso de implementación continuo y totalmente automatizado. Es más apropiado llamarlo configuración como código , ya que en realidad no estamos construyendo la infraestructura a partir del código, como lo implica el término.
AS3 es un formato declarativo que utiliza pares clave-valor JSON para describir una configuración de BIG-IP. Desde la IP virtual hasta el servidor virtual, pasando por los miembros, grupos y nodos necesarios, AS3 proporciona un formato simple y legible para describir una configuración. Una vez que tenga la configuración, todo lo que se necesita es llevarla a BIG-IP, donde la extensión AS3 la aceptará felizmente y ejecutará los comandos necesarios para convertirla en una configuración de BIG-IP completamente funcional e implementada.
Ejemplo de traducción de la descripción de VIP y pool en bigip.conf como una declaración AS3 :
bigip.conf |
Declaración AS3 |
ltm virtual /Common/serviceMain { destino /Common/10.0.1.10:80 protocolo IP TCP máscara 255.255.255.255 pool /Common/web_pool origen 0.0.0.0/0 translation-address habilitado translation-port habilitado } ltm pool /Common/web_pool { miembros { /Common/192.0.1.10:80 { dirección 192.0.1.10 } /Common/192.0.1.11:80 { dirección 192.0.1.11 } } monitor /Common/http } |
"serviceMain": { "clase": "Servicio_HTTP", "DireccionesVirtuales": [ "10.0.1.10" ], "pool": "web_pool" } "web_pool": { "clase": "Grupo", "monitores": [ "http" ], "miembros": [ { "puertoDeServicio": 80, "direccionesdelservidor": [ "192.0.1.10", "192.0.1.11" ] } ] } |
La capacidad de describir una configuración de BIG-IP de esta manera permite a las operaciones adoptar un enfoque de configuración como código para implementar servicios de aplicação . Al aprovechar un repositorio, podemos extraer automáticamente configuraciones AS3 para su implementación. Además de los usos de automatización, los repositorios proporcionan una forma más moderna y fácil de integrar para versionar y administrar configuraciones y permiten una rápida reversión en caso de un problema con la configuración.
Por ejemplo, al utilizar las capacidades de Webhook de GitHub, podemos iniciar automáticamente una implementación al confirmar una configuración AS3 nueva o actualizada. Para hacer esto, necesitamos un servidor Webhook que espere una notificación de que se ha confirmado una nueva definición de servicio (AS3). Estas notificaciones vienen en forma de un gancho , que es un objeto JSON que contiene información sobre el evento. Una vez recibido, el servidor Webhook analiza el gancho y recupera el AS3 referenciado de GitHub e inicia el proceso de configuración.
Puedes descargar la última versión de AS3 en GitHub . La documentación sobre la implementación de la extensión AS3 así como ejemplos de configuraciones AS3 están disponibles aquí .
El prototipo de Webhook fue desarrollado por Nathan Pearce , defensor de desarrolladores en la Oficina del CTO. Para obtener más prototipos y ejemplos de integración de BIG-IP con CI/CD y pipelines de telemetría, puede seguir a Nathan y F5 Networks en GitHub.