นี่คือโมดูลหุ่นกระบอกสำหรับกำหนดค่า Pulse Secure vTM - เดิมคือ:
Zeus Load Balancer
Zeus eXtensible Traffic Manager (ZXTM)
Zeus Traffic Manager
Riverbed Stingray
Riverbed SteelApp
Brocade vTM
Puppet เปลี่ยนวิธีจัดการการ Escape ในสตริงที่มีเครื่องหมายคำพูดเดี่ยวจาก Puppet เวอร์ชัน 4
เวอร์ชัน 1.x ของโมดูลนี้รวมรายการที่รองรับ puppet 3.x
ควรใช้เวอร์ชัน 2.x หากคุณใช้หุ่นกระบอก 4.x หรือสูงกว่า
การใช้ genManifests และ genNodeConfig
หากคุณสร้างรายการของคุณเอง ก็จะมีแฟล็ก @PUP4X ใน lib/brocade/puppetmanifest
ซึ่งควบคุมรูปแบบรายการ ค่าสถานะจะเป็นจริงในโมดูล 2.x และเป็นเท็จในโมดูล 1.x นั่นคือทั้งหมดที่คุณต้องเปลี่ยนเพื่อสลับระหว่างการสร้างรายการ 3.x และ 4.x
หากคุณต้องการจัดการ vTM ที่ใช้เวอร์ชันตั้งแต่ 9.9 ขึ้นไป คุณสามารถใช้ 1.33.x
อย่างไรก็ตาม หากคุณต้องการเข้าถึงคุณสมบัติทั้งหมดของ vTM ปัจจุบันของคุณ ให้ใช้ API เวอร์ชันล่าสุดที่มีอยู่
เวอร์ชันวีทีเอ็ม | ส่วนที่เหลือ API | หุ่นเชิด เวอร์ชั่น 3.x | หุ่นเชิด เวอร์ชั่น 4+ |
---|---|---|---|
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 |
ดูหมายเหตุเกี่ยวกับการกำหนดเวอร์ชันของโมดูลด้านล่าง....
โมดูลนี้ไม่เกี่ยวข้องกับการปรับใช้ 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 นั้นได้
คุณสามารถลองใช้สถานที่แห่งใดแห่งหนึ่งต่อไปนี้:
Pulse Secure - ข้อมูล vaDC
Pulse Secure - ลองทันที
Pulse Secure - เอกสารประกอบ vADC
Pulse Secure - อิมเมจ vTM Docker
การกำหนดเวอร์ชันของโมดูลนี้ไม่เป็นไปตามการกำหนดเวอร์ชันเชิงความหมายทุกประการ
ฉันต้องการระบุเวอร์ชัน REST API ที่ให้ไว้ในหมายเลขเวอร์ชัน แทนที่จะใช้
วิชาเอก . ส่วนน้อย . แพทช์
เรารวมเวอร์ชัน API ที่เหลือไว้ในหมายเลขรอง
โมดูลเวอร์ชัน API-Major + API-Minor แพทช์
เช่น
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
ตามค่าเริ่มต้น หุ่นกระบอกจะสนใจเฉพาะการกำหนดค่าที่คุณประกาศอย่างชัดเจนเท่านั้น หากมีการกำหนดค่าบน vTM ซึ่งไม่รวมอยู่ในรายการโหนดของคุณ การกำหนดค่านั้นจะถูกละเว้น
หากคุณต้องการให้หุ่นเชิดลบการกำหนดค่าที่ไม่มีการจัดการ คุณอาจตั้งค่า $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
ฉันขอแนะนำให้คุณเรียกใช้ genManifests กับโฮสต์ vTM ที่สร้างขึ้นใหม่/ล้างข้อมูล เว้นแต่ว่าคุณต้องการรวมการกำหนดค่าบางส่วนของคุณเป็นรายการเริ่มต้นอย่างชัดเจน
เครื่องมือนี้เป็นเครื่องมือที่มีประโยชน์ที่สุดสำหรับคนส่วนใหญ่ ช่วยให้คุณสร้างรายการได้โดยการนำเข้าการกำหนดค่าของ 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 ไม่มีคีย์ SSL ส่วนตัวผ่าน REST api ดังนั้นเครื่องมือนี้จึงไม่สามารถจัดเก็บคีย์ส่วนตัวของคุณได้ แต่จะเก็บลายนิ้วมือ SHA256 ตามที่ REST ให้ไว้แทน คุณจะต้องเพิ่มคีย์ส่วนตัวลงในรายการของคุณด้วยตนเองหากต้องการ
ลบไฟล์ในรายการ เทมเพลต ไฟล์ และอาจรวมถึง 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 คุณจะต้องดำเนินการ genManifests หลังจากเรียกใช้การล้างข้อมูล
คุณจะต้องมีสำเนาของสคีมา REST ที่พร้อมใช้งาน สามารถดูสคีมาได้ใน $ZEUSHOME/zxtm/etc ของ vTM 10.0 และเวอร์ชันที่ใหม่กว่า แยกสคีมาลงในโฟลเดอร์แล้วชี้เครื่องมือไปที่สคีมานั้น
การใช้งาน:
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
หากคุณต้องการสร้างเอกสารคู่มือสำหรับ API เวอร์ชัน 3.3 จากสำเนา ZXTM 10.1 ของสกีมา REST คุณอาจใช้
./bin/updateDocs -d zxtm-10.1/3.3
updateDocs จะวางไฟล์มาร์กดาวน์สำหรับ REST schema แต่ละรายการในโฟลเดอร์ 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
หากคุณต้องการใช้หุ่นเชิดเพื่อจัดการเวอร์ชันเก่ากว่า 9.9 (เช่น API เวอร์ชันเก่า) genManifests สามารถช่วยได้
vTM ทุกเวอร์ชันที่เปิดตัวตั้งแต่ 9.9 ยังคงรองรับ API เวอร์ชัน 3.3 แต่หากคุณต้องการใช้การเรียก API หรือคุณสมบัติที่ใหม่กว่า คุณสามารถสร้างรายการของคุณใหม่โดยใช้เครื่องมือนี้
./bin/genManifests -h <vTM Host> -v <API Version> -U <User> -P <Pass> -d <debug level>
เครื่องมือนี้สร้างรายการโดยการเดิน API ประเภทใดๆ ที่พบ (เช่น เซิร์ฟเวอร์เสมือน พูล จอภาพ) จะถูกสร้างประเภทที่กำหนดไว้ เพื่อให้คุณสามารถปรับใช้อินสแตนซ์ประเภทเหล่านั้นได้ การกำหนดค่าใดๆ ที่พบจะถูกใช้เพื่อสร้างคลาส ตัวอย่างเช่น Default Monitors ถูกสร้างขึ้นเป็นคลาส ดังนั้นคุณจึงสามารถ include pulsevtm::moinitors_simple_http
นี่เป็นผลด้านดีที่สามารถสร้างคลาสสำหรับการกำหนดค่าเริ่มต้นที่คุณต้องการรวมไว้ด้วย ตัวอย่างเช่น คุณอาจมีคลาสที่กำหนดเองสำหรับคีย์ FLA ของคุณที่สร้างขึ้นโดยการอัปโหลดคีย์ FLA ก่อนที่จะเรียกใช้ genManifests จากนั้น include pulsevtm::licenses_myfla