Este es un módulo de marionetas para configurar Pulse Secure vTM (anteriormente:
Zeus Load Balancer
Zeus eXtensible Traffic Manager (ZXTM)
Zeus Traffic Manager
Riverbed Stingray
Riverbed SteelApp
Brocade vTM
Puppet cambió la forma en que se manejaban los escapes en cadenas entre comillas simples desde la versión 4 de Puppet.
La versión 1.x de este módulo incluye manifiestos que admiten Puppet 3.x.
Se debe utilizar la versión 2.x si está utilizando Puppet 4.x o superior.
Usando genManifests y genNodeConfig
Si genera sus propios manifiestos, entonces hay una bandera @PUP4X en lib/brocade/puppetmanifest
que controla el formato del manifiesto. La bandera será verdadera en los módulos 2.x y falsa en los módulos 1.x. Eso es todo lo que necesita cambiar para alternar entre la generación de manifiesto 3.x y 4.x.
Si desea administrar vTM que ejecutan versiones desde 9.9 en adelante, puede usar 1.33.x
Sin embargo, si desea acceder a todas las funciones de su vTM actual, utilice la última versión de API disponible.
Versión vTM | API DESCANSO | Versión títere 3.x | Marioneta 4+ Versión |
---|---|---|---|
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 |
Consulte las notas sobre el control de versiones del módulo a continuación....
Este módulo no tiene que ver con la implementación de vTM. Hay muchas formas de automatizar la implementación de vTM dependiendo de dónde se esté ejecutando... Incluyendo:
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
Una vez que tengas tu vTM en pie. Este módulo puede ayudarlo a administrar la configuración de esa instancia de vTM.
Podrías probar una de estas ubicaciones:
Pulse Secure - Información vADC
Pulse Secure - Pruébelo ahora
Pulse Secure - Documentación vADC
Pulse Secure - Imagen de vTM Docker
El versionado de este módulo no sigue exactamente el versionado semántico.
Quiero indicar la versión de API REST que se proporciona en el número de versión, por lo que en lugar de usar
Importante . Menor . Parche
Incluimos el resto de la versión API en el número menor.
Versión del módulo. API mayor + API menor. Parche
P.ej.
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'
Al declarar su clase pulsevtm, debe proporcionar un parámetro rest_user
y rest_pass
. Todos los demás parámetros son opcionales.
Defaults:
rest_user = undef
rest_pass = undef
rest_ip = 127.0.0.1
rest_port = 9070
purge = false
purge_state_dir = undef
Por defecto, a Puppet solo le importa la configuración que usted declara explícitamente. Si existe una configuración en vTM que no está incluida en el manifiesto de su nodo, se ignorará.
Si desea que Puppet elimine la configuración no administrada, puede configurar $purge => true
(y proporcionar un lugar para que el módulo almacene el estado $purge_state_dir
). Luego, Puppet almacenará los nombres de los recursos conocidos en el directorio estatal y eliminará todos los recursos desconocidos del vTM.
Advertencia: ¡La purga es peligrosa! Advertencia: si utiliza $purge
, debe incluir los objetos de configuración predeterminados. (es decir, no utilice genNodeConfig -n
)
Ejemplo sencillo de servicio web. Utiliza un único VIP con dos servidores virtuales: HTTP y HTTPS. El servicio HTTPS realiza la descarga SSL y ambos utilizan el mismo grupo de servidores.
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',
}
El directorio bin contiene las herramientas que se utilizan para generar los archivos de manifiesto para este módulo.
cleanup
: elimina los manifiestos actuales y los archivos de soporte
updateDocs
: genera documentación para usar en los manifiestos.
genManifests
: genera los propios manifiestos.
genNodeConfig
: genera un manifiesto de nodo directamente desde un vTM
Puede actualizar o degradar a cualquier versión de la API utilizando estas herramientas. Por ejemplo, para actualizar a la versión 3.5 de la API REST, puede ejecutar
./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
Le recomiendo que ejecute genManifests en un host vTM recién creado/limpio, a menos que desee incluir explícitamente parte de su configuración como manifiestos predeterminados.
Esta herramienta es la más útil para la mayoría de las personas. Le permite crear un manifiesto importando la configuración de un vTM preconfigurado.
De forma predeterminada, generará configuración para todos los objetos en su configuración e incluirá todos los parámetros para esos objetos. Puede indicarle a la herramienta que genere un archivo de configuración disperso con -s
o que ignore los objetos integrados no modificados con -n
.
Uso:
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
Para generar el manifiesto más pequeño posible, sin valores predeterminados/objetos integrados, usaría:
./bin/genNodeConfig -h vtm1 -v 3.3 -U admin -P admin -d 1 -o vtm1_manifest.pp -s -n
Para generar una configuración completa, que es el método predeterminado y recomendado:
./bin/genNodeConfig -h vtm1 -v 3.3 -U admin -P admin -d 1 -o vtm1_manifest.pp
Cualquier configuración que no sea JSON/binaria se almacenará en archivos, con el prefijo outfile. Puede usar -b dir
para especificar una carpeta donde colocarlos.
Nota: vTM no proporciona claves SSL privadas a través de la API REST. Entonces esta herramienta no puede almacenar sus claves privadas. En su lugar, almacenará una huella digital SHA256 proporcionada por REST. Deberá agregar manualmente sus claves privadas a su manifiesto si las desea
Elimine los archivos en manifiestos, plantillas, archivos y, opcionalmente, skel/docs, y luego cópielos en la configuración inicial de la carpeta skel.
Uso:
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
Para limpiar todos los archivos, incluida la documentación en skel/docs
./bin/cleanup -d
La configuración inicial solo contiene init.pp, necesitarás ejecutar genManifests después de ejecutar la limpieza
Necesitará tener una copia de los esquemas REST disponibles para utilizar esto. Los esquemas se pueden encontrar en $ZEUSHOME/zxtm/etc de cualquier versión 10.0 y más reciente de vTM. Extraiga los esquemas en una carpeta y luego apunte la herramienta hacia ellos.
Uso:
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 desea crear documentación para la versión 3.3 de API, a partir de una copia ZXTM 10.1 de los esquemas REST, entonces puede usar
./bin/updateDocs -d zxtm-10.1/3.3
updateDocs coloca un archivo de rebajas para cada esquema REST en la carpeta skel/docs. La herramienta genManifests buscará en esta carpeta a medida que cree manifiestos, por lo que debe asegurarse de utilizar la misma versión de API en ambas.
Solo escribí los manifiestos init.pp y purge.pp, el resto se genera mediante un script Ruby. El script recorre la API REST de vTM y luego escribe manifiestos para cada tipo y objeto que encuentra.
La versión API de los manifiestos se indica con el número medio (el número menor) en la cadena de versión. Cualquier versión "x.33.z" indicaría REST API 3.3 y es compatible con vTM versión 9.9 (LTS) y posteriores.
Si está ejecutando una versión anterior a la 9.9, probablemente debería actualizar.
Uso:
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
La herramienta Ruby que genera los manifiestos está incluida y se puede encontrar en bin/genManifests.
Si desea utilizar Puppet para administrar una versión anterior a la 9.9 (es decir, una versión anterior de la API), genManifests puede ayudar.
Todas las versiones de vTM lanzadas desde la 9.9 todavía son compatibles con la versión 3.3 de API, pero si desea utilizar llamadas o funciones de API más nuevas, puede regenerar sus manifiestos utilizando esta herramienta.
./bin/genManifests -h <vTM Host> -v <API Version> -U <User> -P <Pass> -d <debug level>
La herramienta genera manifiestos recorriendo la API. Cualquier tipo que encuentre (por ejemplo, servidores virtuales, grupos, monitores) se crean tipos definidos, de modo que pueda implementar instancias de esos tipos. Cualquier configuración que encuentre se utilizará para generar Clases. Por ejemplo, los monitores predeterminados se crean como clases, por lo que simplemente puede include pulsevtm::moinitors_simple_http
.
Esto tiene el efecto secundario de que también puede generar clases para cualquier configuración predeterminada que desee incluir. Por ejemplo, podría crear una clase personalizada para su clave FLA simplemente cargando la clave FLA antes de ejecutar genManifests. Luego include pulsevtm::licenses_myfla