这是一个用于配置 Pulse Secure vTM 的傀儡模块 - 以前:
Zeus Load Balancer
Zeus eXtensible Traffic Manager (ZXTM)
Zeus Traffic Manager
Riverbed Stingray
Riverbed SteelApp
Brocade vTM
Puppet 改变了 Puppet 版本 4 中单引号字符串处理转义的方式。
该模块的 1.x 版本包括支持 puppet 3.x 的清单。
如果您使用的是 puppet 4.x 或更高版本,则应使用版本 2.x。
使用 genManifests 和 genNodeConfig
如果您生成自己的清单,则lib/brocade/puppetmanifest
中有一个标志 @PUP4X 控制清单格式。该标志在 2.x 模块中为 true,在 1.x 模块中为 false。这就是在 3.x 和 4.x 清单生成之间切换所需的全部更改。
如果您想管理运行 9.9 及更高版本的 vTM,则可以使用 1.33.x
但是,如果您想访问当前 vTM 的所有功能,请使用可用的最新 API 版本
vTM版本 | 休息API | 木偶 3.x 版本 | 木偶 4+ 版本 |
---|---|---|---|
10.4(长期支持) | 3.8 | 1.38.x | - |
17.2(长期支持) | 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 |
请参阅下面有关模块版本控制的注释...
该模块不涉及 vTM 的部署。您可以通过多种方式自动部署 vTM,具体取决于 vTM 的运行位置...包括:
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
一旦你的 vTM 站起来了。该模块可以帮助您管理该 vTM 实例的配置。
您可以尝试以下位置之一:
脉冲安全 - vADC 信息
脉冲安全 - 立即尝试
脉冲安全 - vADC 文档
Pulse Secure - vTM Docker 镜像
该模块的版本控制并不完全遵循语义版本控制。
我想指出版本号中提供的 REST API 版本,而不是使用
主要的 。次要的 。修补
我们将其余 API 版本包含在次要编号中。
模块版本。 API-主要 + API-次要 。修补
例如。
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'
声明pulsevtm类时,必须提供rest_user
和rest_pass
参数。所有其他参数都是可选的。
Defaults:
rest_user = undef
rest_pass = undef
rest_ip = 127.0.0.1
rest_port = 9070
purge = false
purge_state_dir = undef
默认情况下,puppet 只关心您显式声明的配置。如果 vTM 上存在配置但未包含在节点清单中,则该配置将被忽略。
如果您希望 puppet 删除非托管配置,那么您可以设置$purge => true
(并为模块提供存储状态$purge_state_dir
的位置)。然后,Puppet 会将已知资源的名称存储在状态目录中,并从 vTM 中删除所有未知资源。
警告:清除是危险的!警告:如果您确实使用$purge
,则必须包含默认配置对象。 (即不要使用genNodeConfig -n
)
简单的网络服务示例。使用具有两个虚拟服务器的单个 VIP:HTTP 和 HTTPS。 HTTPS 服务执行 SSL 卸载,并且两者使用相同的服务器池。
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',
}
bin 目录包含用于生成该模块的清单文件的工具。
cleanup
- 删除当前清单和支持文件
updateDocs
- 生成在清单中使用的文档
genManifests
- 自己生成清单。
genNodeConfig
- 直接从 vTM 生成节点清单
您可以使用这些工具升级或降级到任何版本的 API。例如,要升级到 REST API 版本 3.5,您可以运行
./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
我建议您针对新构建/干净的 vTM 主机运行 genManifests,除非您明确希望将某些配置包含为默认清单。
这个工具对于大多数人来说是最有用的。它允许您通过导入预配置 vTM 的配置来构建清单。
默认情况下,它将生成配置中所有对象的配置,并包含这些对象的所有参数。您可以使用-s
告诉工具生成稀疏配置文件,或者使用-n
忽略内置的未修改对象。
用法:
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
要生成尽可能最小的清单,没有默认值/内置对象,您可以使用:
./bin/genNodeConfig -h vtm1 -v 3.3 -U admin -P admin -d 1 -o vtm1_manifest.pp -s -n
生成完整配置 - 这是默认和推荐的方法:
./bin/genNodeConfig -h vtm1 -v 3.3 -U admin -P admin -d 1 -o vtm1_manifest.pp
任何非 JSON/二进制配置都将存储在文件中,并以 outfile 为前缀。您可以使用-b dir
指定放置它们的文件夹。
注意:vTM 不通过 REST api 提供 SSL 私钥。所以这个工具不能存储你的私钥。相反,它将存储 REST 提供的 SHA256 指纹。如果需要,您需要手动将私钥添加到清单中
删除清单、模板、文件和可选的 skel/docs 中的文件,然后从 skel 文件夹复制初始配置。
用法:
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
清理所有文件,包括 skel/docs 中的文档
./bin/cleanup -d
初始配置仅包含init.pp,运行cleanup后需要执行genManifests
您将需要有可用的 REST 架构的副本才能使用它。这些架构可以在任何 10.0 及更高版本的 vTM 的 $ZEUSHOME/zxtm/etc 中找到。将架构提取到文件夹中,然后将工具指向它们。
用法:
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
如果您想从 REST 模式的 ZXTM 10.1 副本创建 API 版本 3.3 的文档,那么您可以使用
./bin/updateDocs -d zxtm-10.1/3.3
updateDocs 将每个 REST 模式的 markdown 文件放置在 skel/docs 文件夹中。 genManifests 工具在构建清单时会在此文件夹中查找,因此您应该确保在两个文件夹中使用相同的 API 版本。
我只自己编写了 init.pp 和 purge.pp 清单,其余部分由 ruby 脚本生成。该脚本遍历 vTM REST API,然后为其找到的每种类型和对象编写清单。
清单的 API 版本由版本字符串中的中间数字(次要数字)指示。任何“x.33.z”版本都表示 REST API 3.3,并且与 vTM 版本 9.9 (LTS) 及更高版本兼容。
如果您运行的版本早于 9.9,那么您可能应该升级。
用法:
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
包含生成清单的 ruby 工具,可以在 bin/genManifests 中找到。
如果你想使用puppet来管理比9.9更旧的版本(即旧版本的API),那么genManifests可以提供帮助。
自 9.9 以来发布的所有 vTM 版本仍然支持 API 版本 3.3,但如果您希望使用更新的 API 调用或功能,那么您可以使用此工具重新生成清单。
./bin/genManifests -h <vTM Host> -v <API Version> -U <User> -P <Pass> -d <debug level>
该工具通过遍历 API 来生成清单。它找到的任何类型(例如虚拟服务器、池、监视器)都会创建已定义的类型,以便您可以部署这些类型的实例。它找到的任何配置都将用于生成类。例如,默认监视器被创建为类,因此您可以简单地include pulsevtm::moinitors_simple_http
。
这有一个很好的副作用,它还可以为您想要包含的任何默认配置生成类。例如,您可以通过在运行 genManifests 之前上传 FLA 密钥来为 FLA 密钥创建自定义类。然后include pulsevtm::licenses_myfla