Примеры настройки окружения

Раздел включает примеры установки и настройки программного обеспечения:

Установка и настройка MinIO

Подробную информацию о работе с MinIO см. в официальной документации.
  1. Скачайте MinIO для вашего дистрибутива по ссылке:

    • Astra Linux

    • РЕД ОС

    https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20250408154124.0.0_amd64.deb
    https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20250408154124.0.0-1.x86_64.rpm

    При наличии выхода в Интернет воспользуйтесь автоматической установкой и пропустите шаги 2-3:

    • Astra Linux

    • РЕД ОС

    sudo apt install wget -y
    
    wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20250408154124.0.0_amd64.deb -O minio.deb
    
    sudo dpkg -i minio.deb
    sudo dnf install wget -y
    
    wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20250408154124.0.0-1.x86_64.rpm -O minio.rpm
    
    sudo dnf install minio.rpm
  2. Перенесите на сервер скачанный пакет minio_*.deb.

  3. Установите пакет minio_*.deb. Пример команды установки пакета из директории /home/admin:

    • Astra Linux

    • РЕД ОС

    sudo apt install /home/admin/minio_*.deb -y
    sudo dnf install /home/admin/minio-*.rpm -y
  4. Откройте текстовый редактор nano с файлом конфигурации юнита systemd для службы MinIO, выполнив команду:

    sudo nano /usr/lib/systemd/system/minio.service
  5. В файле конфигурации юнита задайте параметры, необходимые для управления службой MinIO.

    Пример файла:

    [Unit]
    Description=MinIO
    Documentation=https://min.io/docs/minio/linux/index.html
    Wants=network-online.target
    After=network-online.target
    AssertFileIsExecutable=/usr/local/bin/minio
    
    [Service]
    WorkingDirectory=/usr/local
    
    User=minio-user
    Group=minio-user
    ProtectProc=invisible
    
    EnvironmentFile=-/etc/default/minio
    ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
    ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
    
    # Let systemd restart this service always
    Restart=always
    
    # Specifies the maximum file descriptor number that can be opened by this process
    LimitNOFILE=65536
    
    # Specifies the maximum number of threads this process can create
    TasksMax=infinity
    
    # Disable timeout logic and wait until process is stopped
    TimeoutStopSec=infinity
    SendSIGKILL=no
    
    [Install]
    WantedBy=multi-user.target
    
    # Built for ${project.name}-${project.version} (${project.name})
  6. Создайте группу с именем minio-user, выполнив команду:

    sudo groupadd -r minio-user
  7. Создайте пользователя с именем minio-user, выполнив команду:

    sudo useradd -M -r -g minio-user minio-user
  8. Задайте пароль для пользователя minio-user, выполнив команду:

    sudo passwd minio-user
  9. Создайте каталог для данных MinIO, выполнив команду:

    sudo mkdir -p /opt/minio/data
  10. Задайте владельца и группу для каталога /opt/minio/ и всех его подкаталогов и файлов, выполнив команду:

    sudo chown -R minio-user: /opt/minio/
  11. В файле /etc/default/minio добавьте строки:

    MINIO_ROOT_USER=myminioadmin
    MINIO_ROOT_PASSWORD=minio-secret-key-change-me
    
    MINIO_VOLUMES="/opt/minio/data"
    
    MINIO_OPTS="--console-address :9001"
    Измените переменные MINIO_ROOT_USER и MINIO_ROOT_PASSWORD, указав учетную запись суперпользователя MinIO с неограниченными правами.
  12. Разрешите автозагрузку и запустите сервис, выполнив команду:

    systemctl enable --now minio
  13. Проверьте статус службы, выполнив команду:

    systemctl status minio
  14. Перейдите в WEB-интерфейс, используя <IP>:9001.

  15. Войдите в систему под учетной записью администратора, указанной в /etc/default/minio.

  16. На вкладке меню Buckets создайте бакеты:

    • multimedia-bucket;

    • os-distributives-bucket;

    • os-installation-iso-images-bucket;

    • salt-bucket;

    • script-bucket;

    • icons-bucket;

    • images-bucket;

    • others-bucket;

    • bootloader-bucket.

Установка и настройка Apache Kafka

