База знаний VMmanager

Как создать собственный репозиторий скриптов?

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

Порядок добавления

Чтобы создать собственный репозиторий скриптов:

  1. На сервере для репозитория:
    1. Установите и настройте веб-сервер.
    2. Создайте директорию для репозитория. Директория должна быть доступна для внешних подключений по HTTP. Например, /var/www/html/recipes/.
    3. Скопируйте файлы скриптов в директорию для репозитория.
    4. Создайте в директории для репозитория файл metadata.json с описанием скриптов: 

      Пример файла metadata.json
      {
        "type": "recipe",
        "recipe": [
          {
            "name": "ForLinux",
            "tags": [
              "linux"
            ],
            "description": "script1",
            "file_name": "script1.sh",
            "updated_at": "2020-05-15 12:01:12"
          },
          {
            "name": "ForWindows",
            "tags": [
              "windows"
            ],
            "description": "script2",
            "file_name": "script2.ps",
            "updated_at": "2022-04-14 07:57:13"
          }
        ]
      }
      Пояснения к файлу
  2. Получите токен авторизации:
    curl -k -X POST -H "accept: application/json" -H "Content-Type: application/json" 'https://domain.com/api/auth/v4/public/token' -d '{"email": "admin_email", "password": "admin_pass"}'
    Пояснения к команде

    В ответ придёт сообщение вида:

    Пример ответа в JSON
    {
      "confirmed": true,
      "expires_at": null,
      "id": "6",
      "token": "4-e9726dd9-61d9-2940-add3-914851d2cb8a"
    }

    Сохраните полученное значение параметра token — токен авторизации.

  3. Выполните API-запрос для создания репозитория в платформе: 

    curl -H 'x-xsrf-token: <token>' -X POST https://localhost/vm/v3/repository -d '{"name":"<repo_name>","url":"<repo_url"}'
    Пояснения к команде

Проверка добавления

  1. Подключитесь к серверу с платформой по SSH.
  2. Запросите список репозиториев:

    В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:

    • VMmanager Hosting — MySQL;
    • VMmanager Infrastructure:
      • для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
      • в остальных случаях — MySQL.

    Чтобы определить тип СУБД, выполните на сервере с платформой команду: 

    docker ps --filter name=pgsql
    Пример ответа
    CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS      NAMES
    3213c5dc94d0   postgres:12   "docker-entrypoint.s…"   5 days ago   Up 4 days   5432/tcp   pgsql

    Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.

     
    MySQL
    docker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD -e \"SELECT name,url FROM vm_repository WHERE type='recipe';\""
    PostgreSQL
    docker exec -it pgsql bash -c "psql -d isp -c \"SELECT name,url FROM vm_repository WHERE type='recipe';\" "
    Пример вывода
    +-------------------+-------------------------------------------------------+
    | name              | url                                                   |
    +-------------------+-------------------------------------------------------+
    | recipe_repository | http://download.ispsystem.com/OSTemplate/vm6/recipes/ |
    | My repo           | http://example.com/recipes/                           | 
    +----+-------------------+--------+-----------------------------------------+
  3. В интерфейсе платформы:
    1. Проверьте отображение скриптов из добавленного репозитория.
    2. Запустите скрипт из репозитория на ВМ.

Обновление списка скриптов

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

  1. Получите токен авторизации:
    curl -k -X POST -H "accept: application/json" -H "Content-Type: application/json" 'https://domain.com/api/auth/v4/public/token' -d '{"email": "admin_email", "password": "admin_pass"}'
    Пояснения к команде

    В ответ придёт сообщение вида:

    Пример ответа в JSON
    {
      "confirmed": true,
      "expires_at": null,
      "id": "6",
      "token": "4-e9726dd9-61d9-2940-add3-914851d2cb8a"
    }

    Сохраните полученное значение параметра token — токен авторизации.

  2. Выполните API-запрос:

    curl -H 'x-xsrf-token: <token>' -X POST "https://domain.com/vm/v3/repository/<repo_id>/update" -d ''
    
    Пояснения к команде