Автоматизированная установка и настройка с использованием инсталлятора

Инсталлятор позволяет автоматизировать операции по развертыванию и первоначальной настройке компонентов продукта «Служба управления конфигурациями "Осмакс"» с помощью системы Ansible.

Инсталлятор включает:

  • плейбуки (playbooks) — конфигурационные файлы в формате YAML, описывающие действия для выполнения на управляемых узлах. Могут содержать один или несколько сценариев;

  • инвентори-файл (inventory) — файл, содержащий список узлов (серверов), на которых Ansible выполняет свои задачи;

  • переменные (variables) — переменные для хранения данных, которые могут быть динамически изменены и использованы в плейбуках и ролях;

  • роли (roles) — способ организации плейбуков и связанных файлов (задачи, переменные, шаблоны) в модульные компоненты с собственной структурой каталогов для повторного использования;

  • коллекции (collections) — единицы упаковки, содержащие роли, модули, плагины и другие компоненты.

Требования к программному обеспечению

Перед запуском инсталлятора установите систему управления конфигурациями с открытым исходным кодом Ansible версии >=2.13.13 (лицензия: Apache License 2.0).

Использование преднастроенного программного обеспечения в составе дистрибутива

Если у вас нет возможности самостоятельно установить программное обеспечение требуемых версий, используйте преднастроенное ПО из архива osmax-python в составе дистрибутива. Инструкцию по его использованию см. в архиве в файле README.md.

Подготовка к установке

На этапе подготовки к установке:

  1. Убедитесь, что на сервере управления (control node) установлено прикладное программное обеспечение требуемой версии.

  2. Настройте окружение.

  3. (Опционально) При использовании модуля установки ОС (osmax-provisioner), подготовьте все необходимые сервисы для интеграции с ним и задайте необходимые переменные в инвентори-файле (inventory).

Продукт может быть установлен тремя способами:

Установка из репозитория (по умолчанию)

  1. Убедитесь, что у вас есть вся необходимая информация для подключения к удаленному репозиторию:

    • адрес (вида artifacts.inno.tech/repository/<type-of-distr>-packages);

    • логин;

    • пароль.

  2. Проверьте возможность подключения к удаленному репозиторию с использованием вашей инфраструктуры для загрузки пакетов дистрибутива продукта.

Установка из локальных пакетов (опционально)

Данный вариант установки является опциональным.

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