Подробную информацию о работе с Apache Kafka см. в официальной документации.
  1. Для работы с Apache Kafka установите Java JDK версии 17, выполнив команду:

    • Astra Linux

    • РЕД ОС

    sudo apt install openjdk-17-jdk -y
    sudo dnf install java-17-openjdk -y

    Проверьте установленную версию Java, выполнив команду:

    java -version
  2. Скачайте Apache Kafka и скопируйте архив на целевой сервер. Используйте ссылку для скачивания:

    https://www.apache.org/dyn/closer.cgi?path=/kafka/4.0.0/kafka_2.13-4.0.0.tgz
  3. Создайте директорию для Apache Kafka, выполнив команду:

    sudo mkdir /opt/kafka
  4. Перейдите в директорию с архивом на целевом сервере и распакуйте архив, выполнив команду:

    sudo tar -xzvf kafka_*.tgz -C /opt/kafka --strip 1
  5. Создайте пользователя Apache Kafka, выполнив команду:

    sudo useradd -r -m -U -d /opt/kafka -s /bin/false kafka
  6. Назначьте пользователя Apache Kafka владельцем каталогов, выполнив команду:

    sudo chown -R kafka:kafka /opt/kafka/ /tmp/kraft-combined-logs/
  7. Перейдите в директорию с Apache Kafka, выполнив команду:

    cd /opt/kafka
  8. В конфигурационном файле /opt/kafka/config/server.properties задайте параметры:

    # FQDN сервера Apache Kafka и порт (порт по умолчанию: `9093`),
    # которые будут использоваться для связи между контроллерами
    controller.quorum.bootstrap.servers=<servername.domain>:9093
    
    # Cписок IP-адресов и портов, на которых Kafka будет слушать входящие соединения.
    # В тестовых целях можно указать значение `0.0.0.0`
    listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
    
    # FQDN сервера Apache Kafka для клиентов и других компонентов кластера, чтобы они
    # могли подключаться к этому брокеру сообщений
    advertised.listeners=PLAINTEXT://<servername.domain>:9092,CONTROLLER://<servername.domain>:9093
  9. Сгенерируйте UUID, выполнив команду:

    ./bin/kafka-storage.sh random-uuid

    Пример вывода:

    DXL_pFQjQkKoCMjCsNYGTg
  10. Отформатируйте каталоги журналов, выполнив команду:

    ./bin/kafka-storage.sh format --standalone -t <random-uuid> -c config/server.properties

    Вместо <random-uuid> вставьте значение, полученное при выполнении команды из п. 8, например:

    ./bin/kafka-storage.sh format --standalone -t DXL_pFQjQkKoCMjCsNYGTg -c config/server.properties

    Пример результата:

    Formatting dynamic metadata voter directory /tmp/kraft-combined-logs with metadata.version 4.0-IV3.
  11. Создайте Unit-файл для Apache Kafka, выполнив команду:

    sudo nano /etc/systemd/system/kafka.service

    Пример файла:

    [Unit]
    Description=Apache Kafka Server (KRaft mode)
    After=network.target
    
    [Service]
    Type=simple
    User=kafka
    ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
    Restart=on-failure
    RestartSec=10
    LimitNOFILE=100000
    
    [Install]
    WantedBy=multi-user.target
  12. Запустите службы, выполнив команду:

    sudo systemctl daemon-reload && sudo systemctl enable --now kafka
  13. Проверьте статус службы Apache Kafka, выполнив команду:

    systemctl status kafka
  14. Проверьте работу порта Apache Kafka, выполнив команду:

    ss -tunlp | grep :9092
  15. Создайте топики, выполнив команды:

    /opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic salt-topic
    /opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic provisioner-topic
    /opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic provisioner-dlq-topic
    /opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic osmax-core.os.reinstallation.machines
    /opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic osmax-provisioner.os.reinstallation.machines.registration.statuses

Установка и настройка PostgreSQL

Установите PostgreSQL, выполнив команды:

  • Astra Linux

  • РЕД ОС

apt install postgresql
Версия PostgreSQL 15 доступна, начиная с версии Astra Linux 1.8 и выше.
# установка пакета
dnf install postgresql15-server postgresql15-contrib -y

# инициализация БД
postgresql-15-setup initdb

# добавление в автозагрузку и запуск службы
systemctl enable postgresql-15.service --now

# проверка работы сервиса
systemctl status postgresql-15.service
Пример установки конкретной версии для других систем, например: Debian или Ubuntu, см. по ссылке.

