Dies ist ein Puppet-Modul zum Konfigurieren des Pulse Secure vTM – früher:
Zeus Load Balancer
Zeus eXtensible Traffic Manager (ZXTM)
Zeus Traffic Manager
Riverbed Stingray
Riverbed SteelApp
Brocade vTM
Puppet hat ab Puppet-Version 4 die Art und Weise geändert, wie Escapezeichen in Zeichenfolgen in einfachen Anführungszeichen gehandhabt werden.
Version 1.x dieses Moduls enthält Manifeste, die Puppet 3.x unterstützen.
Version 2.x sollte verwendet werden, wenn Sie Puppet 4.x oder höher verwenden.
Verwendung von genManifests und genNodeConfig
Wenn Sie Ihre eigenen Manifeste generieren, gibt es in lib/brocade/puppetmanifest
ein Flag @PUP4X, das das Manifestformat steuert. Das Flag ist in 2.x-Modulen wahr und in 1.x-Modulen falsch. Das ist alles, was Sie ändern müssen, um zwischen der 3.x- und 4.x-Manifestgenerierung zu wechseln.
Wenn Sie vTMs verwalten möchten, auf denen Versionen ab 9.9 ausgeführt werden, können Sie 1.33.x verwenden
Wenn Sie jedoch Zugriff auf alle Funktionen Ihres aktuellen vTM wünschen, verwenden Sie die neueste verfügbare API-Version
vTM-Version | REST-API | Puppet 3.x-Version | Puppet 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 |
Siehe Hinweise zur Modulversionierung unten....
Dieses Modul ist nicht an der Bereitstellung des vTM beteiligt. Es gibt viele Möglichkeiten für Sie, die Bereitstellung des vTM zu automatisieren, je nachdem, wo es ausgeführt wird ... Dazu gehören:
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
Sobald Sie Ihr vTM aufgestellt haben. Dieses Modul kann Ihnen bei der Verwaltung der Konfiguration dieser vTM-Instanz helfen.
Sie könnten einen dieser Orte ausprobieren:
Pulse Secure – vADC-Informationen
Pulse Secure – Jetzt testen
Pulse Secure – vADC-Dokumentation
Pulse Secure – vTM Docker-Image
Die Versionierung dieses Moduls folgt nicht genau der semantischen Versionierung.
Ich möchte die bereitgestellte REST-API-Version in der Versionsnummer angeben und nicht verwenden
Wesentlich . Unerheblich . Patch
Wir schließen die restliche API-Version in die Minor-Nummer ein.
ModuleVersion . API-Major + API-Minor . Patch
Z.B.
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'
Wenn Sie Ihre Pulsevtm-Klasse deklarieren, müssen Sie die Parameter rest_user
und rest_pass
angeben. Alle anderen Parameter sind optional.
Defaults:
rest_user = undef
rest_pass = undef
rest_ip = 127.0.0.1
rest_port = 9070
purge = false
purge_state_dir = undef
Standardmäßig kümmert sich Puppet nur um die Konfiguration, die Sie explizit deklarieren. Wenn auf dem vTM eine Konfiguration vorhanden ist, die nicht in Ihrem Knotenmanifest enthalten ist, wird sie ignoriert.
Wenn Sie möchten, dass Puppet die nicht verwaltete Konfiguration entfernt, können Sie $purge => true
festlegen (und dem Modul einen Ort zum Speichern des Status $purge_state_dir
bereitstellen). Puppet speichert dann die Namen bekannter Ressourcen im Statusverzeichnis und entfernt alle unbekannten Ressourcen aus dem vTM.
Warnung: Säuberung ist gefährlich! Warnung: Wenn Sie $purge
verwenden, müssen Sie die Standardkonfigurationsobjekte einschließen. (dh nicht genNodeConfig -n
verwenden)
Einfaches Webservice-Beispiel. Verwendet einen einzelnen VIP mit zwei virtuellen Servern: HTTP und HTTPS. Der HTTPS-Dienst führt SSL-Offload durch und beide verwenden denselben Serverpool.
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',
}
Das bin-Verzeichnis enthält die Tools, die zum Generieren der Manifestdateien für dieses Modul verwendet werden.
cleanup
– entfernt die aktuellen Manifeste und unterstützenden Dateien
updateDocs
– generiert Dokumentation zur Verwendung in den Manifesten
genManifests
– generiert die Manifeste selbst.
genNodeConfig
– generiert ein Knotenmanifest direkt aus einem vTM
Mit diesen Tools können Sie ein Upgrade oder Downgrade auf jede Version der API durchführen. Um beispielsweise ein Upgrade auf die REST-API-Version 3.5 durchzuführen, können Sie Folgendes ausführen
./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
Ich empfehle, dass Sie genManifests auf einem frisch erstellten/bereinigten vTM-Host ausführen, es sei denn, Sie möchten ausdrücklich einige Ihrer Konfigurationen als Standardmanifeste einbeziehen.
Dieses Tool ist für die meisten Menschen das nützlichste. Sie können ein Manifest erstellen, indem Sie die Konfiguration eines vorkonfigurierten vTM importieren.
Standardmäßig wird eine Konfiguration für alle Objekte in Ihrer Konfiguration generiert und alle Parameter für diese Objekte einbezogen. Sie können das Tool mit -s
anweisen, eine Konfigurationsdatei mit geringer Dichte zu generieren oder integrierte, unveränderte Objekte mit -n
zu ignorieren.
Verwendung:
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
Um das kleinstmögliche Manifest ohne Standardwerte/integrierte Objekte zu generieren, würden Sie Folgendes verwenden:
./bin/genNodeConfig -h vtm1 -v 3.3 -U admin -P admin -d 1 -o vtm1_manifest.pp -s -n
So generieren Sie eine vollständige Konfiguration – dies ist die standardmäßige und empfohlene Methode:
./bin/genNodeConfig -h vtm1 -v 3.3 -U admin -P admin -d 1 -o vtm1_manifest.pp
Alle Nicht-JSON-/Binärkonfigurationen werden in Dateien gespeichert, denen die Ausgabedatei vorangestellt ist. Sie können -b dir
verwenden, um einen Ordner anzugeben, in dem sie abgelegt werden sollen.
Hinweis: Der vTM stellt keine privaten SSL-Schlüssel über die REST-API bereit. Daher kann dieses Tool Ihre privaten Schlüssel nicht speichern. Stattdessen wird ein SHA256-Fingerabdruck gespeichert, wie er von REST bereitgestellt wird. Wenn Sie möchten, müssen Sie Ihre privaten Schlüssel manuell zu Ihrem Manifest hinzufügen
Löschen Sie die Dateien in Manifesten, Vorlagen, Dateien und optional skel/docs und kopieren Sie dann die Erstkonfiguration aus dem Ordner skel.
Verwendung:
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
Um alle Dateien einschließlich der Dokumentation in skel/docs zu bereinigen
./bin/cleanup -d
Die Erstkonfiguration enthält nur init.pp. Nach der Bereinigung müssen Sie genManifests ausführen
Um dies nutzen zu können, benötigen Sie eine Kopie der REST-Schemas. Die Schemata finden Sie in $ZEUSHOME/zxtm/etc jeder Version 10.0 und neuer von vTM. Extrahieren Sie die Schemata in einen Ordner und richten Sie dann das Tool darauf.
Verwendung:
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
Wenn Sie eine Dokumentation für API-Version 3.3 aus einer ZXTM 10.1-Kopie der REST-Schemas erstellen möchten, können Sie Folgendes verwenden:
./bin/updateDocs -d zxtm-10.1/3.3
updateDocs platziert eine Markdown-Datei für jedes REST-Schema im Ordner skel/docs. Das genManifests-Tool sucht beim Erstellen von Manifesten in diesem Ordner. Sie sollten daher sicherstellen, dass Sie in beiden die gleiche API-Version verwenden.
Ich habe nur die Manifeste init.pp und purge.pp selbst geschrieben, der Rest wird von einem Ruby-Skript generiert. Das Skript durchläuft die vTM-REST-API und schreibt dann Manifeste für jeden gefundenen Typ und jedes gefundene Objekt.
Die API-Version der Manifeste wird durch die mittlere Zahl (die Nebenzahl) in der Versionszeichenfolge angezeigt. Jede „x.33.z“-Version weist auf REST API 3.3 hin und ist mit vTM Version 9.9 (LTS) und neuer kompatibel.
Wenn Sie eine ältere Version als 9.9 verwenden, sollten Sie wahrscheinlich ein Upgrade durchführen.
Verwendung:
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
Das Ruby-Tool, das die Manifeste generiert, ist enthalten und kann in bin/genManifests gefunden werden.
Wenn Sie Puppet verwenden möchten, um eine ältere Version als 9.9 (dh eine ältere Version der API) zu verwalten, kann genManifests hilfreich sein.
Alle seit 9.9 veröffentlichten vTM-Versionen unterstützen weiterhin die API-Version 3.3. Wenn Sie jedoch neuere API-Aufrufe oder -Funktionen nutzen möchten, können Sie Ihre Manifeste mit diesem Tool neu generieren.
./bin/genManifests -h <vTM Host> -v <API Version> -U <User> -P <Pass> -d <debug level>
Das Tool generiert Manifeste, indem es die API durchläuft. Für alle gefundenen Typen (z. B. virtuelle Server, Pools, Monitore) werden definierte Typen erstellt, sodass Sie Instanzen dieser Typen bereitstellen können. Jede gefundene Konfiguration wird zum Generieren von Klassen verwendet. Beispielsweise werden die Standardmonitore als Klassen erstellt, sodass Sie einfach include pulsevtm::moinitors_simple_http
können.
Dies hat den netten Nebeneffekt, dass es auch Klassen für jede Standardkonfiguration generieren kann, die Sie einbeziehen möchten. Beispielsweise könnten Sie eine benutzerdefinierte Klasse für Ihren FLA-Schlüssel erstellen lassen, indem Sie einfach den FLA-Schlüssel hochladen, bevor Sie genManifests ausführen. include pulsevtm::licenses_myfla