Il s'agit d'un module marionnette permettant de configurer le Pulse Secure vTM - anciennement :
Zeus Load Balancer
Zeus eXtensible Traffic Manager (ZXTM)
Zeus Traffic Manager
Riverbed Stingray
Riverbed SteelApp
Brocade vTM
Puppet a changé la façon dont les échappements étaient gérés dans les chaînes entre guillemets simples à partir de la version 4 de Puppet.
La version 1.x de ce module inclut des manifestes prenant en charge Puppet 3.x.
La version 2.x doit être utilisée si vous utilisez Puppet 4.x ou supérieur.
Utilisation de genManifests et genNodeConfig
Si vous générez vos propres manifestes, il existe un indicateur @PUP4X dans lib/brocade/puppetmanifest
qui contrôle le format du manifeste. L'indicateur sera vrai dans les modules 2.x et faux dans les modules 1.x. C'est tout ce que vous devez modifier pour basculer entre la génération de manifeste 3.x et 4.x.
Si vous souhaitez gérer les vTM exécutant des versions à partir de 9.9, vous pouvez utiliser 1.33.x
Cependant, si vous souhaitez accéder à toutes les fonctionnalités de votre vTM actuel, utilisez la dernière version de l'API disponible.
Version vTM | API REST | Version Marionnette 3.x | Marionnette 4+ Version |
---|---|---|---|
10.4 (LTS) | 3.8 | 1.38.x | - |
17.2 (LTS) | 4.0 | 1.400.x | 2.400.x |
17.3 | 5.0 | 1.500.x | 2.500.x |
17.4 | 5.1 | 1.501.x | 2.501.x |
18.1 | 5.2 | 1.502.x | 2.502.x |
18.2 | 6.0 | 1.600.x | 2.600.x |
Voir les notes sur la gestion des versions du module ci-dessous....
Ce module ne s'implique pas dans le déploiement du vTM. Il existe de nombreuses façons d'automatiser le déploiement du vTM en fonction de l'endroit où il s'exécute... Y compris :
Cloud APIs (Amazon, RackSpace, Joyent, etc, etc)
Docker modules (if you use docker)
puppetlabs-vsphere (if you run ESXi)
Guest Customisations (if you run ESXi)
cloud-init (Openstack and others)
./zinstall --replay-from= on generic Linux
Une fois que votre vTM est debout. Ce module peut vous aider à gérer la configuration de cette instance vTM.
Vous pouvez essayer l'un de ces emplacements :
Pulse Secure - Informations vADC
Pulse Secure - Essayez maintenant
Pulse Secure - Documentation vADC
Pulse Secure - Image Docker vTM
Le versioning de ce module ne suit pas exactement le versioning sémantique.
Je souhaite indiquer la version de l'API REST fournie dans le numéro de version, et donc plutôt que d'utiliser
Majeur . Mineure . Correctif
Nous incluons le reste de la version de l'API dans le numéro mineur.
Version du module . API-Majeure + API-Mineur . Correctif
Par exemple.
puppet module install pulse-pulsevtm
puppet module install pulse-pulsevtm -v 1.35.0
puppet module install pulse-pulsevtm -v '>=1.35.0 <1.36.0'
Lors de la déclaration de votre classe pulsevtm, vous devez fournir un paramètre rest_user
et rest_pass
. Tous les autres paramètres sont facultatifs.
Defaults:
rest_user = undef
rest_pass = undef
rest_ip = 127.0.0.1
rest_port = 9070
purge = false
purge_state_dir = undef
Par défaut, Puppet ne se soucie que de la configuration que vous déclarez explicitement. Si une configuration existe sur le vTM et n'est pas incluse dans votre manifeste de nœud, elle sera ignorée.
Si vous souhaitez que Puppet supprime la configuration non gérée, vous pouvez définir $purge => true
(et fournir un emplacement pour que le module stocke l'état $purge_state_dir
). Puppet stockera ensuite les noms des ressources connues dans le répertoire d'état et supprimera toutes les ressources inconnues du vTM.
Attention : la purge est dangereuse ! Avertissement : si vous utilisez $purge
, vous devez inclure les objets de configuration par défaut. (c'est-à-dire ne pas utiliser genNodeConfig -n
)
Exemple de service Web simple. Utilise un seul VIP avec deux serveurs virtuels : HTTP et HTTPS. Le service HTTPS effectue le déchargement SSL et les deux utilisent le même pool de serveurs.
class { 'pulsevtm':
rest_user => 'puppet',
rest_pass => 'master',
rest_ip => '10.1.1.22',
}
include pulsevtm::global_settings
pulsevtm::traffic_ip_groups { 'Web%20VIP':
ensure => present,
basic__enabled => true,
basic__ipaddresses => ["10.1.1.10"],
basic__machines => ["vtm1.internal.local"],
}
pulsevtm::virtual_servers { 'WebService':
ensure => present,
basic__enabled => true,
basic__listen_on_any => false,
basic__listen_on_traffic_ips => ["Web VIP"],
basic__pool => "WebPool",
basic__port => 80,
}
pulsevtm::virtual_servers { 'WebService%20SSL':
ensure => present,
basic__enabled => true,
basic__listen_on_any => false,
basic__listen_on_traffic_ips => ["Web VIP"],
basic__pool => "WebPool",
basic__port => 443,
basic__ssl_decrypt => true,
ssl__server_cert_default => 'TEST-CERT',
}
pulsevtm::pools { 'WebPool':
ensure => present,
basic__nodes_table => '[{"node":"10.1.1.1:80","priority":1,"state":"active","weight":1}]',
}
pulsevtm::ssl_server_keys { 'TEST-CERT':
ensure => present,
basic__note => '',
basic__private => '-----BEGIN RSA PRIVATE KEY-----nMIIEpAIBAAKCAQEAsiZD53KCrcN3r4yAW6GwkITYEQyzg1bbDP8fiRvaWJxOgRtEn/8E4KRDdeqOCuV1YNuLaTsfCkF34T4pvI00wZ5lSdXBnVrEie49ip7z0QNQ/W4mvnDzkDQ/Och1lRevflAhJUfgiVizCxDbxJfR6oSip3RAeGarBIhp7TlfLKQj7YdnIynFROcHIMkLZ7aq7tUzVvcGonz5YXrmDDKFoGvbaJnNC0SAiM0aJIomOlexQmL4cgInhQQ1YlrF9hnulSbZN20zNz8fSeJ1UmyUgrYqLgzLXUb54pqK1aGg4rQNIqwoAbyqnibqzc2rO/o6MXgEb9zzFwAyHI38nptE7OdiC+wIDAQABAoIBAEk98iz1p0RJWKuTn2DHUCANimnJoBmW5D9YIDa8RBHPpz1zFGVkM10oK5QPGtbf/6ISoP5ikCBnSiIQrnJgYddgkhwAUIcXPy33ptOOI9jS4aFPJNaOuZRP5q6a+7yQQFZuGzJ4mpfdH78s7yn2kPWltnnG6GcdmbmkurF4beEWiNhgsex2hLhhj20oVUaGF1BGMdrp20vYE496B52n4Wuax9lfFoFuv8FAz96EZQOQS6J1Wf+o0qqZYNDaBRI5wi3EjrNpcEHhELp9eHeGnnFwDgQD15HyK2Qio4ig3T386OTUGT/FCNMxqT3wDn4ov+kTFtDoI+2qvJ/l6vULvn20f50AECgYEA6f7K1jVb7nNLwUjPld0azXbQgE3mdlwJVI8urz80JLQwKckg53tPngol8NaZOxo7gQlML/5ltK/y5cW6B2JhxjFtNoAAzNNBmGTRvLpLK3HHGEfVRVexZn8ZmssEzG49Xk6l1A7O+UWgqFUMlLBcYFKEvvGS8efcXBLwOV7G3EXxsCgYEAwucKnJ4jN8ECtDuMHY0sKbbfLXpqPS7KMfdWio1SaR1ctEos5wrKaX3vG3Zbiz6weYCkontNI9ioQVQ7D0Uc+lhhhlxeHAVnNFJhpZowYdf44mI/LCW2pga3dOZ9vDRqWP29KGnUwzH1RfXPtZBqMC5vPHd42kAGgGXwBvPZChOSaECgYEAiNjyV4StVy8mxsuGW+cLnnc428lKczevVqRZz/xm/rReUc1ulWrvLLFSrx9STjZxRm3hmM/3O00LiUWyHk9zTny3o6U7DKQcD/dQ4tV9eRvIrtg+MsxkuL7rgpPpIoX2bgkhAnwGn9IQu2HCEdNyswnKPj/xILCGlxlNtGqBLPNfLECgYEAlYqHtAW3XRuCrOVsibbN7ZkTpSaZw87fFL2Rn6BfFt+8fWhcQ3l4DLDfgQay/oe/B7q4l2XdmWJ03Y5SmIQ9dRSH7FHU+Chave6jEnFd1fTLtYcESW82UPTeVgdzebAN2PH27MOXSY7ts3/7KM9lnJKTu6r/2kYk/Oi0vLnOGHkj4ECgYBaxw/qFIMWAvi8r84cbUG/PYivHeJNJ53EhXE6UZPxi6QuVhlbitrinHk6SP443RCdjAR9IiZoDQkl+yW0z86ZShJYXF+1JFQU+ftsRzCtfx2XLD5dQO5qnnleXIH8z/4lUuPMyBw5bGj9eRXat7/SI2W6cuksMHLIMBiAognmdvRw==n-----END RSA PRIVATE KEY-----n',
basic__public => '-----BEGIN CERTIFICATE-----nMIIDFjCCAf4CCQD4M1+rCABUDjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQGEwJHnQjESMBAGA1UEBxMJQ2FtYnJpZGdlMRAwDgYDVQQKEwdCcm9jYWRlMRgwFgYDVQQDnEw93d3cuYnJvY2FkZS5jb20wHhcNMTUwODIwMTQ1MzQ3WhcNMTYwODE5MTQ1MzQ3nWjBNMQswCQYDVQQGEwJHQjESMBAGA1UEBxMJQ2FtYnJpZGdlMRAwDgYDVQQKEwdCncm9jYWRlMRgwFgYDVQQDEw93d3cuYnJvY2FkZS5jb20wggEiMA0GCSqGSIb3DQEBnAQUAA4IBDwAwggEKAoIBAQCyJkPncoKtw3evjIBbobCQhNgRDLODVtsM/x+JG9pYnnE6BG0T/wTgpEN16o4K5XVg24tpOx8KQXfhPim8jTTBnmVJ1cGdWsSJ7j2KnvPRAn1D9bia8POQND85yHWVF69+UCElR+CJWLMLENvEl9HqhKKndEB4ZqsEiGntOV8spCnPth2cjIVE5wcgyQtntqru1TNW9waifPlheuYMMoWga9tomc0LRICIzRokiiY6V7FnCYvhyAiFBDViWsX2Ge6VJtk3bTM3Px9J4nVSbJSCtiouDMtdRvnimorVoaDitA0inrCgBvKqJurNzas7+joxeARv3PMXADIcjfyem0Ts52IL7AgMBAAEwDQYJKoZIhvcNnAQELBQADggEBAJcuRIh3ngpFz0nHym5z56tbzHBrjF3frwp75Nknz3kuyCjdG7NrnPF5WvDl7lb1WX9EgAn/vJznYCmMxbjnUhHTMIMWbyIoTKJIIHCsrDyiK21NoI3nYnu/9V1TADGdkqGSag00UqygF4nVkbvKJcjXHq9t0zz56xAvCamBvlNCkJ0/mQN3Qdn5r/HgiRX69MSG1RRAFB+rkZInGekedLumBYCuALFCY5SB1+ns9XtGGJGRMh74oUpngjE62k/mEGPhLaXGJRupY07ezQKJOMBLRN1+HzIETsdH68FDdowFLzcH8fOn9HIgnCuhlcpfk5VfCaeIqdqYEsrxY+KADA8ss06M=n-----END CERTIFICATE-----n',
basic__request => '-----BEGIN NEW CERTIFICATE REQUEST-----nMIICkjCCAXoCAQAwTTELMAkGA1UEBhMCR0IxEjAQBgNVBAcTCUNhbWJyaWRnZTEQnMA4GA1UEChMHQnJvY2FkZTEYMBYGA1UEAxMPd3d3LmJyb2NhZGUuY29tMIIBIjANnBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsiZD53KCrcN3r4yAW6GwkITYEQyzng1bbDP8fiRvaWJxOgRtE/8E4KRDdeqOCuV1YNuLaTsfCkF34T4pvI00wZ5lSdXBnnVrEie49ip7z0QNQ/W4mvDzkDQ/Och1lRevflAhJUfgiVizCxDbxJfR6oSip3RAeGnarBIhp7TlfLKQj7YdnIyFROcHIMkLZ7aq7tUzVvcGonz5YXrmDDKFoGvbaJnNC0SnAiM0aJIomOlexQmL4cgIhQQ1YlrF9hnulSbZN20zNz8fSeJ1UmyUgrYqLgzLXUb5n4pqK1aGg4rQNIqwoAbyqibqzc2rO/o6MXgEb9zzFwAyHI38nptE7OdiC+wIDAQABnoAAwDQYJKoZIhvcNAQELBQADggEBAGnf+2VPIY8zW6IE2htseeLHxH5SlNc6GJsInkGmc9WG72yV97EakpzwsIgsz06QXwCh+HloNUPZQAQ9KcUFhskLXxLE7PYXKnPLrnMMAvA7aqCGPhb3/p738tT+G9IKUQfkbYmvY4ROIk56XzWT0ufVTw11jrIglQXo+gnWdJt2MbNC6f/1+NVL85q9pRBvFSeBk7D43U/B+KkM/7wmB+5fMB6DJfRAHCvjOEInX56MyO4UJXsvs9jriDHLoqpAu3IkV1oxGzdaE/dRveqq21q1hz5S2PaOU5jPzetHnAra3APjd55zS5EGex8t82ZJbI3aru2lPl6ztfErSWQLGNrxbVlE=n-----END NEW CERTIFICATE REQUEST-----n',
}
Le répertoire bin contient les outils utilisés pour générer les fichiers manifestes pour ce module.
cleanup
- supprime les manifestes actuels et les fichiers de support
updateDocs
- génère de la documentation à utiliser dans les manifestes
genManifests
- génère les manifestes eux-mêmes.
genNodeConfig
- génère un manifeste de nœud directement à partir d'un vTM
Vous pouvez mettre à niveau ou rétrograder vers n'importe quelle version de l'API à l'aide de ces outils. Par exemple, pour mettre à niveau vers l'API REST version 3.5, vous pouvez exécuter
./bin/cleanup -d
./bin/updateDocs -d zxtm10.1/3.5
./bin/genManifests -v 3.5 -h <clean vtm host> -U admin -P password -d 1
Je vous recommande d'exécuter genManifests sur un hôte vTM fraîchement construit/propre, sauf si vous souhaitez explicitement inclure une partie de votre configuration en tant que manifestes par défaut.
Cet outil est le plus utile pour la plupart des gens. Il vous permet de créer un manifeste en important la configuration d'un vTM préconfiguré.
Par défaut, il générera une configuration pour tous les objets de votre configuration et inclura tous les paramètres de ces objets. Vous pouvez demander à l'outil de générer un fichier de configuration clairsemé avec -s
ou d'ignorer les objets intégrés non modifiés avec -n
.
Usage:
Usage: genNodeConfig [options]
Specific options:
-h, --host <vTM Host> The hostname or ip address of the vTM to probe
-p, --port <vTM Port> The REST API port of the vTM to probe
-v, --version <REST Version> The REST Version
-U, --user <username> The REST API User
-P, --pass <password> The REST API Password
-o, --outfile <filename> The output file to write
-b, --bindir <filename> The directory in which to store any binary content (eg rules)
-m, --mandir <manifest dir> The location of the manifests
-d, --debug <level> The Debug level, 0 (lowest) to 5 (highest)
-s Generate a sparse configuration (ignore default params)
-n Generate a sparse configuration (ignore built-in objects)
-?, --help Show this message
Mandatory Parameters: --version, --user, --password, --outfile
Pour générer le plus petit manifeste possible, sans valeurs par défaut/objets intégrés, vous utiliseriez :
./bin/genNodeConfig -h vtm1 -v 3.3 -U admin -P admin -d 1 -o vtm1_manifest.pp -s -n
Pour générer une configuration complète - qui est la méthode par défaut et recommandée :
./bin/genNodeConfig -h vtm1 -v 3.3 -U admin -P admin -d 1 -o vtm1_manifest.pp
Toute configuration non JSON/binaire sera stockée dans des fichiers, préfixés par le fichier de sortie. Vous pouvez utiliser -b dir
pour spécifier un dossier dans lequel les placer.
Remarque : Le vTM ne fournit pas de clés SSL privées via l'API REST. Cet outil ne peut donc pas stocker vos clés privées. Au lieu de cela, il stockera une empreinte digitale SHA256 fournie par REST. Vous devrez ajouter manuellement vos clés privées à votre manifeste si vous le souhaitez
Supprimez les fichiers dans les manifestes, les modèles, les fichiers et éventuellement skel/docs, puis copiez la configuration initiale à partir du dossier skel.
Usage:
Usage: cleanup [options]
Specific options:
-y, --jfdi Just do it, don't ask me
-d, --docs Clean the skel/docs tree too
-?, --help Show this message
Pour nettoyer tous les fichiers, y compris la documentation dans skel/docs
./bin/cleanup -d
La configuration initiale ne contient que init.pp, vous devrez exécuter genManifests après avoir exécuté le nettoyage
Vous aurez besoin d’une copie des schémas REST disponibles pour l’utiliser. Les schémas peuvent être trouvés dans $ZEUSHOME/zxtm/etc de toute version 10.0 et ultérieure de vTM. Extrayez les schémas dans un dossier, puis pointez l'outil vers eux.
Usage:
Usage: updateDocs [options]
Specific options:
-y, --jfdi Just do it, don't ask me
-d, --dir REST FOLDER folder containing REST schemas
-o, --outdir Docs Folder output folder for documentation
-?, --help Show this message
Mandatory Parameters: --dir
Si vous souhaitez créer une documentation pour l'API version 3.3, à partir d'une copie ZXTM 10.1 des schémas REST, vous pouvez utiliser
./bin/updateDocs -d zxtm-10.1/3.3
updateDocs place un fichier markdown pour chaque schéma REST dans le dossier skel/docs. L'outil genManifests recherchera dans ce dossier au fur et à mesure qu'il créera les manifestes, vous devez donc vous assurer que vous utilisez la même version de l'API dans les deux.
J'ai seulement écrit les manifestations init.pp et purge.pp moi-même, le reste est généré par un script Ruby. Le script parcourt l'API vTM REST, puis écrit un manifeste pour chaque type et objet qu'il trouve.
La version API des manifestes est indiquée par le numéro du milieu (le numéro mineur) dans la chaîne de version. Toute version « x.33.z » indiquerait REST API 3.3 et est compatible avec vTM version 9.9 (LTS) et plus récente.
Si vous utilisez une version antérieure à 9.9, vous devriez probablement effectuer une mise à niveau.
Usage:
Usage: genManifests [options]
Specific options:
-h, --host <vTM Host> The hostname or ip address of the vTM to probe
-p, --port <vTM Port> The REST API port of the vTM to probe
-v, --version <REST Version> The REST Version
-U, --user <username> The REST API User
-P, --pass <password> The REST API Password
-d, --debug <level> The Debug level, 0 (lowest) to 5 (highest)
-y, --[no-]jfdi Don't print warning, just do it
-?, --help Show this message
Mandatory Parameters: --version, --user, --password
L'outil Ruby qui génère les manifestes est inclus et peut être trouvé dans bin/genManifests.
Si vous souhaitez utiliser Puppet pour gérer une version antérieure à 9.9 (c'est-à-dire une ancienne version de l'API), alors genManifests peut vous aider.
Toutes les versions de vTM publiées depuis la version 9.9 prennent toujours en charge la version 3.3 de l'API, mais si vous souhaitez utiliser des appels ou des fonctionnalités d'API plus récents, vous pouvez régénérer vos manifestes à l'aide de cet outil.
./bin/genManifests -h <vTM Host> -v <API Version> -U <User> -P <Pass> -d <debug level>
L'outil génère des manifestes en parcourant l'API. Tous les types trouvés (par exemple, serveurs virtuels, pools, moniteurs) sont créés avec des types définis, afin que vous puissiez déployer des instances de ces types. Toute configuration trouvée sera utilisée pour générer des classes. Par exemple, les moniteurs par défaut sont créés en tant que classes, vous pouvez donc simplement include pulsevtm::moinitors_simple_http
.
Cela a l’avantage de pouvoir également générer des classes pour toute configuration par défaut que vous souhaitez inclure. Par exemple, vous pouvez créer une classe personnalisée pour votre clé FLA en téléchargeant simplement la clé FLA avant d'exécuter genManifests. include pulsevtm::licenses_myfla