Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Подготовка управляющего хоста

Все IP-адреса, доменные имена и учетные записи пользователей в командах ниже указаны в качестве примера. Для корректного выполнения команд необходимо заменить значения этих параметров на актуальные.

Команды выполняются на управляющем хосте (Manager host).

1. Дополнительные компоненты

  1. Убедитесь, что установлен Python версии 3.9 или выше. Для проверки выполните команду:

    python3 --version
  2. Убедитесь, что установлен модуль venv. Для этого выполните команду:

    python3 -m venv --help

    Если модуль установлен, отобразится справочная информация.

    Если появляется сообщение об ошибке вида No module named venv, необходимо установить пакет python3-venv.

    На ОС Linux venv устанавливается с отдельным пакетом python3-venv.
  3. Убедитесь, что установлены нужные компоненты Docker-образа:

    • Для РЕД ОС:

      1. Если установлен пакет podman-docker, удалите его:

        sudo dnf remove podman-docker
        Пакет podman-docker необходимо удалить на РЕД ОС перед установкой docker-ce, поскольку оба пакета предоставляют совместимые компоненты и могут вызывать конфликты при установке и работе Docker.
      2. Установите пакеты docker-ce и jq с включенным автоматическим запуском и запустите сервис Docker CE:

        sudo dnf install -y docker-ce jq && systemctl enable --now docker

        В подготовленных шаблонах виртуальных машин автозапуск сервиса Docker CE может быть уже включен.

    • Для ОС Astra Linux и Ubuntu установите пакеты docker.io и jq с включенным автозапуском и запустите сервис Docker:

      sudo apt install -y docker.io jq && systemctl enable --now docker

2. Установка образа deploy-manager и настройка config

