這是一個用於配置 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