Запуск инсталлятора
Перед запуском инсталлятора должны быть выполнены следующие условия:
- С деплой-ноды все серверы доступны по DNS-адресам (подробнее — в разделе Предстартовая проверка).
- С деплой-ноды настроен беспарольный SSH-доступ по всем серверам кластера (подробнее — в разделе Создание учётной записи).
- Корректно заполнены inventory и переменные для нового стенда (подробнее — в разделе Подготовка inventory окружения).
Проверьте иерархию файлов и каталогов в каталоге ~/inventory:
$ sudo yum install tree -y$ tree ~/inventory/ | less
/home/<USERNAME>/inventory/├── ansible-openstack│ ├── library│ │ ├── ceph_mon.sh│ │ ├── jinja_version.py│ │ ├── mysql_query.py│ │ ├── proxysql_galera_hostgroups.py│ │ └── urltar.py│ ├── playbooks│ │ ├── 3.0│ │ │ ├── helm-api-gateway-admin.yml│ │ │ ├── helm-api-gateway-public.yml| | | └── ...│ │ ├── backend-deploy.yml│ │ ├── barbican-deploy.yml│ │ ├── beats_private.yml│ │ ├── breeze-deploy.yml│ │ └── ...│ ├── roles│ │ ├── backend│ │ │ └── ...│ │ ├── barbican│ │ │ └── ...│ │ └── ...│ ├── tools│ │ ├── BOX.md│ │ ├── box.sh│ │ └── box.sh.d│ │ └── include.func.sh│ └── upgrade│ └── ...├── tools│ └── box.sh.d│ └── groups│ ├── base│ ├── ceph│ ├── ci│ ├── core│ ├── iaas│ ├── iam│ ├── main│ ├── paas│ └── postdeploy└── vkcloud├── ansible.cfg├── group_vars│ ├── vkcloud│ │ ├── addresses.yml│ │ ├── bgp.yml│ │ └── ...│ ├── vkcloud_audit│ │ └── vars.yml│ ├── vkcloud_az1_storage│ │ └── vars.yml│ ├── vkcloud_barbican│ │ ├── README.md│ │ └── vars.yml│ └── ...├── hosts.yml├── host_vars│ └── vkcloud_backends│ ├── billing-account-service.yml│ ├── bs-api-gateway-admin.yml│ └── ...├── README.md└── vkcloud.yml
На деплой-ноде выполните следующие шаги:
-
Перейдите в каталог
inventory:$ cd ~/inventory/vkcloud -
Запустите команду с выводом информации по исполняемым плейбукам:
$ ../ansible-openstack/tools/box.sh deploy \-b ../ansible-openstack \-i vkcloud.yml -nКоманда выведет полный перечень запускаемых ролей Ansible и их порядок.
Для автоматической установки запустите инсталлятор, который произведет полную установку Платформы.
Полная установка Платформы занимает около 8 ч. Время установки зависит от конфигурации Платформы. Чтобы предотвратить прерывание установки из-за обрыва SSH-сессии, запустите установку в сессии screen:
$ sudo yum install screen -y$ screen
Запустите инсталлятор:
$ ../ansible-openstack/tools/box.sh deploy \-b ../ansible-openstack \-i vkcloud.yml
В случае возникновения проблем при развёртывании на определенном плейбуке выполните диагностику:
-
Запустите установку с начала. Чтобы исключить возможность плавающей ошибки, перезапустите последний плейбук (на примере плейбука
helm-gb-api-gateway.yml):$ ../ansible-openstack/tools/box.sh deploy \-s iaas,postdeploy,paas \-b ../ansible-openstack \-i vkcloud.yml \--skip-to helm-gb-api-gateway.ymlУстановка будет продолжена.
Если выполнение плейбука завершилось неуспешно, перейдите к следующему пункту.
-
Устраните проблему самостоятельно или при помощи группы технической поддержки, и перезапустите установку.
Соберите данные об ошибке (на примере ошибки, приведённой выше):Пример ошибкиTASK [helm-chart-installer : Post-Boostrap Magnum | Create variables for template] ***********Thursday 26 October 2023 14:22:46 +0300 (0:00:01.621) 0:01:22.445 ******fatal: [cpn002]: FAILED! => {}MSG:The task includes an option with an undefined variable. The error was: list object has no element 0The error appears to be in '/home/ansible/inventory/ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml': line 236, column 3, but maybe elsewhere in the file depending on the exact syntax problem.The offending line appears to be:- name: "Post-Boostrap Magnum | Create variables for template"-
Найдите TASK
Create variables for template:$ grep -RA10 "Create variables for template" ../ansible-openstack/roles/ 2>/dev/null../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml:- name: "Post-Boostrap Magnum | Create variables for template"../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml- set_fact:../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml- user_network_id: "{{ find_user_network_id.json['networks'][0]['id'] }}"../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml- master_flavor_id: "{{ flavor_id }}"../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml- kubernetes_template_name: "{{ helm_magnum_cluster_template_name }}.{{ external_networks_extend[item].network_name }}"../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml- kubernetes_shared: "{{ external_networks_extend[item].shared | d('false') }}"../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml- check_mode: no../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml- tags: bootstrap../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml-../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml-# Find cluster templates for project../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml-- name: "Post-Bootstrap Mangum | Find clustertemplates for network" -
Узнайте, какое действие выполняет TASK и какие переменные использует. Найдите значения переменных:
$ grep -R "[ |^]flavor_id:" ../ansible-openstack/ . 2>/dev/null../ansible-openstack/playbooks/roles/helm-chart-installer/defaults/main.yml: flavor_id: "{{ flavor_id }}"../ansible-openstack/playbooks/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml: flavor_id: "{% for flavor in flavor_list.json.flavors %}{% if flavor.name == helm_magnum_flavor_name %}{{ flavor.id }}{% endif %}{% endfor %}"../ansible-openstack/playbooks/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml: flavor_id: "{{ create_flavor.json['flavor'].id }}"../ansible-openstack/playbooks/3.0/roles/helm-chart-installer/defaults/main.yml: flavor_id: "{{ flavor_id }}"../ansible-openstack/playbooks/3.0/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml: flavor_id: "{% for flavor in flavor_list.json.flavors %}{% if flavor.name == helm_magnum_flavor_name %}{{ flavor.id }}{% endif %}{% endfor %}"../ansible-openstack/playbooks/3.0/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml: flavor_id: "{{ create_flavor.json['flavor'].id }}"../ansible-openstack/roles/helm-chart-installer/defaults/main.yml: flavor_id: "{{ flavor_id }}"../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml: flavor_id: "{% for flavor in flavor_list.json.flavors %}{% if flavor.name == helm_magnum_flavor_name %}{{ flavor.id }}{% endif %}{% endfor %}"../ansible-openstack/roles/helm-chart-installer/tasks/post_bootstrap/magnum.yml: flavor_id: "{{ create_flavor.json['flavor'].id }}"./group_vars/vkcloud_kube/magnum.yml: flavor_id: '{{ flavor_id }}'Для поиска вложенных значений может потребоваться несколько итераций.
В примере производится присвоение переменных через
set_fact(подробная информация приведена в официальной документации), используются переменныеfind_user_network_id,flavor_id,helm_magnum_cluster_template_nameиexternal_networks_extend.Используйте собранные данные для самостоятельной диагностики или консультации группы технической поддержки.
Если устранить ошибку не удалось, перейдите к следующему пункту.
-
-
Переустановите ОС на всех серверах Платформы и повторите прохождение данной инструкции.
Все пароли для доступа к Платформе располагаются в файле ~/inventory/vkcloud/group_vars/vkcloud/vault.yml (в открытом или зашифрованном виде).
Для начала использования Платформы выгрузите основные эндпойты, логины и пароли:
-
Учётные демо-записи пользователей для Портала самообслуживания:
$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nFront URL: https://{{ openstack_public_endpoint_ip }}Front Login/Pass:{% for user in keycloak_test_users | dict2items %}** {{ user.value.username }} / {{ user.value.password }} (groups: {{ user.value.groups | join(', ') }}){% endfor %}{% for user in freeipa_users %}** {{ user[0] }}@{{ freeipa_realm | lower }} / {{ user[1] }} (group: {{ user[2] }}){% endfor %}\n\n\"" all[0] | sed 's/\\n/\n/g'cpn001 | SUCCESS => {"msg": "Front URL: https://lk.private.infra.devmail.ruFront Login/Pass:** proj1@vk.team / Q2k6a18A (groups: proj1-users)** proj2@vk.team / K3W6S8K5 (groups: proj2-users)** keycloak@vk.team / MAkGA1UECgwCVks (group: ldap_admins)** user01@vk.team / wy902Ln9 (group: ldap_users01)** user02@vk.team / 658nqDn9 (group: ldap_users02)"} -
Учётная запись Портала администратора:
$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nAdmin URL: https://{{ superadmin_public_endpoint_domain }}Admin Login/Pass: {{ iam_sync_user_name }} / {{ vault_iam_sync_user_password }}\n\n\"" all[0] | sed 's/\\n/\n/g'cpn001 | SUCCESS => {"msg": "Admin URL: https://admin.private.infra.devmail.ruAdmin Login/Pass: superadmin / Lf0j1T69H1081c0o2exm"} -
Учётная запись администратора Keycloak:
$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nKeycloak URL: https://{{ keycloak_public_endpoint_domain }}Keycloak Login/Pass: admin / {{ vault_keycloak_password }}\n\n\"" all[0] | sed 's/\\n/\n/g'cpn001 | SUCCESS => {"msg": "Keycloak URL: https://keycloak.private.infra.devmail.ruKeycloak Login/Pass: admin / 0r91jFT60gU6TK0v10k2"} -
Учётная запись администратора Katana:
$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nKatana URL: https://{{ katana_public_endpoint_domain }}Katana Login/Pass: katana / {{ vault_katana.openstack.password }}\n\n\"" all[0] | sed 's/\\n/\n/g'cpn001 | SUCCESS => {"msg": "Katana URL: https://katana.private.infra.devmail.ruKatana Login/Pass: katana / a1b8Pl17Z423FqK3H62z"} -
Учётная запись администратора Zabbix:
$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nZabbix URL: https://{{ monitoring_endpoint_fqdn }}Zabbix Login/Pass: {{ vault_zabbix_api_user }} / {{ vault_zabbix_api_pass }}\n\n\"" all[0] | sed 's/\\n/\n/g'cpn001 | SUCCESS => {"msg": "Zabbix URL: https://mon.private.infra.devmail.ruZabbix Login/Pass: Admin / QB7214T62z6n63guc3gl"} -
Учётная запись администратора OpenSearch:
$ ansible -m debug -i vkcloud.yml -a "msg=\"\n\nOpenSearch URL: https://{{ logs_endpoint_fqdn }}OpenSearch Login/Pass: admin / {{ vault_opensearch_users_admin_password }}\n\n\"" all[0] | sed 's/\\n/\n/g'cpn001 | SUCCESS => {"msg": "OpenSearch URL: https://logs.private.infra.devmail.ruOpenSearch Login/Pass: admin / 59z74BX288E4Y8VRKz9Q"}
На данный момент все вышеуказанные эндпойнты, логины и пароли должны быть готовы к применению — можно переходить по URL и вводить данные аутентификации.
Создайте внешнюю сеть согласно процедуре, описанной в Руководстве администратора VK Private Cloud в разделе Создание внешней сети с доступом в корпоративную сеть.
После успешной установки Платформы (в том числе, после ручной установки с проверкой по каждому компоненту), выполните финальную проверку, описанную в разделе Проверка установки.
После успешной установки Платформы удалите лишние файлы дистрибутива с деплой-ноды.
$ RELEASE_NAME='4.0'$ rm -rf \~/repos_mcs_distr_box-${RELEASE_NAME}.tar.gz \~/repos_mcs_distr_box-${RELEASE_NAME}/ansible-openstack*/ \~/repos_mcs_distr_box-${RELEASE_NAME}.tar.gz.sha1sum \~/invgen_box-${RELEASE_NAME}.tar.gz \~/invgen_box-${RELEASE_NAME}.tar.gz.sha1sum \~/invgen_box-${RELEASE_NAME} \~/nexus-box-${RELEASE_NAME}.tar.list \~/nexus-box-${RELEASE_NAME}.tar.sha1sum