Выполните шаги:

  1. Скачайте архив с инсталлятором и распакуйте его, используя инструкцию.

  2. Скачайте файлы установочных пакетов osmax-core, osmax-webadmin, osmax-appshop, saltstack и osmax-provisioner (файлы с расширением deb и/или rpm). Разместите их рядом с файлами инсталлятора (например, в каталоге packages).

    Если вы выполняете установку вместе со службой каталогов Эллес, скачайте файлы установочных пакетов inno-samba, libgnutls30, liblmdb0 из репозитория elles-astra-apt-packages.
  3. Перейдите в директорию, где находятся файлы инсталлятора, выполнив команду:

     $ cd installer
  4. Скопируйте установочные пакеты в соответствующие директории внутри инсталлятора, используя следующий синтаксис:

    `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 (опционально)

Данный вариант установки является опциональным и используется, если нет возможности запускать сервисы от имени пользователя root и/или установить в каталог по умолчанию (/opt).

Выполните следующие действия для использования инсталлятора в данном режиме:

  1. Убедитесь, что вы установили требуемое прикладное программное обеспечение или активируйте преднастроенное окружение osmax-python.

  2. Скачайте файлы установочных пакетов osmax-core, osmax-webadmin, osmax-appshop, osmax-ira-guacamole-client, osmax-ira-guacamole-server, osmax-provisioner (файлы с расширением deb). Разместите их рядом с файлами инсталлятора (например, в каталоге packages).

  3. Перейдите в директорию, где находятся файлы инсталлятора, выполнив команду:

       $ cd installer
  4. Распакуйте установочные пакеты в 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

Выполните шаги:

  1. Перейдите в директорию инсталлятора, выполнив команду:

    $ cd installer
  2. Создайте директорию для инвентори-файла (inventory) и добавьте в нее все необходимые файлы по аналогии с инвентори-файлом по умолчанию (inventory/default).

    Здесь и далее в качестве примера для развертывания используется директория inventory/demo. При необходимости переопределите значение.
    ~/installer$ mkdir inventory/demo
  3. Подготовьте файл 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

Настройка переменных окружения

Выполните шаги:

  1. Установите значения для необходимых переменных окружения в файле .envrc.

  2. Настройте переменную окружения ANSIBLE_INVENTORY, указав через запятую сначала файл по умолчанию, а затем inventory/demo (например: ANSIBLE_INVENTORY="inventory/default,inventory/demo").

Установка из репозитория (apt/rpm)

В случае использования APT-репозитория выполните шаги:

  1. В OSMAX_APT_REPOSITORY, OSMAX_REPOSITORY_USER и OSMAX_REPOSITORY_PASSWORD укажите информацию для доступа к репозиторию продукта Осмакс (например: OSMAX_APT_REPOSITORY=artifacts.inno.tech/repository/osmax-astra-apt-packages/).

  2. В ELLES_APT_REPOSITORY, ELLES_REPOSITORY_USER и ELLES_REPOSITORY_PASSWORD укажите информацию для доступа к репозиторию продукта Эллес (например: ELLES_APT_REPOSITORY=artifacts.inno.tech/repository/elles-astra-apt-packages/).

В случае использования RPM-репозитория выполните шаги:

  1. В OSMAX_YUM_REPOSITORY, OSMAX_REPOSITORY_USER и OSMAX_REPOSITORY_PASSWORD укажите информацию для доступа к репозиторию продукта Осмакс (например: OSMAX_YUM_REPOSITORY=artifacts.inno.tech/repository/osmax-redos-yum-packages/7/noarch/).

  2. В 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/).

Установка из локальных пакетов (опционально)

Данный вариант установки является опциональным.

Выполните шаги:

  1. В OSMAX_INSTALLATION_TYPE задайте значение local.

  2. В ELLES_INSTALLATION_TYPE задайте значение file.

Версии пакетов в файле .envrc должны совпадать с версиями загруженными в директорию локальных пакетов (data/default/files/…​).

Установка из локальных пакетов и без использования root (опционально)

Данный вариант установки является опциональным.

Выполните шаги:

  1. Создайте отдельного сервисного локального пользователя (в качестве примера указан пользователь osmax-user) на сервере, где будет производиться установка модулей продукта (серверы групп osmax_server, guacamole_server), выполнив команду:

    sudo useradd -m osmax-user

    Где флаг -m указывает на то, что для нового пользователя будет создан домашний каталог /home/osmax-user.

  2. Включите режим "linger", который позволит процессам пользователя продолжать работать даже после того, как он вышел из системы, выполнив команду:

    sudo loginctl enable-linger osmax-user
  3. Создайте каталог /app/osmax, в который будет установлен продукт Осмакс, выполнив команду:

    sudo mkdir -p /app/osmax

    Где флаг -p позволяет создать промежуточные директории, если они не существуют. Если каталог уже существует, команда не вызовет ошибки.

  4. Предоставьте пользователю права владельца и группу для каталога /app/osmax, а также всех его подкаталогов и файлов, выполнив команду:

    sudo chown -R osmax-user:osmax-user /app/osmax
    Для организации подключения под этим пользователем см. раздел «Настройка окружения».
  5. Настройте SSH-доступ с устройства, на котором будет запускаться инсталлятор:

    mkdir -p /home/osmax-user/.ssh
    echo "your ssh key" | sudo tee /home/osmax-user/.ssh/authorized_keys
  6. Чтобы запуск компонентов продукта был произведен под этим пользователем (osmax-user) и в требуемые каталоги (/app/osmax/*), выполните настройки в файлах inventory:

    В инвентори-файле (inventory) необходимо заменить имя <demo>.
    1. В файле 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
    2. В файле 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
    3. В файле 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
    4. В файле inventory/<demo>/group_vars/all/lcm_integration.yml:

         osmax_integration__application_path: "/app/osmax/core"

Замена определенных по умолчанию образов Docker (опционально)

Данные настройки являются опциональными.
  1. В DOCKER_REGISTRY_MIRROR укажите информацию для доступа к локальному/proxy репозиторию Docker Registry (например: DOCKER_REGISTRY_MIRROR=registry.company.name:19200).

  2. Для замены образов контейнеров 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 выполните шаги:

  1. Скопируйте файл inventory/default/group_vars/all/lcm_integration.yml в inventory/<demo>/group_vars/all/lcm_integration.yml.

  2. Измените параметры в файле inventory/<demo>/group_vars/all/lcm_integration.yml.

  3. Настройте сторонний домен:

    1. Скопируйте Keytab-файл в data/default/files/osmax/keytab/<имя учётной записи>.keytab.

    2. Создайте файл inventory/<demo>/group_vars/all/samba_integration.yml:

        samba__domain: "MY.COMPANY.DOMAIN"

      Где samba__domain — FQDN вашего домена.

    3. Измените параметры в файле 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 — пароль от учётной записи.

    4. После выполнения проверки доступности перейдите к пункту «Выборочная установка» для установки продукта.

Пример файла .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

Запуск установки

Продукт может быть установлен одним из следующих способов:

Полная установка

Выполните установку, запустив плейбук (playbook) install.yml:

~/installer$ ansible-playbook install.yml

Выборочная установка (опционально)

Помимо полной установки, вы также можете установить отдельные компоненты. Для этого выполните шаги:

  1. Установите РostgreSQL, Kafka и GUI, выполнив команду:

    ~/installer$ ansible-playbook install_services.yml
  2. Установите модуль координации (saltstack), выполнив команду:

    ~/installer$ ansible-playbook install_saltstack.yml
  3. Установите основные модули продукта (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