Команды выполняются на управляющем хосте (Manager host).
  1. Скачайте дистрибутив в архиве с расширением tar.gz и распакуйте его.

  2. В случае установки с помощью manage-tool пропустите этот шаг, иначе:

    1. Установите образ deploy-manager, который находится в распакованном архиве. Пример установки версии 1.9.1:

      docker load < deploy-manager:1.9.1.tar
    2. (Опционально) Проверьте образ на доступность:

      docker images

      Пример ответа в случае, если образ доступен:

      REPOSITORY                                                         TAG                    IMAGE ID       CREATED         SIZE
      deploy-manager                                                  1.9.1                35ca14ec55b4   2 weeks ago     1.01GB
  3. Скопируйте пример inventory:

    cp -R inventories/sample inventories/box

    Измените данные подключения к порталу в файле hosts, расположенном в каталоге inventories/box/. Описание настроек находится в комментариях к этому файлу.

  4. Создайте SSH-ключ и скопируйте его на целевой хост(ы):

    1. Создайте ключ, если он отсутствует:

      ssh-keygen
    2. Скопируйте SSH-ключ на целевой хост:

      ssh-copy-id [id-пользователя]
      # Команда с примером id-пользователя -- ssh-copy-id root@192.168.0.1

      Если авторизация по паролю на сервере запрещена добавьте ключ вручную:

      1. Выведите содержимое публичного ключа:

        cat ~/.ssh/id_rsa.pub
      2. Подключитесь на целевой хост с помощью доступных вам вариантов: ssh, vnc, novnc и так далее.

      3. Добавьте содержимое публичного ключа из первого шага в файл authorized_keys:

        echo 'ssh-rsa AAAAB3NzaC1yc ... ' >> ~/.ssh/authorized_keys
  5. Заполните файл hosts, расположенный в каталоге inventories/box/hosts. Описание настроек находится в комментариях этого файла.

    Пример файла hosts при установке Single instance
    В примере используется IP-адрес 10.10.10.1. В файле hosts он задаётся параметром ansible_host, например: ansible_host=10.10.10.1 — это IP-адрес целевого хоста.
    [k3s_server]
    target-cloudlink.sample.box ansible_host=10.10.10.1 (1)
    
    [k3s_agent]
    
    [k3s_lb]
    
    [k3s_lb_vip]
    
    [k3s:children]
    k3s_server
    k3s_agent
    k3s_lb
    
    [all:vars]
    ansible_user=root (2)
    domain_int=cloudlink.sample.box (3)
    domain_ext=cloudlink.sample.box (4)
    prefix_int=''
    prefix_ext=''
    1 Доменное имя целевого хоста и его IP-адрес
    2 ansible_user — пользователь, который подключается к серверу с ролью целевого хоста и может получить права sudo без дополнительного ввода пароля. Это обязательный ключ.
    3 domain_int — внутренний домен и, опционально, поддомен организации. Это обязательный ключ.
    4 domain_ext — внешний домен и, опционально, поддомен организации. Если не предполагается использование внешнего доменного имени, должно быть указано то же значение, что и в параметре domain_int. Это обязательный ключ.
    Пример файла hosts при установке High Availability instance
    В примере используется IP-адрес 10.10.10.1. В файле hosts он задаётся параметром ansible_host, например: ansible_host=10.10.10.1 — это IP-адрес целевого хоста.
    [k3s_server]
    server1-cloudlink.sample.box ansible_host=10.10.10.1
    server2-cloudlink.sample.box ansible_host=10.10.10.2
    server3-cloudlink.sample.box ansible_host=10.10.10.3
    
    [k3s_agent]
    agent1-cloudlink.sample.box ansible_host=10.10.10.4
    agent2-cloudlink.sample.box ansible_host=10.10.10.5
    agent3-cloudlink.sample.box ansible_host=10.10.10.6
    
    
    [k3s_lb]
    lb01-cloudlink.sample.box ansible_host=10.10.10.7
    lb02-cloudlink.sample.box ansible_host=10.10.10.8
    
    [k3s_lb_vip]
    lb-vip-cloudlink.sample.box ansible_host=10.10.10.9
    
    
    [k3s:children]
    k3s_server
    k3s_agent
    k3s_lb
    
    [all:vars]
    ansible_user=root (1)
    domain_int=cloudlink.sample.box (2)
    domain_ext=cloudlink.sample.box (3)
    prefix_int=''
    prefix_ext=''
    1 ansible_user — пользователь с правами sudo, который подключается к серверу с ролью целевого хоста. Это дополнительный ключ.
    2 domain_int — внутреннее доменное имя. Это обязательный ключ.
    3 domain_ext — внешнее доменное имя (если не предполагается использование внешнего доменного имени, должно быть указано то же значение, что и в параметре domain_int). Это обязательный ключ.

    Для группы хостов k3s_lb_vip укажите IP-адрес, который на данный момент не привязан ни к одному хосту. Этот IP-адрес (VIP) будет использоваться попеременно балансировщиками нагрузки. Требования:

    • VIP-адрес не должен находиться в пуле выдачи DHCP-сервера, либо должен быть зарезервирован

    • VIP-адрес должен находиться в одной подсети c целевым хостом

    • VIP-адрес не должен использоваться в сети другим узлом

  6. Измените настройки в файле config.yml, расположенном к каталоге inventories/box/group_vars/k3s/config.yml.

3. Заполнение файла config.yml

В файле config.yml находится описание полей, которые нужно заполнить для выбранной/выбранных платформ виртуализации. Для этого нужно раскомментировать строки платформы виртуализации и подставить значения. Заполнить файл config.yml можно как вручную, так и через пользовательский интерфейс, запустив команду:

manage-tool --ui

Поддерживаются следующие типы платформ:

  • zVirt

  • vSphere

  • Openstack

  • RedVirt

  • K2_Cloud

  • Hyper-V

  • Yandex Cloud

    Название платформ нужно указать в параметре type.

Типы платформ должны быть строго выбраны из списка: zvirt, vsphere, openstack, redvirt, k2_cloud, hyper_v, yandex_cloud. Параметр type чувствителен к регистру символов, поэтому важно указать названия платформ корректно.

3.1. Параметры config.yml для платформы zVirt

Пример config.yml для zVirt
 platforms:
  zvirt:
    type: zvirt
    label: zVirt
    scheme: https
    host: engine.cloudlink.local
    port: 443
    params:
      weight: 100
      cluster_id: d90193d6-5c5a-11ee-bd56-00163e10167d
      cluster_name: Default
      storage_name: Main_VM
Таблица 1. Описание параметров
Параметр Значение Описание

type

zvirt

Тип платформы. Зависит от того, какую платформу вы устанавливаете. Могут быть следующие типы: zvirt, vsphere, openstack, vcloud, hyper_v, yandex_cloud

