Автоматизированная установка и настройка с использованием инсталлятора
Инсталлятор позволяет автоматизировать операции по развертыванию и первоначальной настройке компонентов продукта «Служба управления конфигурациями "Осмакс"» с помощью системы Ansible.
Инсталлятор включает:
-
плейбуки (playbooks) — конфигурационные файлы в формате YAML, описывающие действия для выполнения на управляемых узлах. Могут содержать один или несколько сценариев;
-
инвентори-файл (inventory) — файл, содержащий список узлов (серверов), на которых Ansible выполняет свои задачи;
-
переменные (variables) — переменные для хранения данных, которые могут быть динамически изменены и использованы в плейбуках и ролях;
-
роли (roles) — способ организации плейбуков и связанных файлов (задачи, переменные, шаблоны) в модульные компоненты с собственной структурой каталогов для повторного использования;
-
коллекции (collections) — единицы упаковки, содержащие роли, модули, плагины и другие компоненты.
Требования к программному обеспечению
Перед запуском инсталлятора установите систему управления конфигурациями с открытым исходным кодом Ansible версии >=2.13.13 (лицензия: Apache License 2.0).
Использование преднастроенного программного обеспечения в составе дистрибутива
Если у вас нет возможности самостоятельно установить программное обеспечение требуемых версий, используйте преднастроенное ПО из архива osmax-python в составе дистрибутива. Инструкцию по его использованию см. в архиве в файле README.md.
Подготовка к установке
На этапе подготовки к установке:
-
Убедитесь, что на сервере управления (control node) установлено прикладное программное обеспечение требуемой версии.
-
(Опционально) При использовании модуля установки ОС (
osmax-provisioner), подготовьте все необходимые сервисы для интеграции с ним и задайте необходимые переменные в инвентори-файле (inventory).
Продукт может быть установлен тремя способами:
Установка из репозитория (по умолчанию)
-
Убедитесь, что у вас есть вся необходимая информация для подключения к удаленному репозиторию:
-
адрес (вида
artifacts.inno.tech/repository/<type-of-distr>-packages); -
логин;
-
пароль.
-
-
Проверьте возможность подключения к удаленному репозиторию с использованием вашей инфраструктуры для загрузки пакетов дистрибутива продукта.
Установка из локальных пакетов (опционально)
|
Данный вариант установки является опциональным. Если у вас нет возможности скачать пакеты из удаленного репозитория до запуска установки, скачайте их заранее и расположите файлы пакетов по каталогам рядом с файлами инсталлятора. |
Выполните шаги:
-
Скачайте архив с инсталлятором и распакуйте его, используя инструкцию.
-
Скачайте файлы установочных пакетов
osmax-core,osmax-webadmin,osmax-appshop,saltstackиosmax-provisioner(файлы с расширениемdebи/илиrpm). Разместите их рядом с файлами инсталлятора (например, в каталогеpackages).Если вы выполняете установку вместе со службой каталогов Эллес, скачайте файлы установочных пакетов inno-samba,libgnutls30,liblmdb0из репозиторияelles-astra-apt-packages. -
Перейдите в директорию, где находятся файлы инсталлятора, выполнив команду:
$ cd installer -
Скопируйте установочные пакеты в соответствующие директории внутри инсталлятора, используя следующий синтаксис:
`cp [путь до deb-/rpm-файлов пакетов] [путь до каталога внутри инсталлятора]`
Для пакетов
osmax-core,osmax-webadmin,osmax-appshop:cp ../packages/osmax-core* data/default/files/osmax/packages/ cp ../packages/osmax-webadmin* data/default/files/osmax/packages/ cp ../packages/osmax-appshop* data/default/files/osmax/packages/Для пакетов
salt:cp ../packages/salt* data/default/files/saltstack/packages/Для пакетов
osmax-provisioner:cp ../packages/osmax-provisioner* data/default/files/osmax_provisioner/packages/Для пакетов
guacamole-client,guacamole-server,libosmaxfreerdp,libosmaxvncserver:cp ../packages/osmax-ira-guacamole* data/default/files/guacamole/packages/ cp ../packages/libosmaxfreerdp* data/default/files/guacamole/packages/ cp ../packages/libosmaxvncserver* data/default/files/guacamole/packages/Для пакетов
inno-samba,libgnutls30,liblmdb0:cp ../packages/inno-samba* data/default/files/inno_samba/packages/ cp ../packages/libognutls30* data/default/files/inno_samba/packages/ cp ../packages/liblmdb0* data/default/files/inno_samba/packages/
Пример полученной структуры файлов в каталоге data внутри инсталлятора (каталога installer):
data
└── default
└── files
├── guacamole
│ └── packages
│ ├── libosmaxfreerdp_1.2.0_amd64.deb
│ ├── libosmaxvncserver_1.2.0_amd64.deb
│ ├── osmax-ira-guacamole-client_1.4.1-1_amd64.deb
│ └── osmax-ira-guacamole-server_1.4.0_amd64.deb
├── inno_samba
│ └── packages
│ ├── inno-samba_1.11.1_amd64.deb
│ ├── libgnutls30_3.6.16_amd64.deb
│ └── liblmdb0_0.9.21-1-inno-18_amd64.deb
├── osmax
│ └── packages
│ ├── osmax-appshop_1.10.0-1_all.deb
│ ├── osmax-core_1.10.0_amd64.deb
│ └── osmax-webadmin_1.10.0-1_all.deb
├── osmax_provisioner
│ └── packages
│ └── osmax-provisioner_1.3.0-1_amd64.deb
└── saltstack
└── packages
├── salt-api_3006.4_amd64.deb
├── salt-common_3006.4_amd64.deb
├── salt-master_3006.4_amd64.deb
├── salt-minion_3006.4_amd64.deb
└── salt-ssh_3006.4_amd64.deb
Установка из локальных пакетов без использования root (опционально)
|
Данный вариант установки является опциональным и используется, если нет возможности запускать сервисы от имени пользователя |
Выполните следующие действия для использования инсталлятора в данном режиме:
-
Убедитесь, что вы установили требуемое прикладное программное обеспечение или активируйте преднастроенное окружение
osmax-python. -
Скачайте файлы установочных пакетов
osmax-core,osmax-webadmin,osmax-appshop,osmax-ira-guacamole-client,osmax-ira-guacamole-server,osmax-provisioner(файлы с расширениемdeb). Разместите их рядом с файлами инсталлятора (например, в каталогеpackages). -
Перейдите в директорию, где находятся файлы инсталлятора, выполнив команду:
$ cd installer -
Распакуйте установочные пакеты в tar-архивы, выполнив команды:
python3 repack.py ../packages/osmax-ira-guacamole-server-no-deps*.deb ./data/default/files/guacamole/packages/osmax-ira-guacamole-server/ app/osmax/ira/guacamole-server python3 repack.py ../packages/osmax-ira-guacamole-client*.deb ./data/default/files/guacamole/packages/osmax-ira-guacamole-client/ /opt/osmax-ira-guacamole-client python3 repack.py ../packages/osmax-core*.deb ./data/default/files/osmax/packages/osmax-core/ /opt/osmax-core python3 repack.py ../packages/osmax-provisioner*.deb ./data/default/files/osmax_provisioner/packages/osmax-provisioner/ /opt/osmax-provisioner python3 repack.py ../packages/osmax-webadmin*.deb ./data/default/files/osmax/packages/osmax-webadmin/ /var/www/osmax-webadmin python3 repack.py ../packages/osmax-appshop*.deb ./data/default/files/osmax/packages/osmax-appshop/ /var/www/osmax-appshopГде:
-
python3 repack.py— команда для запуска скриптаrepack.pyс использованием интерпретатора Python 3; -
аргументы:
-
путь до deb-пакета, из которого должны быть распакованы файлы;
-
путь до каталога, в который должен быть помещён архив
data.tarи папка.control; -
префикс внутри deb-архива, который должен быть удален в выходном архиве.
-
-
Настройка окружения Ansible
Выполните шаги:
-
Перейдите в директорию инсталлятора, выполнив команду:
$ cd installer -
Создайте директорию для инвентори-файла (inventory) и добавьте в нее все необходимые файлы по аналогии с инвентори-файлом по умолчанию (
inventory/default).Здесь и далее в качестве примера для развертывания используется директория inventory/demo. При необходимости переопределите значение.~/installer$ mkdir inventory/demo -
Подготовьте файл
inventory/<demo>/hosts.yaml, наполнив все необходимые группы хостами.Пример полученного файла
inventory/<demo>/hosts.yaml--- all: vars: ansible_user: admin # Имя пользователя с правами sudo на управляемых машинах ansible_ssh_private_key_file: "~/.ssh/id_ed25519" # Путь к приватному ключу ssh для подключения к управляемым машинам ansible_become: true # Выполнять операции на управляемых машинах с правами sudo windows_server: vars: ansible_connection: winrm ansible_port: 5986 ansible_become_method: runas ansible_become: false ansible_winrm_transport: ntlm ansible_winrm_scheme: https ansible_winrm_server_cert_validation: ignore children: salt_minion_windows: linux_server: children: osmax_server: hosts: demo-osm-core-1: ansible_host: 10.0.0.10 postgresql_server: hosts: demo-osm-db-1: ansible_host: 10.0.0.20 salt_master_server: hosts: demo-osm-mst-1: ansible_host: 10.0.0.30 demo-osm-mst-2: ansible_host: 10.0.0.31 salt_minion_server: hosts: demo-osm-mini-1: ansible_host: 10.0.0.40 demo-osm-mini-2: ansible_host: 10.0.0.41 salt_no_minion_server: hosts: demo-osm-nomi-1: ansible_host: 10.0.0.42 samba_server: hosts: demo-osm-dc-1: ansible_host: 10.0.0.50 guacamole_server: hosts: demo-osm-guac-1: ansible_host: 10.0.0.60 domain_computer: children: salt_minion_server: guacamole_server: salt_master_server: salt_no_minion_server: osmax_server: salt_minion_windows: salt_server: children: salt_master_server: salt_minion_server: salt_no_minion_server: osmax_provisioner_server: children: osmax_server:Если необходимо подключить и запустить команды инсталлятора под отдельным сервисным пользователем (например, пользователь с именем
osmax-user), укажите его для хостов группыosmax_server,guacamole_server(праваrootв этом случае не потребуются).Пример:
osmax_server: hosts: demo-osm-core-1: ansible_host: 10.10.10.10 ansible_user: osmax-user ansible_become: false guacamole_server: hosts: demo-osm-guac-1: ansible_host: 10.0.0.60 ansible_user: osmax-user ansible_become: false
Настройка переменных окружения
Выполните шаги:
-
Установите значения для необходимых переменных окружения в файле
.envrc. -
Настройте переменную окружения
ANSIBLE_INVENTORY, указав через запятую сначала файл по умолчанию, а затемinventory/demo(например:ANSIBLE_INVENTORY="inventory/default,inventory/demo").
Установка из репозитория (apt/rpm)
В случае использования APT-репозитория выполните шаги:
-
В
OSMAX_APT_REPOSITORY,OSMAX_REPOSITORY_USERиOSMAX_REPOSITORY_PASSWORDукажите информацию для доступа к репозиторию продукта Осмакс (например:OSMAX_APT_REPOSITORY=artifacts.inno.tech/repository/osmax-astra-apt-packages/). -
В
ELLES_APT_REPOSITORY,ELLES_REPOSITORY_USERиELLES_REPOSITORY_PASSWORDукажите информацию для доступа к репозиторию продукта Эллес (например:ELLES_APT_REPOSITORY=artifacts.inno.tech/repository/elles-astra-apt-packages/).
В случае использования RPM-репозитория выполните шаги:
-
В
OSMAX_YUM_REPOSITORY,OSMAX_REPOSITORY_USERиOSMAX_REPOSITORY_PASSWORDукажите информацию для доступа к репозиторию продукта Осмакс (например:OSMAX_YUM_REPOSITORY=artifacts.inno.tech/repository/osmax-redos-yum-packages/7/noarch/). -
В
ELLES_YUM_REPOSITORY,ELLES_REPOSITORY_USERиELLES_REPOSITORY_PASSWORDукажите информацию для доступа к репозиторию продукта Еллес (например:ELLES_YUM_REPOSITORY=artifacts.inno.tech/repository/elles-redos-yum-packages/redos/7.3/x86_64/extras/inno/).
Установка из локальных пакетов (опционально)
| Данный вариант установки является опциональным. |
Выполните шаги:
-
В
OSMAX_INSTALLATION_TYPEзадайте значениеlocal. -
В
ELLES_INSTALLATION_TYPEзадайте значениеfile.
Версии пакетов в файле .envrc должны совпадать с версиями загруженными в директорию локальных пакетов (data/default/files/…).
|
Установка из локальных пакетов и без использования root (опционально)
| Данный вариант установки является опциональным. |
Выполните шаги:
-
Создайте отдельного сервисного локального пользователя (в качестве примера указан пользователь
osmax-user) на сервере, где будет производиться установка модулей продукта (серверы группosmax_server,guacamole_server), выполнив команду:sudo useradd -m osmax-userГде флаг
-mуказывает на то, что для нового пользователя будет создан домашний каталог/home/osmax-user. -
Включите режим "linger", который позволит процессам пользователя продолжать работать даже после того, как он вышел из системы, выполнив команду:
sudo loginctl enable-linger osmax-user -
Создайте каталог
/app/osmax, в который будет установлен продукт Осмакс, выполнив команду:sudo mkdir -p /app/osmaxГде флаг
-pпозволяет создать промежуточные директории, если они не существуют. Если каталог уже существует, команда не вызовет ошибки. -
Предоставьте пользователю права владельца и группу для каталога
/app/osmax, а также всех его подкаталогов и файлов, выполнив команду:sudo chown -R osmax-user:osmax-user /app/osmaxДля организации подключения под этим пользователем см. раздел «Настройка окружения». -
Настройте SSH-доступ с устройства, на котором будет запускаться инсталлятор:
mkdir -p /home/osmax-user/.ssh echo "your ssh key" | sudo tee /home/osmax-user/.ssh/authorized_keys -
Чтобы запуск компонентов продукта был произведен под этим пользователем (
osmax-user) и в требуемые каталоги (/app/osmax/*), выполните настройки в файлахinventory:В инвентори-файле (inventory) необходимо заменить имя <demo>.-
В файле
inventory/<demo>/group_vars/osmax_server.yml:# Папка, в которую будет помещен компонент core osmax_core__basepath: "/app/osmax/core" osmax_core__installation_type: "local_tree" osmax_core__config_owner_user: "osmax-user" osmax_core__config_owner_group: "osmax-user" osmax_core__local_tree_systemd_scope: "user" osmax_core__local_tree_systemd_service_path: "/home/{{ osmax_core__config_owner_user }}/.config/systemd/user/{{ osmax_core__systemd_service }}" osmax_core__local_tree_user_linger: false osmax_core__local_tree_create_user: false # Папка, в которую будет помещен компонент appshop osmax_appshop__root_dir: "/app/osmax/appshop" osmax_appshop__installation_type: "local_tree" osmax_appshop__local_tree_owner_user: "osmax-user" osmax_appshop__local_tree_owner_group: "osmax-user" osmax_appshop__local_tree_create_user: false # Папка, в которую будет помещен компонент webadmin osmax_webadmin__root_dir: "/app/osmax/webadmin" osmax_webadmin__installation_type: "local_tree" osmax_webadmin__local_tree_owner_user: "osmax-user" osmax_webadmin__local_tree_owner_group: "osmax-user" osmax_webadmin__local_tree_create_user: false -
В файле
inventory/<demo>/group_vars/osmax_provisioner_server.yml:# Папка, в которую будет помещен компонент provisioner osmax_provisioner__basepath: "/app/osmax/provisioner" osmax_provisioner__installation_type: "local_tree" osmax_provisioner__config_owner_user: "osmax-user" osmax_provisioner__config_owner_group: "osmax-user" osmax_provisioner__local_tree_systemd_scope: "user" osmax_provisioner__local_tree_systemd_service_path: "/home/{{ osmax_provisioner__config_owner_user }}/.config/systemd/user/{{ osmax_provisioner__systemd_service }}" osmax_provisioner__local_tree_create_user: false -
В файле
inventory/<demo>/group_vars/guacamole_server.yml:# Папка, в которую будет помещен компонент guacamole-client osmax_guacamole_client__basepath: "/app/osmax/guacamole-client" osmax_guacamole_client__installation_type: "local_tree" osmax_guacamole_client__config_owner_user: "osmax-user" osmax_guacamole_client__config_owner_group: "osmax-user" osmax_guacamole_client__local_tree_systemd_scope: "user" osmax_guacamole_client__local_tree_systemd_service_path: "/home/{{ osmax_guacamole_client__config_owner_user }}/.config/systemd/user/{{ osmax_guacamole_client__systemd_service }}" osmax_guacamole_client__local_tree_user_linger: false osmax_guacamole_client__local_tree_create_user: false # Папка, в которую будет помещен компонент guacamole-server osmax_guacamole_server__local_tree_basepath: "/app/osmax/guacamole-server" osmax_guacamole_server__installation_type: "local_tree" osmax_guacamole_server__config_owner_user: "osmax-user" osmax_guacamole_server__config_owner_group: "osmax-user" osmax_guacamole_server__local_tree_systemd_scope: "user" osmax_guacamole_server__local_tree_systemd_service_path: "/home/{{ osmax_guacamole_server__config_owner_user }}/.config/systemd/user/{{ osmax_guacamole_server__systemd_service }}" osmax_guacamole_server__local_tree_user_linger: false osmax_guacamole_server__local_tree_create_user: false -
В файле
inventory/<demo>/group_vars/all/lcm_integration.yml:osmax_integration__application_path: "/app/osmax/core"
-
Замена определенных по умолчанию образов Docker (опционально)
| Данные настройки являются опциональными. |
-
В
DOCKER_REGISTRY_MIRRORукажите информацию для доступа к локальному/proxy репозиторию Docker Registry (например:DOCKER_REGISTRY_MIRROR=registry.company.name:19200). -
Для замены образов контейнеров Docker создайте файл
inventory/<demo>/group_vars/postgresql_server.ymlи определите значения переменных:osmax_kafka_docker__kafka_docker_image: "bitnami/kafka:3.6.1" osmax_kafka_docker__console_docker_image: "redpandadata/console:v2.3.8" osmax_minio_docker__minio_docker_image: "minio/minio:RELEASE.2023-10-16T04-13-43Z.fips" osmax_postgresql_docker__docker_image: "library/postgres:15.3"
Назначение DNS forwarders
| Данные настройки выполняются при отсутствии свободного доступа к интернету и позволяют назначить собственные DNS-серверы. |
Создайте файл inventory/<demo>/group_vars/all/main.yml и определите список DNS-серверов:
dns__forwarders_list:
- 77.88.8.8
- 77.88.8.1
Установка с использованием стороннего домена, РostgreSQL, S3 и Kafka (опционально)
Для настройки РostgreSQL, S3 и Kafka выполните шаги:
-
Скопируйте файл
inventory/default/group_vars/all/lcm_integration.ymlвinventory/<demo>/group_vars/all/lcm_integration.yml. -
Измените параметры в файле
inventory/<demo>/group_vars/all/lcm_integration.yml. -
Настройте сторонний домен:
-
Скопируйте Keytab-файл в
data/default/files/osmax/keytab/<имя учётной записи>.keytab. -
Создайте файл
inventory/<demo>/group_vars/all/samba_integration.yml:samba__domain: "MY.COMPANY.DOMAIN"Где
samba__domain— FQDN вашего домена. -
Измените параметры в файле
inventory/<demo>/group_vars/all/lcm_integration.yml:osmax_integration__domain_sa_user: "lcm-sa" osmax_integration__domain_sa_password: "Qwerty321sa"Где:
-
osmax_integration__domain_sa_user— имя учётной записи; -
osmax_integration__domain_sa_password— пароль от учётной записи.
-
-
После выполнения проверки доступности перейдите к пункту «Выборочная установка» для установки продукта.
-
Пример файла .envrc
# значения для настройки доступа к репозиториям export OSMAX_APT_REPOSITORY='artifacts.inno.tech/repository/osmax-astra-apt-packages/' export OSMAX_YUM_REPOSITORY='artifacts.inno.tech/repository/osmax-redos-yum-packages/7/osmax/x86_64/' export OSMAX_REPOSITORY_USER='имя пользователя для подключения к apt-репозиторию' export OSMAX_REPOSITORY_PASSWORD='пароль пользователя' # тип установки (по умолчанию - из репозитория (repo), также возможно использовать тип local) export OSMAX_INSTALLATION_TYPE=repo # секция службы каталогов Эллес export ELLES_VERSION=1.11.1 export ELLES_APT_REPOSITORY='artifacts.inno.tech/repository/elles-astra-apt-packages/' export ELLES_YUM_REPOSITORY='artifacts.inno.tech/repository/elles-redos-yum-packages/redos/7.3/x86_64/extras/inno/' export ELLES_REPOSITORY_USER='имя пользователя для подключения к apt-репозиторию' export ELLES_REPOSITORY_PASSWORD='пароль пользователя' # тип установки (по умолчанию - из репозитория (repo), также возможно использовать тип file для установки из локальных пакетов) export ELLES_INSTALLATION_TYPE=repo export DOCKER_REGISTRY_MIRROR='docker.io' # значения для настройки Ansible inventory export ANSIBLE_INVENTORY="inventory/default,inventory/demo"
Инициализации переменных окружения
Перед запуском установки выполните инициализацию переменных окружения, прописанных в файле .envrc, выполнив команду:
~/installer$ source .envrc
Чтобы убедиться, что переменные корректно установились, отобразите одну из переменных в консоли, выполнив команду:
~/installer$ echo OSMAX_REPOSITORY_USER=$OSMAX_REPOSITORY_USER
После выполнения команды должен отобразиться пароль, который был добавлен в файл .envrc.
Проверка доступности
Проверьте доступность хостов используя ansible ad-hoc, выполнив команду с вызовом модуля ping:
~/installer$ ansible --module-name ping all
Выборочная установка (опционально)
Помимо полной установки, вы также можете установить отдельные компоненты. Для этого выполните шаги:
-
Установите РostgreSQL, Kafka и GUI, выполнив команду:
~/installer$ ansible-playbook install_services.yml -
Установите модуль координации (
saltstack), выполнив команду:~/installer$ ansible-playbook install_saltstack.yml -
Установите основные модули продукта (
osmax-core,osmax-provisioner) и модуль удаленного доступа (ira), выполнив команду:~/installer$ ansible-playbook install_osmax.yml
Результаты установки
В результате успешного завершения команда установки должна отобразить результат вида:
PLAY RECAP ********************************************************************************************************************** lcm-3345-cm-1 : ok=78 changed=55 unreachable=0 failed=0 skipped=13 rescued=0 ignored=0 lcm-3345-db-1 : ok=57 changed=33 unreachable=0 failed=0 skipped=41 rescued=0 ignored=0 lcm-3345-ds-1 : ok=66 changed=44 unreachable=0 failed=0 skipped=22 rescued=0 ignored=2 lcm-3345-gc-1 : ok=48 changed=35 unreachable=0 failed=0 skipped=12 rescued=0 ignored=0 lcm-3345-ma-1 : ok=56 changed=44 unreachable=0 failed=0 skipped=18 rescued=0 ignored=0 lcm-3345-ma-2 : ok=56 changed=44 unreachable=0 failed=0 skipped=18 rescued=0 ignored=0 lcm-3345-mi-1 : ok=51 changed=38 unreachable=0 failed=0 skipped=22 rescued=0 ignored=0 lcm-3345-mi-2 : ok=51 changed=38 unreachable=0 failed=0 skipped=22 rescued=0 ignored=0 lcm-3345-no-1 : ok=35 changed=27 unreachable=0 failed=0 skipped=7 rescued=0 ignored=0 Вторник 20 августа 2024 17:25:10 +0300 (0:00:02.222) 0:21:56.949 ******* =============================================================================== osmax-domain-computer : Install required packages ----------------------------------------------------------------------- 125.36s osmax-yandex-browser : Install apt packages ----------------------------------------------------------------------------- 120.52s osmax : Install required PIP packages ----------------------------------------------------------------------------------- 103.19s Reboot host -------------------------------------------------------------------------------------------------------------- 94.95s osmax : Install OSMAX backend packages ----------------------------------------------------------------------------------- 92.60s osmax-docker : Install docker packages ----------------------------------------------------------------------------------- 67.61s osmax-apt : Change APT repositories -------------------------------------------------------------------------------------- 51.81s osmax-saltstack : Install salt-minion ------------------------------------------------------------------------------------ 46.04s osmax-saltstack : Install salt-master ------------------------------------------------------------------------------------ 41.12s osmax-remote-gui : Install xrdp ------------------------------------------------------------------------------------------ 39.57s osmax-minio-docker : Run minio bootstrap --------------------------------------------------------------------------------- 34.23s Install docker-compose apt packages -------------------------------------------------------------------------------------- 31.38s inno-ira-guacamole-client : Install prerequisites ------------------------------------------------------------------------ 31.14s osmax-provisioner : Install .deb package (APT-remote) -------------------------------------------------------------------- 28.25s samba : Install packages ------------------------------------------------------------------------------------------------- 27.41s inno-ira-guacamole-server : Install guacamole server package on Astra Linux ---------------------------------------------- 16.27s osmax-apt : Change APT repositories -------------------------------------------------------------------------------------- 13.56s bind : Install bind package ---------------------------------------------------------------------------------------------- 13.18s osmax-provisioner : Wait backend API up & running ------------------------------------------------------------------------ 11.59s samba : Start domain provisioning ---------------------------------------------------------------------------------------- 11.17s