StyleBook pour créer une configuration d’équilibrage de charge de base
Dans l’exemple précédent, vous avez créé un StyleBook de base pour créer un serveur virtuel d’équilibrage de charge. Vous pouvez enregistrer ce StyleBook sous un nom différent, puis le mettre à jour pour inclure des paramètres et des composants supplémentaires pour une configuration d’équilibrage de charge de base. Enregistrez ce fichier StyleBook en tant quebasic-lb-config.yaml.
Dans cette section, vous allez concevoir un nouveau StyleBook qui crée une configuration d’équilibrage de charge comprenant un serveur virtuel d’équilibrage de charge, un groupe de services et une liste de services. Il lie également les services au groupe de services et lie le groupe de services au serveur virtuel.
En-tête
Pour construire ce StyleBook, vous devez commencer par mettre à jour la section d’en-tête. Cette section est similaire à celle que vous avez créée pour l’équilibrage de charge du serveur virtuel StyleBook. Dans la section d’en-tête, changez la valeur dunomen basic-lb-config. En outre, mettez à jour ladescriptionetle nom d’affichagepour décrire ce StyleBook de manière appropriée. Vous n’avez pas à modifier les valeurs de l’espace de nomset dela version. Comme vous avez modifié le nom, la combinaison du nom, de l’espace de noms et de la version crée un identifiant unique pour ce StyleBook dans le système.
name:basic-lb-confignamespace:com.example.stylebooksversion:"0.1"display-name:Load Balancing Configurationdescription:This StyleBook defines a simple load balancing configuration.schema-version:"1.0"
Importer StyleBooks
La section import-stylebooks reste la même. Il fait référence à l’espace de noms netscaler.nitro.config pour utiliser les objets de configuration NITRO.
import-stylebooks:-namespace:netscaler.nitro.configprefix:nsversion:"10.5"
Paramètres
Vous devez mettre à jour la section des paramètres pour ajouter deux paramètres supplémentaires pour définir la liste des services ou serveurs et le port sur lequel les services écoutent. Les trois premiers paramètresname
ip
, etlb-alg
restent les mêmes.
parameters:-name:nametype:stringlabel:Application Namedescription:Give a name to the application configuration.required:true-name:iptype:ipaddresslabel:Application Virtual IP (VIP)description:The Application VIP that clients accessrequired:true-name:lb-algtype:stringlabel:LoadBalancing Algorithmdescription:Choose the loadbalancing algorithm (method) used for loadbalancing client requests between the application servers.allowed-values:-ROUNDROBIN-LEASTCONNECTIONdefault:ROUNDROBIN-name:svc-serverstype:ipaddress[]label:Application Server IPsdescription:The IP addresses of all the servers of this applicationrequired:true-name:svc-porttype:tcp-portlabel:Server Portdescription:The TCP port open on the application servers to receive requests.default:80
Dans cet exemple, le paramètresvc-serversest ajouté pour accepter une liste d’adresses IP des services qui représentent les serveurs back-end de l’application. Ceci est un paramètre obligatoire comme indiqué parrequis : true. Le deuxième paramètre,svc-port, indique le numéro de port sur lequel les serveurs écoutent. Le numéro de port par défaut est 80 poursvc-port
le paramètre, s’il n’est pas spécifié par l’utilisateur.
Composants
Vous devez également mettre à jour la section Composants pour définir des composants supplémentaires de sorte qu’ils utilisent les deux nouveaux paramètres et construisent la configuration complète d’équilibrage de charge.
Pour cet exemple, vous devez écrire la section des composants comme suit :
components:-name:lbvserver-comptype:ns::lbvserverproperties:name:$parameters.name + "-lb"servicetype:HTTPipv46:$parameters.ipport:80lbmethod:$parameters.lb-algcomponents:-name:svcg-comptype:ns::servicegroupproperties:name:$parameters.name + "-svcgrp"servicetype:HTTPcomponents:-name:lbvserver-svg-binding-comptype:ns::lbvserver_servicegroup_bindingproperties:name:$parent.parent.properties.nameservicegroupname:$parent.properties.name-name:members-svcg-comptype:ns::servicegroup_servicegroupmember_bindingrepeat:$parameters.svc-serversrepeat-item:srvproperties:ip:$srvport:str($parameters.svc-port)servicegroupname:$parent.properties.name
Dans cet exemple, le composant d’originelbvserver-comp(de l’exemple précédent) a maintenant un composant enfant appelésvcg-comp. Et, le composantsvcg-compa deux composants enfants à l’intérieur. L’imbrication d’un composant dans un autre composant permet au composant imbriqué de créer des objets de configuration en faisant référence aux attributs du composant parent. Le composant imbriqué peut créer un ou plusieurs objets pour chaque objet créé dans le composant parent.
Le composantsvcg-compest utilisé pour créer un groupe de services sur l’instance Citrix ADC à l’aide des valeurs fournies pour les attributs de la ressourceservicegroup
. Dans cet exemple, vous spécifiez une valeur statique pourservicetype
, tandis que name obtient sa valeur à partir du paramètre d’entrée. Vous faites référence aunomdu paramètre défini dans la section des paramètres en utilisant la notation$parameters.name + « -svcgrp », où “-svcgrp“ est ajouté (concaténé) au nom défini par l’utilisateur.
Le composantsvcg-compa deux composants enfants,lbvserver-svg-binding-competmembers-svcg-comp.
Le premier composant enfant,lbvserver-svg-binding-comp, est utilisé pour lier un objet de configuration entre le groupe de services créé par son composant parent et le serveur virtuel d’équilibrage de charge (lbvserver
) créé par le composant parent du parent. La notation $parent, également appelée référence parente, est utilisée pour faire référence aux entités dans les composants parents. Par exemple,servicegroupname : $parent.properties.namefait référence au groupe de services créé par le composant parentsvcg-comp, etname : $parent.parent.properties.namefait référence au serveur virtuel créé par le composant parentlbvserver - Comp.
Le composantmembers-svcgest utilisé pour lier des objets de configuration entre la liste des services au groupe de services créé par le composant parent. La création de plusieurs objets de configuration de liaison est réalisée en utilisant la construction derépétitionde StyleBook pour parcourir la liste des serveurs spécifiés dans le paramètresvc-servers. Au cours de l’itération, ce composant StyleBook crée un objet de configuration NITRO de typeservicegroup_servicegroupmember_bindingpour chaque service (appelésrv
dans la constructionrépét-item) du groupe de services, et il définit l’attributipdans chaque Objet de configuration NITRO à l’adresse IP du serveur correspondant.
En règle générale, vous pouvez utiliser les constructions derépétitionet d’élémentrépété dans un composant pour que ce composant génère plusieurs objets de configuration du même type. Vous pouvez attribuer un nom de variable à la construction d’élément répété, par exemplesrv
, pour désigner la valeur actuelle dans l’itération. Ce nom de variable est mentionné dans les propriétés du même composant ou dans les composants enfants comme$
, par exemple, $srv.
Dans l’exemple ci-dessus, vous avez utilisé l’imbrication de composants les uns aux autres pour construire facilement cette configuration. Dans ce cas particulier, l’imbrication des composants n’était pas la seule façon de construire la configuration. Vous pouvez obtenir le même résultat sans imbrication, comme indiqué ci-dessous :
components:-name:lbvserver-comptype:ns::lbvserverproperties:name:$parameters.name + "-lb"servicetype:HTTPipv46:$parameters.ipport:80lbmethod:$parameters.lb-alg-name:svcg-comptype:ns::servicegroupproperties:servicegroupname:$parameters.name + "-svcgrp"servicetype:HTTP-name:lbvserver-svg-binding-comptype:ns::lbvserver_servicegroup_bindingproperties:name:$components.lbvserver-comp.properties.nameservicegroupname:$components.svcg-comp.properties.servicegroupname-name:members-svcg-comptype:ns::servicegroup_servicegroupmember_bindingrepeat:$parameters.svc-serversrepeat-item:srvproperties:ip:$srvport:80servicegroupname:$components.svcg-comp.properties.servicegroupname
Ici, tous les composants sont au même niveau (c’est-à-dire qu’ils ne sont pas imbriqués) mais le résultat obtenu (la configuration Citrix ADC générée) est le même que celui des composants imbriqués utilisés précédemment. En outre, l’ordre dans lequel les composants sont déclarés dans le StyleBook n’affecte pas l’ordre de création des objets de configuration. Dans cet exemple, les composantssvcg-competlbvserver-comp, même s’ils sont déclarés en dernier, doivent être construits avant de construire le deuxième composantlbvserver-svg-binding-comp, car il existe des références vers ces composants dans le second composant.
Remarque
Par convention, les noms de StyleBooks, paramètres, substitutions, composants et sorties sont en minuscules. Lorsqu’ils contiennent plusieurs mots, ils sont séparés par un caractère « - ». Par exemple
lb-bindings
,app-name
,rewrite-config
, et ainsi de suite. Une autre convention consiste à suffixe les noms de composants avec-comp
une chaîne.
Sorties
你们可以ajouter盟诺坎普的最后部分veau StyleBook est la section des sorties dans laquelle vous spécifiez ce que ce StyleBook expose à ses utilisateurs (ou dans d’autres StyleBooks) après avoir été utilisé pour créer une configuration. Par exemple, vous pouvez spécifier dans la section sorties pour exposer les objetsservicegroup
de configurationlbvserver
et qui seraient créés par ce StyleBook.
outputs:-name:lbvserver-compvalue:$components.lbvserver-compdescription:The component that builds the Nitro lbvserver configuration object-name:servicegroup-compvalue:$components.svcg-compdescription:The component that builds the Nitro servicegroup configuration object
La section des sorties d’un StyleBook est facultative. Un StyleBook n’a pas besoin de renvoyer des sorties. Cependant, en renvoyant certains composants internes en tant que sorties, il permet à tous les StyleBooks qui importent ce StyleBook plus de flexibilité comme vous pouvez le voir lors de la création d’un StyleBook composite.
Remarque
Il est recommandé d’exposer un composant entier du StyleBook dans la section sorties, plutôt qu’une seule propriété d’un composant (par exemple, exposer l’ensemble $components.lbvserver-comp plutôt que seulement le nom $components.lbvserver-comp.properties.name). Ajoutez également une description à la sortie expliquant ce que représente la sortie spécifique.
Créez votre StyleBook
Maintenant que vous avez défini toutes les sections requises de ce StyleBook, réunissez-les pour construire votre deuxième StyleBook. Vous avez déjà enregistré ce fichier StyleBook en tant quebasic-lb-config.yaml. Citrix vous recommande d’utiliser le validateur YAML intégré dans StyleBooks pour valider et importer le contenu YAML.
Le contenu complet du fichierbasic-lb-config.yamlest reproduit ci-dessous :
name:basic-lb-confignamespace:com.example.stylebooksversion:"0.1"display-name:Load Balancing Configurationdescription:This StyleBook defines a simple load balancing configuration.schema-version:"1.0"import-stylebooks:-namespace:netscaler.nitro.configversion:"10.5"prefix:nsparameters:-name:nametype:stringlabel:Application Namedescription:Give a name to the application configuration.required:true-name:iptype:ipaddresslabel:Application Virtual IP (VIP)description:The Application VIP that clients accessrequired:true-name:lb-algtype:stringlabel:LoadBalancing Algorithmdescription:Choose the loadbalancing algorithm (method) used for loadbalancing client requests between the application servers.allowed-values:-ROUNDROBIN-LEASTCONNECTIONdefault:ROUNDROBIN-name:svc-serverstype:ipaddress[]label:Application Server IPsdescription:The IP addresses of all the servers of this applicationrequired:true-name:svc-porttype:tcp-portlabel:Server Portdescription:The TCP port open on the application servers to receive requests.default:80components:-name:lbvserver-comptype:ns::lbvserverproperties:name:$parameters.name + "-lb"servicetype:HTTPipv46:$parameters.ipport:80lbmethod:$parameters.lb-alg-name:svcg-comptype:ns::servicegroupproperties:servicegroupname:$parameters.name + "-svcgrp"servicetype:HTTP-name:lbvserver-svg-binding-comptype:ns::lbvserver_servicegroup_bindingproperties:name:$components.lbvserver-comp.properties.nameservicegroupname:$components.svcg-comp.properties.servicegroupname-name:members-svcg-comptype:ns::servicegroup_servicegroupmember_bindingrepeat:$parameters.svc-serversrepeat-item:srvproperties:ip:$srvport:80servicegroupname:$components.svcg-comp.properties.servicegroupnameoutputs:-name:lbvserver-compvalue:$components.lbvserver-compdescription:The component that builds the Nitro lbvserver configuration object-name:servicegroup-compvalue:$components.svcg-compdescription:The component that builds the Nitro servicegroup configuration object
Pour commencer à utiliser votre StyleBook pour créer des configurations, vous devez l’importer dans Citrix ADM, puis l’utiliser. Pour de plus amples informations, consultez la sectionProcédure d’utilisation de StyleBooks définis par l’utilisateur.
Vous pouvez également importer ce StyleBook dans d’autres StyleBooks et utiliser ses propriétés comme décrit dans la section suivante.