Это марионеточный модуль для настройки 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 следует использовать, если вы используете Puppet 4.x или выше.
Использование genManifests и genNodeConfig
Если вы создаете свои собственные манифесты, в lib/brocade/puppetmanifest
есть флаг @PUP4X, который управляет форматом манифеста. Флаг будет иметь значение true в модулях 2.x и false в модулях 1.x. Это все, что вам нужно изменить, чтобы переключиться между генерацией манифеста 3.x и 4.x.
Если вы хотите управлять vTM с версиями от 9.9 и выше, вы можете использовать 1.33.x.
Однако если вы хотите получить доступ ко всем функциям вашего текущего vTM, используйте последнюю доступную версию API.
версия vTM | ОТДЫХ API | Марионетка 3.x Версия | Марионетка 4+ Версия |
---|---|---|---|
10.4 (ЛТС) | 3,8 | 1.38.х | - |
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 в зависимости от того, где он работает... В том числе:
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 — образ Docker vTM
Управление версиями этого модуля не совсем соответствует семантическому управлению версиями.
Я хочу указать версию 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'
При объявлении классаpulsvtm вы должны указать параметры 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 на основе копии схем REST ZXTM 10.1, вы можете использовать
./bin/updateDocs -d zxtm-10.1/3.3
updateDocs помещает файл уценки для каждой схемы REST в папку skel/docs. Инструмент genManifests будет просматривать эту папку при создании манифестов, поэтому вам следует убедиться, что вы используете одну и ту же версию API в обоих случаях.
Я написал только манифесты init.pp и purge.pp, остальные генерируются скриптом Ruby. Сценарий обрабатывает REST API vTM, а затем записывает манифесты для каждого найденного типа и объекта.
Версия 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 может помочь.
Все версии vTM, выпущенные после 9.9, по-прежнему поддерживают 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
.
Это имеет приятный побочный эффект: он также может генерировать классы для любой конфигурации по умолчанию, которую вы хотите включить. Например, вы можете создать собственный класс для вашего ключа FLA, просто загрузив ключ FLA перед запуском genManifests. Затем include pulsevtm::licenses_myfla