label

zVirt

Человеко читаемое название платформы. В этом параметре можно указать любое удобное вам название "Zvirt-1", "Zvirt-test" и т.д

scheme

https

Схема для доступа к zVirt API. Протокол https является протоколом по умолчанию. Рекомендуется использовать именно этот протокол.

host

port

Например: host: '10.13.250.2' или host:'zvirt.sample.box'. port:'443' Если иной порт не указан, то используется 443 — стандартный порт протокола https.

IP-адрес zVirt API.

params

weight

Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. Например, weight:11, weight:102

cluster_id

Скопируйте ID кластера в интерфейсе Zvirt. Для этого: 1. Перейдите в раздел Compute → Clusters.

2. Нажмите на название кластера. Откроется страница с подробной информацией.

3. Скопируйте Cluster ID из соответствующего поля.

Например, cluster_id: zsjhgsdsjbvght6e327w3dscxdghjkjacsxdcjuu

cluster_name

Введите название кластера.

Например, cluster_name: example-cluster-1

storage_name

Скопируйте название хранилища в интерфейсе zVirt. Для этого перейдите в раздел Storage → Domains.

Как найти cluster_id и storage_name для zVirt
  1. Получение cluster_id:

    1. В интерфейсе zVirt перейдите в раздел Compute → Clusters.

    2. Нажмите на название кластера. Откроется страница с подробной информацией.

    3. Скопируйте Cluster ID из соответствующего поля.

      zvirt cluster id
  2. Получение storage_name:

    1. В интерфейсе zVirt перейдите в раздел Storage → Domains.

    2. Скопируйте название хранилища.

      storage domains
Поиск Cluster ID и storage_name для RedVirt
  1. Авторизуйтесь на платформе RedVirt.

  2. Перейдите на портал администрирования — Administration Portal.

    red virt admin enter
  3. В интерфейсе платформы выберите раздел Compute → Clusters.

  4. Нажмите на название кластера. Вы попадете на страницу расширенной информации о выбранном кластере.

  5. Скопируйте Cluster ID из соответствующего поля. Это значение нужно вставить в файл config.yml.

    redvirt id cluster
  6. Получение storage_name:

    1. В интерфейсе RedVirt перейдите в раздел Storage → Domains.

    2. Скопируйте название подходящего хранилища (хранилище имеет тип "Master Data").

redvirt storage domains

Вы можете добавить самоподписанный сертификат после установки Cloudlink или указать TLS-сертификат до запуска развертывания, выполнив необходимые подготовительные действия.

3.2. Параметры config.yml для платформы vSphere

Пример config.yml для vSphere

Для версии 6.7

platforms:
  vsphere:
    type: vsphere
    version: 6.7
    label: vSphere
    scheme: https
    host: 'vsphere.cloudlink.local'
    port: 443
    params:
      weight: 100
      cluster_name: CL01
      domain_id: domain-c8
      datastore_id: datastore-16
      tenant_prefix: vms/cloudlink
      template_inventory_path: templates/cloudlink

Для версии 7.0

vsphere:
    type: vsphere
    version: 7.0
    label: vSphere
    scheme: https
    host: '10.0.0.100'
    port: '443'
    params:
      weight: 100
      cluster_name: CL01
      domain_id: domain-c8
      datastore_id: datastore-16
      tenant_prefix: cloud
      template_inventory_path: library/templates
Таблица 2. Описание параметров
Параметр Значение Описание

type

vsphere

Тип платформы. Зависит от того, какую платформу вы устанавливаете. Могут быть следующие типы: zvirt, vsphere, openstack, vcloud, hyper_v, yandex_cloud

version

6.7 или 7.0

Данные параметр указывает версию для платформы VMware vSphere.

label

vSphere

Человеко читаемое название платформы. В этом параметре можно указать любое удобное вам название "vSphere-1", "vSphere-test" и т.д

scheme

https

Схема для доступа к vSphere API. Протокол https является протоколом по умолчанию. Рекомендуется использовать именно этот протокол.

host

Например: host: '10.13.250.2' или host:'vsphere.cloudlink.local'

IP-адрес или FQDN vSphere API.

port

443

