VK Private Cloud logo
Помощь
Обновлена 17 июля 2026 г. в 15:55

Подготовка параметров для инсталляции

Подготовка параметров для инсталляции состоит из следующих последовательных шагов:

  1. Подготовка inventory окружения.
  2. Настройка параметров Платформы.
  3. Распаковка архива дистрибутива.
  4. Правка конфигурации Ansible.

После настройки всех параметров inventory перейдите к запуску инсталлятора (подробнее — в разделе Запуск инсталлятора).

Подготовка inventory окружения

Для создания первоначального inventory для первичной установки Платформы используется Inventory-генератор (invgen).

Inventory-генератор выполняет следующие функции:

  • Копирование необходимых уникальных параметров из файла конфигурации minimal.yml в структуру inventory.

  • Включение или отключение установки определённых компонентов Платформы (DBaaS, K8saas и прочее).

  • Генерирование внутренних секретных переменных (сложные уникальные пароли, ключи в правильном формате, токены с правильной длиной и пр.)

Подготовьте параметры для автоматической Inventory-генерации:

  1. Распакуйте архив с генератором:

    $ 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.
  2. Скопируйте подходящий исполняемый файл в домашний каталог:

    $ cp invgen-linux-amd64 ~$ cd ~
  3. Перейдите в данный каталог и запустите выгрузку основных параметров в minimal.yml:

    $ chmod 755 invgen-linux-amd64$ ./invgen-linux-amd64 config-example > minimal.yml

Подготовка файла конфигурации minimal.yml

Заполните файл minimal.yml значениями из Паспорта проекта. В файле приведено описание переменных с примерами заполнения в виде комментариев.

$ vi minimal.yml

Файл minimal.yml поделён на разделы:

  1. equipment — управление количеством узлов для серверов разного назначения (например, можно развернуть вычислительный узел через данный параметр).
  2. components — управление компонентами Платформы.
  3. vars — переменные, которые необходимо заполнить под вашу среду (IP, домены, названия VLAN и прочее).
  4. networks — параметры для подключения Платформы к внешней корпоративной среде (BGP, MTU и прочее).
  5. host_templates — правила именования и нумерации узлов по hostname и по IP.
  6. hosts — дополнительные переменные для определённых хостов.
  7. groups — включение определённых хостов в определённые группы (например, чтобы включить поддержку scsi не на всех вычислительных узлах, а только на некоторых).
  8. vault — секретные данные, которые не могут быть сгенерированы самостоятельно на этапе первичной установки (доступы к AD, к email, сертификаты, прочее).

В разделе components можно включать или отключать следующие компоненты Платформы:

  1. LaaS — Logging as a Service. Чтобы включить:

    • Добавьте параметр laas в раздел components.

    • Заполните переменную laas_public_endpoint_domain.

    • Настройте глубину хранения логов в днях. Внутри переменной helm_laas_admin_api_builtin_services_raw_content заполните переменные ttl для следующих объектов виртуализации:

      • IaaS-сервисы (id:Default).
      • Контейнеры (id:Containers).
      • DBaaS-сервисы (id:Databases).
  2. MaaS — Monitoring as Service. Чтобы включить:

    • Добавьте параметр maas в раздел components.

    • Заполните переменную maas_public_endpoint_domain.

    • Заполните переменные почтового сервера в файле ~/inventory/vkcloud/group_vars/vkcloud_kube/cloud-alerting.yml:

      • helm_cloud_alerting_smtp_host.
      • helm_cloud_alerting_smtp_port.
      • helm_cloud_alerting_smtp_user.
      • helm_cloud_alerting_smtp_password.
      • helm_cloud_alerting_smtp_from_addr.
  3. Sprut — Software Defined Network, реализованный VK Cloud. Альтернатива Neutron. Чтобы включить:

    • Добавьте параметр sprut в раздел components.

    • Заполните переменные:

      • network_address_dns_internal_pool_sprut.
      • network_address_dns_exchange_sprut.
      • network_address_ephn_internal_sprut.
      • network_address_ephn_exchange_sprut.
      • network_address_metadata_internal_pool_sprut.
      • network_address_metadata_exchange_pool_sprut.
      • privatedns_host.
      • sprut_dns_exchange_pool_proxy_address.
      • both_sdn_enabled_projects.
      • groups.private_dns.
  4. HighIOPS — вид хранилища, реализованного поверх нескольких SSD- или NVME-дисков. Чтобы включить:

    • Добавьте параметр highiops в раздел components.

    • Заполните переменные:

      • cinder_hiops_cinder_state_vol_size.
      • lvm_mirrors_count.
      • hiops_disk_format_name.
      • hiops_disks_regexp.
      • groups.highiops.
  5. Network — установка инсталляции с выделенным Network-узлом. Чтобы включить:

    • Добавьте параметр network в раздел components.

    • Заполните переменные:

      • equipment.network.
      • host_templates.network.
  6. External Network — способ подачи внешних сетей в Платформу.

    • shared — одна общая внешняя сеть на все проекты. Чтобы включить, заполните переменные:

      • network_address_cloudexternal.
      • external_network_name.
      • external_networks_extend.
    • provider (сети провайдера) — отдельные внешние сети на каждый проект. Чтобы включить:

      • Оставьте пустой или уберите переменную network_address_cloudexternal.
      • Заполните список провайдерских сетей postdeploy_provider_network.
  7. Glance-S3 — хранение образов сервиса Glance в S3. Чтобы включить:

Раскомментируйте необходимые компоненты для включения, остальные закомментируйте.

В зависимости от включенных компонентов в разделе components файла minimal.yml Inventory-генератор создаст inventory с нужными параметрами для выбранной конфигурации.

Поддерживаемые наборы компонентов и параметров:

  1. cloud-audit-logs, octavia, magnum, trove, xaas, manila, external_network(shared), glance_type_store(rbd).
  2. cloud-audit-logs, octavia, magnum, trove, xaas, manila, external_network(provider), glance_type_store(rbd).
  3. cloud-audit-logs, octavia, magnum, trove, xaas, manila, external_network(provider), glance_type_store(s3), laas, maas.
  4. cloud-audit-logs, octavia, magnum, trove, xaas, manila, external_network(shared), glance_type_store(rbd), laas, maas, sprut.

Компоненты network, highiops можно включать в любую из перечисленных конфигураций. Компонент network нужно включать в инсталляциях, где количество виртуальных портов превышает 5000.

Пример конфигурации
...components:  - cloud_audit_logs  - highiops  - octavia  - magnum  - trove  - manila  - xaas  - network  - sprut  - maas  - laas...

Запуск генератора

  1. После заполнения файла minimal.yml запустите invgen:

    $ ./invgen-linux-amd64 generate

    Генератор создаст папку inventory в текущей директории. Внутри папки inventory будут конфигурационные файлы, необходимые для установки Платформы. При необходимости их можно отредактировать до запуска установщика Платформы (подробнее — в разделе Настройка параметров Платформы).

    $ ls ~/inventory/vkcloud/ansible.cfg  group_vars  hosts.yml  host_vars  README.md  vkcloud.yml ls ~/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
  2. Удалите исполняемый файл Inventory-генератора и файл minimal.yml:

    $ rm -f invgen-* minimal.yml

Настройка параметров Платформы

Ряд параметров производительности в инсталляторе настроен таким образом, чтобы Платформа могла запуститься даже на малых ресурсах. При использовании высокопроизводительной конфигурации отредактируйте параметры, указанные далее.

Количество подключений к БД

В файлах ~/inventory/vkcloud/group_vars/vkcloud_galera_<SERVICE>/vars.yml измените значения параметров max_connections, которые ограничивают количество одновременных подключений к БД MySQL и нагрузку на неё:

Пример фрагмента файла ~/inventory/vkcloud/group_vars/vkcloud_galera_/vars.yml
mysql:  # Калибровка Mysql. Название переменной должно соответствовать названию параметра в MySQL  innodb_io_capacity: 8000  innodb_buffer_pool_instances: 2  max_connections: 700  max_connect_errors: 4294967295  max_heap_table_size: 134217728  tmp_table_size: 134217728  innodb_read_io_threads: 16  innodb_buffer_pool_size: "{{ default_innodb_buffer_pool_size }}"  key_buffer_size: 134217728

Значения параметров max_connections необходимо изменять пропорционально по компонентам, в зависимости от нагрузки на Платформу. Конкретные значения зависят от многих факторов и вычисляются эмпирически.

Примерные пропорциональные значения приведены в таблице 1.

Таблица 1 — Пример значений параметров max_connections

Компонент

Значение

Neutron

500000

Nova

50000

Cinder

50000

BillingAccountService

50000

Scrooge

50000

ScroogeArchive

50000

Karboii

50000

Glance

50000

Karboii

50000

QuotaManager

50000

SDNBilling

50000

Keystone

50000

Glance

50000

Keycloak

50000

Zabbix

20000

Barbican

50000

GHost

50000

Octavia

50000

Magnum

50000

Manila

50000

Trove

50000

Для инсталляции без пользователей достаточно указать значение 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

По умолчанию пароль от пользователя 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 при этом можно удалить.

Чтобы поменять пароль на свой:

  1. Зашифруйте свой пароль через 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
  2. Получившуюся строку внесите в переменную vault_root_password. При этом переменную vault_root_password_plain_text можно удалить из файла:

    $ vi  ~/inventory/vkcloud/group_vars/vkcloud/vault.yml...vault_root_password: $6$AZAax7ZhzC3Mmv9A$KVc8C5odjXjz1A94ZvaYLpjSXh4hqZBlkpEHIZkhWveCJsrEaYYWpVHdqGaIezL/x3yaaOtXVEoveC6Iu0NXi1...

Распаковка архива дистрибутива

  1. Распакуйте и откройте архив дистрибутива:

    $ 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-составляющей облака.
  2. Скопируйте каталог 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 (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:

  1. Создайте файл с новым паролем для Ansible vault:

    $ echo "my-vault-secret-password" > ~/.ansible.vault-vkcloud
  2. Зашифруйте файл 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

Откроется текстовый редактор с расшифрованным текстом. После сохранения и выхода из него файл снова зашифруется.