Ниже рассмотрен пример настройки БД.

  1. Зайдите в оболочку PostgreSQL, выполнив команду:

    sudo -u postgres psql
  2. Выполните действия:

    1. Создайте пользователей:

      • osmax_rw  — полные права на БД модуля osmax-core, где rw — read, write;

      • osmax_ro  — права на чтение БД модуля osmax-core, где ro — read only;

      • osmax_provisioner_rw  — полные права на БД модуля osmax-provisioner, где rw — read, write.

        Пример команд:

        CREATE ROLE osmax_rw LOGIN PASSWORD 'YourStrongPassword123';
        CREATE ROLE osmax_ro LOGIN PASSWORD 'YourStrongPassword123';
        CREATE ROLE osmax_provisioner_rw LOGIN PASSWORD 'YourStrongPassword123';
        CREATE ROLE guacamole_admin LOGIN PASSWORD 'YourStrongPassword123';
    2. Создайте БД:

      • osmax_db — БД модуля osmax-core;

      • osmax_provisioner_db — БД модуля osmax-provisioner.

        Пример команд создания БД и назначения соответствующих пользователей владельцами:

        CREATE DATABASE osmax_db OWNER osmax_rw;
        CREATE DATABASE osmax_provisioner_db OWNER osmax_provisioner_rw;
        CREATE DATABASE guacamole_db OWNER guacamole_admin;
    3. Выдайте все права на БД владельцам БД.

      Пример команд:

      GRANT ALL PRIVILEGES ON DATABASE osmax_db TO osmax_rw;
      GRANT ALL PRIVILEGES ON DATABASE osmax_provisioner_db TO osmax_provisioner_rw;
      GRANT ALL PRIVILEGES ON DATABASE guacamole_db TO guacamole_admin;
    4. Выйдите из оболочки PostgreSQL, выполнив команду:

      \q
  3. Подключитесь к БД osmax_db под пользователем osmax_rw, выполнив команду:

    psql -h localhost -d osmax_db -U osmax_rw -p 5432
  4. Выполните действия:

    1. Создайте схемы БД, выполнив команду:

      CREATE SCHEMA IF NOT EXISTS osmax_schema AUTHORIZATION osmax_rw;
    2. Выдайте права подключения к БД пользователю read only, выполнив команду:

      GRANT CONNECT ON DATABASE osmax_db TO osmax_ro;
    3. Выдайте права на использование схемы пользователю read only, выполнив команду:

      GRANT USAGE ON SCHEMA osmax_schema TO osmax_ro;
    4. Выдайте права по умолчанию пользователю osmax_rw в схеме и выдайте права на использование SELECT для пользователя read only, выполнив команду:

      ALTER DEFAULT PRIVILEGES FOR USER osmax_rw IN SCHEMA osmax_schema GRANT SELECT ON TABLES TO osmax_ro;
    5. Задайте путь поиска к схеме, выполнив команду:

      ALTER USER osmax_rw SET search_path = osmax_schema, public;
    6. Выйдите из оболочки PostgreSQL, выполнив команду:

      \q
  5. Подключитесь к БД osmax_db под пользователем osmax_ro, выполнив команду:

    psql -h localhost -d osmax_db -U osmax_ro -p 5432
  6. Выполните команду установки search_path к созданной схеме, выполнив команду:

    ALTER USER osmax_ro SET search_path = osmax_schema, public;
    1. Выйдите из оболочки PostgreSQL, выполнив команду:

      \q
  7. Подключитесь к БД osmax_provisioner_db под пользователем osmax_provisioner_rw, выполнив команду:

    psql -h localhost -d osmax_provisioner_db -U osmax_provisioner_rw -p 5432
  8. Выполните следующие действия для модуля osmax-provisioner:

    1. Создайте схему osmax_provisioner_schema, выполнив команду:

      CREATE SCHEMA IF NOT EXISTS osmax_provisioner_schema AUTHORIZATION osmax_provisioner_rw;
    2. Выдайте права использования схемы пользователю, выполнив команду:

      GRANT USAGE ON SCHEMA osmax_provisioner_schema TO osmax_provisioner_rw;
    3. Задайте путь поиска к схеме, выполнив команду:

      ALTER USER osmax_provisioner_rw SET search_path = osmax_provisioner_schema, public;
    4. Выйдите из оболочки PostgreSQL, выполнив команду:

      \q
  9. Подключитесь к БД guacamole_admin под пользователем guacamole_admin, выполнив команду:

    psql -h localhost -d guacamole_db -U guacamole_admin -p 5432
  10. Выполните следующие действия для БД модуля «Удаленный доступ»:

    1. Создайте схему guacamole_schema, выполнив команду:

      CREATE SCHEMA IF NOT EXISTS guacamole_schema AUTHORIZATION guacamole_admin;
    2. Выдайте права использования схемы пользователю, выполнив команду:

      GRANT USAGE ON SCHEMA guacamole_schema TO guacamole_admin;
    3. Задайте путь поиска к схеме, выполнив команду:

      ALTER USER guacamole_admin SET search_path = guacamole_schema, public;
    4. Выйдите из оболочки PostgreSQL, выполнив команду:

      \q