Номер порта для подключения к интерфейсу API. По умолчанию используется 443 — стандартный порт протокола https.

params

weight

Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. Например, weight:11, weight:102

cluster_name

Скопируйте имя кластера в интерфейсе vSphere Client. Для этого: 1. Перейдите в раздел Hosts and Clusters → Clusters. 2. Скопируйте Cluster name из соответствующего поля.

domain_id

Введите название кластера. Для этого: 1. Перейдите в раздел Hosts and Clusters в интерфейсе vSphere Client. 2. Нажмите по необходимому кластеру и скопируйте из URL значение параметра ClusterComputeResource.

Например, URL - https://vc.cloudlink.local/ui/app/cluster;nav=h/urn:vmomi:ClusterComputeResource:domain-c7005:111111/summary значение параметра domain_id в данном случае domain-c7005.

datastore_id

Введите идентификатор хранилища (datastore id) в интерфейсе vSphere Client. Для этого: 1. Перейдите в раздел Storage. 2. Нажмите по необходимому хранилищу и скопируйте из URL значение параметра Datastore. Например, URL - https://vc.cloudlink/ui/app/datastore;nav=s/urn:vmomi:Datastore:datastore-11:123123/summary значение параметра datastore_id в данном случае datastore-11.

tenant_prefix

Укажите имя директории (Folder), в которой будут создаваться директории Проектов.

template_inventory

Укажите имя директории (Folder), в которой находятся шаблоны для развертывания ВМ. По умолчанию директория для версии VMware vSphere 6.7 templates/cloudlink По умолчанию директория для версии VMware vSphere 7.0 library/templates

Как найти cluster_name, domain_id и datastore_id для vSphere
  1. Получение cluster_name:

    1. Перейдите в раздел Hosts and Clusters → Clusters.

    2. Скопируйте Cluster name из соответствующего поля.

  2. Получение domain_id:

    1. Перейдите в раздел Hosts and Clusters в интерфейсе vSphere Client.

    2. Нажмите по необходимому кластеру и скопируйте из URL значение параметра ClusterComputeResource.

      vmware 1
  3. Получение datastore_id:

    1. Перейдите в раздел Storage.

    2. Нажмите по необходимому хранилищу и скопируйте из URL значение параметра Datastore.

      vmware 2

Вы можете добавить самоподписанный сертификат после установки Cloudlink или указать TLS-сертификат до запуска развертывания, выполнив необходимые подготовительные действия.

3.3. Параметры config.yml для платформы Openstack

Пример config.yml для Openstack
openstack:
    type: openstack
    label: OpenStack
    scheme: https
    host: '10.0.0.100'
    port: '5000'
    params:
      weight: 102
      region: regionOne
      domain_name: Default
      tenant_prefix: box
Таблица 3. Описание параметров
Параметр Значение Описание

type

openstack

Тип платформы. Зависит от того, какую платформу вы устанавливаете.

label

OpenStack

Человеко читаемое название платформы. В этом параметре можно указать любое удобное вам название "OpenStack-1", "OpenStack-test" и т.д

scheme

https

Протокол https является протоколом по умолчанию. Рекомендуется использовать именно этот протокол.

host

Например: host: '10.13.250.2' или host:'openstack.cloudlink.local'

IP-адрес или FQDN хоста.

port

5000

Номер порта для подключения к интерфейсу API. По умолчанию используется 5000.

params

weight

Вес платформы в интерфейсе заказа продукта. Чем меньше вес, тем выше в списке. Например, weight:11, weight:102

region

Укажите название региона.

domain_name

Укажите название домена OpenStack.

tenant_prefix

Человеко читаемый префикс. Подставляется перед именем проекта OpenStack при создании заказа в проекте Cloudlink.

Как найти ID кластера для OpenStack
  1. Авторизуйтесь на платформе OpenStack.

  2. В интерфейсе платформы выберите раздел Compute → Instances.

  3. Нажмите на название нужной виртуальной машины. Вы попадете на страницу расширенной информации о ВМ.

  4. Скопируйте значение из строки ID. Это значение нужно вставить в файл config.yml.

openstack id

Вы можете добавить самоподписанный сертификат после установки Cloudlink или указать TLS-сертификат до запуска развертывания, выполнив необходимые подготовительные действия.