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

Установка

Важно

Сначала необходимо произвести настройку окружения. Все команды выполняются только от суперпользователя.

Режим суперпользователя:

sudo -i
  1. Перед началом установки сохраните список установленных ранее пакетов, это позволит Вам безболезненно восстановить систему в случае ее повреждения. Для этого выполните следующие команды:

    mkdir -p /tmp/rollback/applevel
    pip3 freeze > /tmp/rollback/applevel/pip_before.txt
    

    После чего в каталоге /tmp/rollback/applevel будет находиться файл pip_before.txt с перечнем установленных приложений.

  2. Установите пакет AppLevel:

    • из репозитория Python-пакетов:

      pip3 install applevel
      
  3. Сохраните список установленных пакетов после установки для возможности отката изменений:

    pip3 freeze > /tmp/rollback/applevel/pip_after.txt
    

Настройка

  1. Установите необходимые системные пакеты:

    apt install qemu-kvm  qemu-utils virtinst libguestfs-tools virt-* mariadb-server python-pymysql rabbitmq-server
    
  2. Создайте пользователя с именем aos:

    adduser --home /home/aos aos
    
  3. Создайте каталог для логов с нужными правами:

    mkdir -p /var/log/aos/applevel
    chown -R aos:aos /var/log/aos/applevel
    
  4. Создайте рабочий каталог с нужными правами:

    mkdir /var/lib/applevel
    chown -R aos:aos /var/lib/applevel
    
  5. Создайте каталог для конфигурационных файлов с нужными правами:

    mkdir /etc/aos
    chown -R aos:aos /etc/aos
    
  6. Создайте файл /etc/sudoers.d/applevel для разрешения выполнения команд без ввода пароля:

    # Allow run applevel commands without password
    aos ALL = NOPASSWD: /usr/bin/virt-tar-in, /usr/bin/virt-tar-out, /usr/bin/qemu-img, /usr/bin/virt-customize, /usr/bin/virt-win-reg, /usr/bin/guestmount, /usr/bin/virt-copy-in, /usr/bin/virt-copy-out, /usr/bin/virt-install, /usr/bin/virt-diff, /bin/tar
    
  7. Для пользователя aos создайте файл .ssh/config и настройте через него беспарольный доступ до всех хостов, с которыми планируется работа. Пример настройки:

    Host *.stand.loc
      User root
      IdentityFile ~/.ssh/stand
    
    
    Host 10.40.*
      User root
      IdentityFile ~/.ssh/stand
    
  8. Выполните команду applevel-configure для создания файла конфигурации и файлов служб systemd:

    applevel-configure
    
  9. Отредактируйте секцию [DEFAULT] конфигурационного файла etc/aos/applevel.conf, например:

    [DEFAULT]
    log_level = INFO
    work_dir = /var/lib/applevel
    db_url = mysql+pymysql://aos:password@localhost:3306/applevel
    broker_url = amqp://aos:password@localhost:5672/aos
    
  10. Создайте базу данных на примере MySQL, настройте права, тип базы и остальные параметры:

    # Зайдите в базу данных, используя пароль пользователя root
    mysql -uroot -p
    # Создайте базу данных applevel
    CREATE DATABASE applevel;
    # Дайте права на чтение, редактирование, выполнение любых действий над всеми таблицами базы данных applevel
    GRANT ALL PRIVILEGES ON applevel.* TO 'aos'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON applevel.* TO 'aos'@'%' IDENTIFIED BY 'password';
    # Осуществите выход из базы данных
    
  11. Настройте брокер сообщений RabbitMQ Server:

    rabbitmqctl add_user aos password
    rabbitmqctl add_vhost aos
    rabbitmqctl set_permissions -p aos aos ".*" ".*" ".*"
    rabbitmqctl set_permissions aos ".*" ".*" ".*"
    
  12. Добавьте пользователю в RabbitMQ права на виртуальные хосты служб Openstack (по умолчанию /):

    rabbitmqctl set_permissions -p / aos ".*" ".*" ".*"
    
  13. Выполните миграцию базы данных:

    FLASK_APP=applevel flask db upgrade
    
  14. Запустите команду для сбора статических файлов:

    FLASK_APP=applevel flask collect
    
  15. Включите и запустите службы systemd:

    systemctl daemon-reload
    systemctl enable applevel.service applevel-worker.service
    systemctl start applevel.service applevel-worker.service
    
  16. Создайте конфигурационный файл веб-сервера.

    Важно

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

    • Настройка Apache:

      Listen 8081
      <VirtualHost *:8081>
          ErrorLog /var/log/apache2/applevel.log
          CustomLog /var/log/apache2/applevel-access.log combined
      
          ProxyPreserveHost On
      
          ProxyPass /static/ !
          ProxyPass /gold/ !
          ProxyPass /backup/ !
          ProxyPass / http://127.0.0.1:8000/
          ProxyPassReverse / http://127.0.0.1:8000/
      
      
          Alias /static /var/lib/applevel/static
          Alias /gold /var/lib/applevel/gold
          Alias /backup /var/lib/applevel/backup
      
          <Directory /var/lib/applevel/static>
              Require all granted
          </Directory>
      
          <Directory /var/lib/applevel/gold>
              Require all granted
          </Directory>
      
          <Directory /var/lib/applevel/backup>
              Require all granted
          </Directory>
      
      </VirtualHost>
      
    • Настройка Nginx:

      server {
          listen 80;
          server_name  applevel.accentos.loc;
          access_log  /var/log/nginx/applevel.log;
          error_log /var/log/nginx/applevel.log;
          client_max_body_size 0;
          client_body_timeout 6000;
          client_header_timeout 6000;
      
          location / {
              proxy_pass http://127.0.0.1:8000;
          }
      
          location /static/ {
              alias /var/lib/applevel/static/;
          }
      
          location /gold/ {
              alias /var/lib/applevel/gold/;
          }
      
          location /backup/ {
              alias /var/lib/applevel/backup/;
          }
      }
      
  17. На всех хостах установите необходимые пакеты:

    apt install libguestfs-tools python3-guestfs
    pip3 install virt-extract
    

Файл конфигурации

Конфигурационный файл представлен в ini формате и состоит из следующих секций и параметров:

Секция Параметр Описание Значение по умолчанию
DEFAULT log_level Уровень логирования. INFO
DEFAULT api_logfile Путь до лог файла службы applevel. /var/log/aos/applevel/api.log
DEFAULT work_dir Рабочий каталог. /var/lib/applevel
DEFAULT db_url Настройка подключения к базе данных. mysql+pymysql://aos:password@localhost:3306/applevel
DEFAULT broker_url Настройка подключения к брокеру сообщений amqp://guest:guest@localhost:5672//

Примечание

Для сборки слоев с Windows необходимо:

  1. Перейти в папку cd /usr/lib/x86_64-linux-gnu/perl5/5.28/Win/Hivex.

  2. Скачать необходимый патч.

  3. Применить скачанный патч командами:

    patch -p1 < Regedit.patch