BLOG

F5 Vendredi : Configuration en tant que code avec F5 AS3

Miniature de Lori MacVittie
Lori MacVittie
Publié le 24 août 2018
  • Partager via AddThis
configuration comme en-tête de code

Pendant des années, la programmabilité du plan de contrôle a été dominée par les API. À partir de F5, cela signifie iControl. D'abord en tant qu'interface SOAP, puis plus tard en tant que REST, iControl a donné à NetOps ce que son nom implique : le contrôle de chaque aspect d'une configuration BIG-IP.

Cette méthode ne va pas disparaître. Les API fournissent le contrôle granulaire dont de nombreuses organisations ont besoin pour gérer leurs déploiements de services d’application. Ils sont également essentiels aux efforts d’intégration avec des partenaires et de nouveaux environnements.

Cela ne signifie pas que les API sont le « seul véritable moyen » d’automatiser le fonctionnement d’une BIG-IP. En fait, dans le mouvement visant à adopter une approche plus continue du déploiement des applications et des services applicatifs, une méthode alternative est apparue. Cette méthode est déclarative, dans laquelle un état final de configuration est décrit par l'opérateur et la responsabilité de la mise en œuvre est transférée au système cible.

Il existe de nombreuses raisons d’adopter une méthode de configuration déclarative, notamment son alignement avec les approches DevOps telles que l’infrastructure en tant que code et le déploiement continu. C’est l’objectif derrière F5 AS3 : fournir une interface déclarative qui réduit la dépendance aux API et augmente la capacité à mettre en œuvre un pipeline de déploiement continu entièrement automatisé. Il est plus approprié de l'appeler configuration en tant que code , car nous ne construisons pas réellement l'infrastructure à partir du code comme le terme l'indique. 

Pourquoi déclaratif

AS3 est un format déclaratif qui utilise des paires clé-valeur JSON pour décrire une configuration BIG-IP. De l'IP virtuelle au serveur virtuel, en passant par les membres, les pools et les nœuds requis, AS3 fournit un format simple et lisible dans lequel décrire une configuration. Une fois la configuration obtenue, il ne vous reste plus qu'à la transmettre au BIG-IP, où l' extension AS3 l'acceptera avec plaisir et exécutera les commandes nécessaires pour la transformer en une configuration BIG-IP déployée entièrement fonctionnelle.

Exemple de traduction de la description VIP et pool dans bigip.conf sous forme de déclaration AS3 : 

bigip.conf

Déclaration AS3

ltm virtual /Common/serviceMain {
destination /Common/10.0.1.10:80
protocole IP TCP
masque 255.255.255.255
pool /Common/web_pool
source 0.0.0.0/0
translation-adresse activée
translation-port activé
}

ltm pool /Common/web_pool {
membres {
/Common/192.0.1.10:80 {
adresse 192.0.1.10 
}
/Common/192.0.1.11:80 {
adresse 192.0.1.11
}
}
moniteur /Common/http
}
"serviceMain": {
"classe": "Service_HTTP",
"virtualAddresses": [
"10.0.1.10"
],
"pool": "web_pool"
}

"web_pool": {
"classe": "Pool",
"moniteurs": [
"http"
],
"membres": [
{
"servicePort": 80,
"adresses du serveur": [
"192.0.1.10",
"192.0.1.11"
]
}
]
}

La possibilité de décrire une configuration BIG-IP de cette manière permet aux opérations d'adopter une approche de configuration en tant que code pour déployer des services d'application. En tirant parti d’un référentiel, nous pouvons automatiquement extraire les configurations AS3 pour le déploiement. Outre les utilisations d'automatisation, les référentiels offrent un moyen plus moderne et plus convivial d'intégration pour versionner et gérer les configurations et permettent une restauration rapide en cas de problème avec la configuration.

Par exemple, en utilisant les fonctionnalités Webhook de GitHub, nous pouvons lancer automatiquement un déploiement lors de la validation d'une configuration AS3 nouvelle/mise à jour. Pour ce faire, nous avons besoin d’un serveur Webhook attendant une notification indiquant qu’une nouvelle définition de service (AS3) a été validée. Ces notifications se présentent sous la forme d'un hook , qui est un objet JSON contenant des informations sur l'événement. Une fois reçu, le serveur Webhook analyse le hook et récupère l'AS3 référencé à partir de GitHub et lance le processus de configuration. 

Intégration Webhook

Vous pouvez télécharger la dernière version d'AS3 sur GitHub . La documentation sur le déploiement de l'extension AS3 ainsi que des exemples de configurations AS3 sont disponibles ici .

Le prototype Webhook a été développé par Nathan Pearce , développeur défenseur au bureau du directeur technique. Pour plus de prototypes et d'exemples d'intégration de BIG-IP avec les pipelines CI/CD et de télémétrie, vous pouvez suivre Nathan et F5 Networks sur GitHub.