Подготовка параметров для инсталляции
Подготовка параметров для инсталляции состоит из следующих последовательных шагов:
- Подготовка inventory окружения.
- Оптимизация настроек Платформы.
- Распаковка архива дистрибутива.
- Правка конфигурации Ansible.
После настройки всех параметров inventory перейдите к запуску инсталлятора (подробнее — в разделе Запуск инсталлятора).
Для создания первоначального inventory для первичной установки Платформы используется генератор inventory (invgen).
Генератор inventory выполняет следующие функции:
-
Копировать необходимые уникальные параметры из файла конфигурации
minimal.ymlв структуру inventory. -
Включить или отключить установку определённых компонентов Платформы (DBaaS, K8saas и прочее).
-
Генерировать внутренние секретные переменные (сложные уникальные пароли, ключи в правильном формате, токены с правильной длиной и пр.)
Подготовка параметров для автоматической генерации inventory состоит из следующих шагов:
-
Распакуйте архив с генератором:
$ cd ~$ RELEASE_NAME='4.0'$ tar -xzf invgen_box-${RELEASE_NAME}.tar.gz$ cd invgen_box-${RELEASE_NAME}Архив содержит пять исполняемых файлов для генерации inventory:
invgen-darwin-amd64— для macOS с архитектурой amd64.invgen-darwin-arm64— для macOS с архитектурой arm64.invgen-linux-amd64— для Linux с архитектурой amd64.invgen-linux-arm64— для Linux с архитектурой arm64.invgen-windows-amd64.exe— для Windows с архитектурой amd64.
-
Скопируйте подходящий исполняемый файл в домашний каталог:
$ cp invgen-linux-amd64 ~$ cd ~ -
Перейдите в данный каталог и запустите выгрузку основных параметров в
minimal.yml:$ chmod 755 invgen-linux-amd64$ ./invgen-linux-amd64 config-example > minimal.yml
Заполните файл minimal.yml значениями из Паспорта проекта. В файле приведено описание переменных с примерами заполнения в виде комментариев.
$ vi minimal.yml
Файл minimal.yml поделён на разделы:
-
equipment— управление количеством нод для серверов разного назначения (например, можно развернуть Compute-ноду через данный параметр). -
components— включение или отключение определённых компонентов Платформы. В раздел входят следующие группы компонентов:- сloud_audit_logs, оctavia, magnum, trove, xaas, highiops, manila,network, rs.
- сloud_audit_logs, octavia, magnum, trove, xaas, highiops, manila.
- cloud_audit_logs, octavia, magnum, trove, xaas, manila, network, rs.
- cloud_audit_logs, octavia, magnum, trove, xaas, manila.
- cloud_audit_logs, octavia, magnum, trove, xaas, highiops, network,rs.
- cloud_audit_logs, octavia, magnum, trove, xaas, highiops.
- cloud_audit_logs, octavia, magnum, trove, xaas, network, rs.
- cloud_audit_logs, octavia, magnum, trove, xaas.
-
vars— переменные, которые необходимо заполнить под вашу среду (IP, домены, названия VLAN и прочее). -
networks— параметры для подключения Платформы к внешней корпоративной среде (BGP, MTU и прочее). -
host_templates— правила именования и нумерации нод по hostname и по IP (например, можно назвать Control-ноды именем) -
control— параметр с нумерацией из трёх чисел. -
hosts— дополнительные переменные для определённых хостов. -
groups— включение определённых хостов в определённые группы (например, чтобы включить поддержку scsi не на всех Compute-нодах, а только на некоторых). -
vault— секретные данные, которые не могут быть сгенерированы самостоятельно на этапе первичной установки (доступы к AD, к email, сертификаты, прочее).
-
После заполнения файла
minimal.ymlзапуститеinvgen:$ ./invgen-linux-amd64 generateГенератор создаст папку
inventoryв текущей директории. Внутри папкиinventoryбудут конфигурационные файлы, необходимые для установки Платформы. При необходимости их можно отредактировать до запуска установщика Платформы (подробнее — в разделе Оптимизация настроек Платформы).$ ls ~/inventory/vkcloud/ansible.cfg group_vars hosts.yml host_vars README.md vkcloud.ymlls ~/inventory/vkcloud/group_vars/vkcloud vkcloud_magnum_addons_stolon_clustervkcloud_audit vkcloud_magnum_etcd_clustervkcloud_az1_storage vkcloud_magnumrapid_redisvkcloud_barbican vkcloud_magnum_rapid_stolon_clustervkcloud_billingcore_stolon_cluster vkcloud_mcsvkcloud_ceph_osd vkcloud_mcs_apex_breezevkcloud_ch_cluster_audit_logs vkcloud_mcs_breezevkcloud_cinder vkcloud_mcs_duskvkcloud_cinder_backup vkcloud_mcs_nginxvkcloud_cinder_ceph vkcloud_mcs_policyvkcloud_clickhouse vkcloud_mcs_sundogvkcloud_compute vkcloud_mcs_zephyrvkcloud_consul vkcloud_monitoring_frontendvkcloud_dhcp vkcloud_nbgpvkcloud_elk_kafka vkcloud_networkvkcloud_etcd_cluster vkcloud_neutron_controllervkcloud_galera_barbican vkcloud_nova_controllervkcloud_galera_billingaccountservice vkcloud_octaviavkcloud_galera_cinder vkcloud_ost_kubevkcloud_galera_ghosts vkcloud_pankovkcloud_galera_glance vkcloud_preinstallvkcloud_galera_karboii vkcloud_private_haproxyvkcloud_galera_keycloak vkcloud_projectsservice_stolon_clustervkcloud_galera_keystone vkcloud_proxysqlvkcloud_galera_magnum vkcloud_public_haproxyvkcloud_galera_neutron vkcloud_rabbitmq_persistentvkcloud_galera_nova vkcloud_redisvkcloud_galera_octavia vkcloud_rsvkcloud_galera_quotamanager vkcloud_scrooge_etcd_clustervkcloud_galera_scrooge vkcloud_scst_iscsivkcloud_galera_scroogearchive vkcloud_service_galeravkcloud_galera_sdnbilling vkcloud_servicesmanager_stolon_clustervkcloud_galera_zabbix vkcloud_sprutvkcloud_glance vkcloud_stolon_clustervkcloud_iam_etcd_cluster vkcloud_syncservice_stolon_clustervkcloud_katana vkcloud_uncert_kubevkcloud_kube vkcloud_zabbixvkcloud_logstash vkcloud_zookeeper$ ls ~/inventory/vkcloud/group_vars/vkcloud/addresses.yml freeipa.yml networks.yml version_locks.ymlbgp.yml iam.yml packages.yml versions.ymlbox-builder.yml imageloader.yml postdeploy.yml yum-repos.ymlceph.yml initial-install-vars.yml README.md yum.ymlcommon.yml INVENTORY.md test-stand-app-limits.yml zabbix.ymldeprecated.yml logging.yml vars.ymlfeature.yml memcached.yml vault.yml -
Удалите исполняемый файл генератора inventory и файл
minimal.yml:$ rm -f invgen-* minimal.yml
Ряд параметров производительности в инсталляторе настроен таким образом, чтобы Платформа могла запуститься даже на малых ресурсах. При использовании высокопроизводительной конфигурации отредактируйте параметры, указанные далее.
В файлах ~/inventory/vkcloud/group_vars/vkcloud_galera_<SERVICE>/vars.yml измените значения параметров max_connections, которые ограничивают количество одновременных подключений к БД MySQL, а соответственно и нагрузку на неё.
Значения параметров max_connections необходимо изменять пропорционально по компонентам, в зависимости от нагрузки на Платформу. Конкретные значения зависят от многих факторов и вычисляются эмпирически.
Примерные пропорциональные значения приведены таблице 1.
mysql:# Калибровка Mysql. Название переменной должно соответствовать названию параметра в MySQLinnodb_io_capacity: 8000innodb_buffer_pool_instances: 2max_connections: 700max_connect_errors: 4294967295max_heap_table_size: 134217728tmp_table_size: 134217728innodb_read_io_threads: 16innodb_buffer_pool_size: "{{ default_innodb_buffer_pool_size }}"key_buffer_size: 134217728
Компонент | Значение |
|---|---|
Neutron |
|
Nova |
|
Cinder |
|
BillingAccountService |
|
Billing |
|
General_Billing (+NG) |
|
Scrooge |
|
ScroogeArchive |
|
Karboii |
|
Glance |
|
Karboii |
|
QuotaManager |
|
SDNBilling |
|
Keystone |
|
Glance |
|
Keycloak |
|
Zabbix |
|
Barbican |
|
GHost |
|
Octavia |
|
Magnum |
|
Manila |
|
Trove |
|
Для инсталляции без пользователей достаточно указать значение 1000 для всех компонентов.
При увеличении нагрузки на Платформу значения max_connections необходимо увеличить.
В файле ~/inventory/vkcloud/group_vars/vkcloud/common.yml измените значение переменной default_innodb_buffer_pool_size (размер буфера в ОЗУ, выделяемого для каждой БД).
Увеличить значение innodb_buffer_pool_size можно в файле настроек для конкретной БД group_vars/vkcloud_galera_<DATABASE>/vars.yml.
По умолчанию пароль от пользователя root генерируется автоматически из 32 символов, закодированных поверх в Base64.
Пароль от пользователя root содержится в файле ~/inventory/vkcloud/group_vars/vkcloud/vault.yml в переменной vault_root_password_plain_text в открытом виде и в переменной vault_root_password в закодированном виде.
$ grep vault_root_password ~/inventory/vkcloud/group_vars/vkcloud/vault.ymlvault_root_password_plain_text: Uzl5YTA3MDdTR3djUDlNUDMxNTA=vault_root_password: $6$Bq.lsw6tyfI/jsJw$95eqFapn0Lt.XbvY9bErYRRBoRvM0FHMITB8dh0a8bYO3QJHsT47d3InDObKRELPKeMyELXl36Yj9X3I3z2Op0
Оставьте сгенерированный пароль в качестве root-пароля, либо поменяйте его на свой.
Чтобы применить сгенерированный пароль в качестве root, сохраните пароль из переменной vault_root_password_plain_text для инвентаризации секретов. Переменную vault_root_password_plain_text при этом можно удалить.
Чтобы поменять пароль на свой:
-
Зашифруйте свой пароль через Python:
$ python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'Password: *password*Confirm: *password*$6$AZAax7ZhzC3Mmv9A$KVc8C5odjXjz1A94ZvaYLpjSXh4hqZBlkpEHIZkhWveCJsrEaYYWpVHdqGaIezL/x3yaaOtXVEoveC6Iu0NXi1 -
Получившуюся строку внесите в переменную
vault_root_password. При этом переменнуюvault_root_password_plain_textможно удалить из файла:$ vi ~/inventory/vkcloud/group_vars/vkcloud/vault.yml...vault_root_password: $6$AZAax7ZhzC3Mmv9A$KVc8C5odjXjz1A94ZvaYLpjSXh4hqZBlkpEHIZkhWveCJsrEaYYWpVHdqGaIezL/x3yaaOtXVEoveC6Iu0NXi1...
-
Распакуйте и откройте архив дистрибутива:
$ cd ~$ RELEASE_NAME='4.0'$ tar -xzf repos_mcs_distr_box-${RELEASE_NAME}.tar.gz$ cd repos_mcs_distr_box-${RELEASE_NAME}/$ ls -lРаспакованный архив включает в себя следующие файлы и папки:
ansible-openstack/— Ansible-плейбуки и роли для установки Платформы.gitinfo.txt— техническая информация для разработки. Необходим на случай отладки.invgen-version— версия генератора inventory под ваш релиз. Необходим на случай отладки.mcs-ceph-deploy/— вспомогательные инструменты для настройки Ceph.terraform_manifests/— примеры Terraform-манифестов для проверки работы IaC-составляющей облака.
-
Скопируйте каталог
ansible-openstack/в каталог~/inventory.$ cp -r ansible-openstack ~/inventory/ansible-openstack
После выполнения всех шагов данного раздела проверьте содержимое каталога inventory:
$ ls ~/inventory/*/home/ansible/inventory/ansible-openstack:inventory library playbooks roles upgrade/home/ansible/inventory/tools:box.sh.d/home/ansible/inventory/vkcloud:ansible.cfg group_vars hosts.yml host_vars README.md vkcloud.yml
Каталог содержит:
ansible-openstack— каталог с Ansible-ролями и плейбуками.tools— настройки скрипта установкиbox.sh.vkcloud— сгенерированный инвенторник.
Файл конфигурации Ansible (ansible.cfg) расположен в каталоге ~/inventory/vkcloud.
Создайте каталог для хранения логов из параметра log_path:
$ mkdir $HOME/ansible/
Файл group_vars/vkcloud/vault.yml содержит пароли Платформы. При условии, что злоумышленники гарантированно не смогут его прочитать, вы можете оставить его в открытом виде. Иначе зашифруйте его с помощью ansible-vault.
Чтобы оставить файл group_vars/vkcloud/vault.yml открытым удалите из файла ansible.cfg строку с параметром vault_identity_list:
$ cd ~/inventory/vkcloud$ sed -i '/vault_identity_list/d' ansible.cfg
В случае необходимости зашифруйте файл group_vars/vkcloud/vault.yml:
-
Создайте файл с новым паролем для Ansible vault:
$ echo "my-vault-secret-password" > ~/.ansible.vault-vkcloud -
Зашифруйте файл
group_vars/vkcloud/vault.yml$ ansible-vault encrypt group_vars/vkcloud/vault.ymlПосле этого содержимое файла
group_vars/vkcloud/vault.ymlстанет зашифрованным:$ head group_vars/vkcloud/vault.yml$ANSIBLE_VAULT;1.2;AES256;vkcloud356138323034633933393838643365306565613236613632353562636537386630663632303438366363386337356434373362303062633662313266396235310a356164626431393531333663633131623964336461313832633534353762353534326137313362393237366366666263643737366566303161326262313732350a3436663533363234336435353062333564343839333633316235393339643865336334303138396639366439616130306537626335303238373338343566396235623866343135626361663536626539613435643032383361356132346536353635386461383637343363623138346636323861393933623636323962326333666538386561383039633065343561306430306438666630636637326235373663333666363738343462613162306366343739643663666238396133663833326636633338646239373362376134353938646161396433633365313531663332353138303732Чтобы внести в него изменения выполните команду
ansible-vault:$ ansible-vault edit group_vars/vkcloud/vault.yml
Откроется текстовый редактор с расшифрованным текстом. После сохранения и выхода из него файл снова зашифруется.