diff --git a/docs/app-developer-guide/index.md b/docs/app-developer-guide/index.md index 4c6216f0..4272d8bb 100644 --- a/docs/app-developer-guide/index.md +++ b/docs/app-developer-guide/index.md @@ -75,7 +75,7 @@ To follow this walkthrough, you need a running Exordos installation and the nece **Exordos** — you can use either: - A **public Exordos installation** — hosted at [genesis-core.tech](https://genesis-core.tech). No setup required; just create an account and start using the platform. -- A **private Exordos installation** — your own self-hosted instance. This document describes how to set one up: [Setting up a private installation](../admin-guide/index.md). +- A **private Exordos installation** — your own self-hosted instance. This document describes how to set one up: [Local Deployment](../usage/local_deployment.md). Install the necessary tools below. @@ -160,5 +160,5 @@ The ToDo API is now available at the configured endpoint. Once you're comfortable with the basics, explore the more in-depth topics below. - [Writing a manifest from scratch](../misc/manifests.md) — understand the full manifest specification and author one by hand without relying on the `genesis init` wizard. -- [Setting up a private platform installation](../admin-guide/index.md) — spin up your own Exordos Core instance to develop and test your elements end-to-end without connecting to a remote environment. +- [Setting up a private platform installation](../usage/local_deployment.md) — spin up your own Exordos Core instance to develop and test your elements end-to-end without connecting to a remote environment. - [Public Exordos installation](https://genesis-core.tech) — use the hosted Exordos platform without managing your own infrastructure. diff --git a/docs/app-developer-guide/index.ru.md b/docs/app-developer-guide/index.ru.md index 0eeaa43e..24ff8f33 100644 --- a/docs/app-developer-guide/index.ru.md +++ b/docs/app-developer-guide/index.ru.md @@ -75,7 +75,7 @@ genesis elements install **Exordos** — вы можете использовать: - **Публичную установку Exordos** — размещённую на [genesis-core.tech](https://genesis-core.tech). Не требуется настройка; просто создайте аккаунт и начните использовать платформу. -- **Приватную установку Exordos** — ваш собственный self-hosted экземпляр. Этот документ описывает, как его настроить: [Настройка приватной установки](../admin-guide/index.ru.md). +- **Приватную установку Exordos** — ваш собственный self-hosted экземпляр. Этот документ описывает, как его настроить: [Локальное развёртывание](../usage/local_deployment.ru.md). Установите необходимые инструменты ниже. @@ -160,5 +160,5 @@ ToDo API теперь доступен по настроенной конечн Когда вы освоитесь с основами, изучите более углублённые темы ниже. - [Написание манифеста с нуля](../misc/manifests.ru.md) — изучите полную спецификацию манифеста и создайте его вручную без помощи мастера `genesis init`. -- [Настройка приватной установки платформы](../admin-guide/index.ru.md) — разверните собственный экземпляр Exordos Core для разработки и тестирования ваших элементов end-to-end без подключения к удалённому окружению. +- [Настройка приватной установки платформы](../usage/local_deployment.ru.md) — разверните собственный экземпляр Exordos Core для разработки и тестирования ваших элементов end-to-end без подключения к удалённому окружению. - [Публичная установка Exordos](https://genesis-core.tech) — используйте размещённую Exordos-платформу без управления собственной инфраструктурой. diff --git a/docs/index.md b/docs/index.md index d19bd575..aef62dd5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -43,10 +43,13 @@ Documentation for security engineers. Special focus on IAM and user management, [Go to the guide →](security-guide/index.md) +## 🌐 Ecosystem + ## 📎 Miscellaneous Additional reference materials for the platform: +- [Local Deployment](usage/local_deployment.md) — deploying a local installation of the platform on a single host. - [Manifests](misc/manifests.md) — manifest format specification and examples. - [API Reference](misc/api-reference.md) — full HTTP API reference for platform services. - [CLI Reference](misc/cli-reference.md) — complete reference for the Exordos CLI tool. diff --git a/docs/index.ru.md b/docs/index.ru.md index 32940928..d269ff4d 100644 --- a/docs/index.ru.md +++ b/docs/index.ru.md @@ -43,10 +43,13 @@ curl -fsSL https://repository.genesis-core.tech/install.sh | sudo sh [Перейти к руководству →](security-guide/index.ru.md) +## 🌐 Экосистема + ## 📎 Прочее Дополнительные справочные материалы по платформе. +- [Локальное развёртывание](usage/local_deployment.ru.md) — развёртывание локальной инсталляции платформы на одной хост-машине. - [Манифесты](misc/manifests.ru.md) — спецификация формата манифеста и примеры. - [Справочник по API](misc/api-reference.ru.md) — полный справочник по HTTP API сервисов платформы. - [Справочник по CLI](misc/cli-reference.ru.md) — полный справочник по инструменту Exordos CLI. diff --git a/docs/usage/basic_usage.md b/docs/usage/basic_usage.md deleted file mode 100644 index 3a4512b5..00000000 --- a/docs/usage/basic_usage.md +++ /dev/null @@ -1,185 +0,0 @@ -# Basic usage - -This guide describes how to install and use Exordos Core on existing infrastructure. The existing infrastructure can be a local machine or several servers. -It's assumed Linux(Ubuntu) is used as the OS on your machines. - -## Requirements - -Before you install and use exordos core you need to install several requirements: - -### Packages - -Install necessary packages: - -#### Ubuntu - -Install packages - -```bash -sudo apt update -sudo apt install qemu-kvm qemu-utils libvirt-daemon-system libvirt-dev mkisofs -y -``` - -Add user to group - -```bash -sudo adduser $USER libvirt -sudo adduser $USER kvm -``` - -### Libvirt - -Create a libvirt storage pool or use `default` if it already exists. - -Check pools: - -```bash -sudo virsh pool-list --all -``` - -Create a new pool if no one exists or you would like to use another one. - -```bash -sudo virsh pool-define-as default dir --target "/var/lib/libvirt/images/" -sudo virsh pool-build default -sudo virsh pool-start default -sudo virsh pool-autostart default -``` - -Check the status with virsh-info: - -```bash -sudo virsh pool-info default -``` - -## Installation - -The simplest way to install Exordos Core is to get a prebuilt virtual machine image with all necessary dependencies. Take the the [latest image here](http://repository.genesis-core.tech:8081/exordos-core/latest/exordos-core.qcow2). - -### Local machine / Development - -Install Exordos DevTools first. For more information about it, see [Exordos DevTools](https://github.com/infraguys/genesis_devtools). The devtools allows to build and run the exordos core locally. Since we already downloaded the latest image, we don't need to build it from scratch but if you need to build an image from source look at the [instructions here](https://github.com/infraguys/genesis_devtools?tab=readme-ov-file#build). - -The devtools has `bootstrap` command that will start the Exordos Core locally. - -```bash -genesis bootstrap -i exordos-core.raw -m core -``` - -For more information about the `bootstrap` command, see [instructions here](https://github.com/infraguys/genesis_devtools?tab=readme-ov-file#bootstrap). - -The installation is ready at address `10.20.0.2` but at this time it's not very useful since it cannot run any workload. Let's add a local machine as a hypervisor to solve this problem. - -#### Get admin token - -Before we can add a hypervisor, we need to get an admin token. The command to get the token is: - -```bash -curl --location 'http://10.20.0.2:11010/v1/iam/clients/00000000-0000-0000-0000-000000000000/actions/get_token/invoke' \ - --header 'Content-Type: application/x-www-form-urlencoded' \ - --data-urlencode 'grant_type=password' \ - --data-urlencode 'username=' \ - --data-urlencode 'password=' \ - --data-urlencode 'client_id=GenesisCoreClientId' \ - --data-urlencode 'client_secret=GenesisCoreClientSecret' \ - --data-urlencode 'scope=' \ - --data-urlencode 'ttl=86400' -``` - -The return value is `json` object with the `access_token` field. Copy the token and use it in the next steps. - -#### Add hypervisor - -##### Libvirt via SSH (preffered) - -Create key in exordos core's VM for root user: - -```console -# ssh-keygen -``` - -Copy public key to hypervisor (recommended user is `ubuntu`) - -##### Libvirt via TCP connect - -We need to get access to libvirt via a tcp connection. By default the tcp connection is closed, so we need to enable it. - -**NOTE:** For development purposes we can use raw tcp connection. Don't use it in production. - -Edit libvirt configuration file `/etc/libvirt/libvirtd.conf`, add these lines; - -```bash -listen_tcp = 1 -listen_addr = "0.0.0.0" -auth_tcp = "none" -``` - -Run commands to enable libvirt tcp connection: - -```bash -sudo systemctl stop libvirtd -sudo systemctl enable --now libvirtd-tcp.socket -sudo systemctl start libvirtd -``` - -Check the libvirt is listening the tcp socket: - -```bash -sudo systemctl status libvirtd.service -sudo systemctl status libvirtd.service | grep "libvirtd-tcp.socket" -``` - -##### Configure ZFS for storage - -It's recommended to create distinct dataset for zvols: - -```bash -zpool create rpool ... # create pool itself -zfs create -o volmode=dev rpool/disks -virsh pool-define-as --name rpool --source-name rpool/disks --type zfs -virsh pool-start rpool -virsh pool-autostart rpool -``` - -##### Config hypervisor in core - -Add the machine as a hypervisor, replace `XXXX` with the token from the previous step.: - -```bash -curl --location --globoff 'http://10.20.0.2:11010/v1/compute/hypervisors/' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer XXXX' \ ---data '{ - "driver_spec": { - "driver": "libvirt", - "iface_mtu": 1500, - "network_type": "network", - "network": "exordos-core-net", - "storage_pool": "default", // for qcow - "storage_pool": "rpool", // for ZFS - "connection_uri": "qemu+tcp://10.20.0.1/system", // for TCP connect - "connection_uri": "qemu+ssh://ubuntu@10.20.0.1:22/system?no_verify=1", // for SSH connect - "machine_prefix": "dev-" - }, - "avail_cores": 4, - "avail_ram": 4096, - "all_cores": 4, - "all_ram": 4096, - "status": "ACTIVE" -}' -``` - -- storage_pool - name of the libvirt storage pool to use. -- connection_uri - libvirt connection uri. If you need to add another machine use different ip address. -- all_cores - total number of cores you would like to allocate to the hypervisor. -- all_ram - total amount of ram you would like to allocate to the hypervisor. -- avail_cores - use the same value as `all_cores`. -- avail_ram - use the same value as `all_ram`. - -### Production - -The production installation guide will be added soon. - -## Usage - -Follow the [usage guide](https://github.com/infraguys/exordos_core/wiki/Usage) for more information. diff --git a/docs/usage/basic_usage.ru.md b/docs/usage/basic_usage.ru.md deleted file mode 100644 index af308a6b..00000000 --- a/docs/usage/basic_usage.ru.md +++ /dev/null @@ -1,185 +0,0 @@ -# Базовое использование - -Это руководство описывает, как установить и использовать Exordos Core на существующей инфраструктуре. Существующая инфраструктура может быть локальной машиной или несколькими серверами. -Предполагается, что на ваших машинах используется Linux (Ubuntu). - -## Требования - -Перед установкой и использованием Exordos Core необходимо установить несколько зависимостей: - -### Пакеты - -Установите необходимые пакеты: - -#### Ubuntu - -Установка пакетов - -```bash -sudo apt update -sudo apt install qemu-kvm qemu-utils libvirt-daemon-system libvirt-dev mkisofs -y -``` - -Добавьте пользователя в группы - -```bash -sudo adduser $USER libvirt -sudo adduser $USER kvm -``` - -### Libvirt - -Создайте пул хранения libvirt или используйте `default`, если он уже существует. - -Проверьте пулы: - -```bash -sudo virsh pool-list --all -``` - -Создайте новый пул, если ни один не существует, или если вы хотите использовать другой. - -```bash -sudo virsh pool-define-as default dir --target "/var/lib/libvirt/images/" -sudo virsh pool-build default -sudo virsh pool-start default -sudo virsh pool-autostart default -``` - -Проверьте статус с помощью virsh-info: - -```bash -sudo virsh pool-info default -``` - -## Установка - -Самый простой способ установки Exordos Core — получить готовый образ виртуальной машины со всеми необходимыми зависимостями. Возьмите [последний образ здесь](http://repository.genesis-core.tech:8081/exordos-core/latest/exordos-core.qcow2). - -### Локальная машина / Разработка - -Сначала установите Exordos DevTools. Для получения дополнительной информации о нём см. [Exordos DevTools](https://github.com/infraguys/genesis_devtools). Этот инструмент позволяет собирать и запускать exordos core локально. Поскольку мы уже загрузили последний образ, нам не нужно собирать его с нуля, но если вам нужно собрать образ из исходников, смотрите [инструкции здесь](https://github.com/infraguys/genesis_devtools?tab=readme-ov-file#build). - -У инструмента devtools есть команда `bootstrap`, которая запустит Exordos Core локально. - -```bash -genesis bootstrap -i exordos-core.raw -m core -``` - -Для получения дополнительной информации о команде `bootstrap` см. [инструкции здесь](https://github.com/infraguys/genesis_devtools?tab=readme-ov-file#bootstrap). - -Установка доступна по адресу `10.20.0.2`, но на данный момент она не очень полезна, так как не может запускать рабочие нагрузки. Давайте добавим локальную машину в качестве гипервизора, чтобы решить эту проблему. - -#### Получение токена администратора - -Прежде чем мы сможем добавить гипервизор, нам нужно получить токен администратора. Команда для получения токена: - -```bash -curl --location 'http://10.20.0.2:11010/v1/iam/clients/00000000-0000-0000-0000-000000000000/actions/get_token/invoke' \ - --header 'Content-Type: application/x-www-form-urlencoded' \ - --data-urlencode 'grant_type=password' \ - --data-urlencode 'username=<ВАШЕ_ADMIN_ИМЯ>' \ - --data-urlencode 'password=<ВАШ_ADMIN_ПАРОЛЬ>' \ - --data-urlencode 'client_id=GenesisCoreClientId' \ - --data-urlencode 'client_secret=GenesisCoreClientSecret' \ - --data-urlencode 'scope=' \ - --data-urlencode 'ttl=86400' -``` - -Возвращаемое значение — это `json` объект с полем `access_token`. Скопируйте токен и используйте его на следующих шагах. - -#### Добавление гипервизора - -##### Libvirt через SSH (предпочтительно) - -Создайте ключ в виртуальной машине Exordos Core для пользователя root: - -```console -# ssh-keygen -``` - -Скопируйте публичный ключ на гипервизор (рекомендуемый пользователь — `ubuntu`) - -##### Libvirt через TCP соединение - -Нам нужен доступ к libvirt через TCP-соединение. По умолчанию TCP-соединение закрыто, поэтому нам нужно его включить. - -**ПРИМЕЧАНИЕ:** Для разработки мы можем использовать raw TCP-соединение. Не используйте его в production. - -Отредактируйте конфигурационный файл libvirt `/etc/libvirt/libvirtd.conf`, добавьте эти строки: - -```bash -listen_tcp = 1 -listen_addr = "0.0.0.0" -auth_tcp = "none" -``` - -Выполните команды для включения TCP-соединения libvirt: - -```bash -sudo systemctl stop libvirtd -sudo systemctl enable --now libvirtd-tcp.socket -sudo systemctl start libvirtd -``` - -Проверьте, что libvirt слушает TCP-сокет: - -```bash -sudo systemctl status libvirtd.service -sudo systemctl status libvirtd.service | grep "libvirtd-tcp.socket" -``` - -##### Настройка ZFS для хранения - -Рекомендуется создать отдельный датасет для zvols: - -```bash -zpool create rpool ... # создаём сам пул -zfs create -o volmode=dev rpool/disks -virsh pool-define-as --name rpool --source-name rpool/disks --type zfs -virsh pool-start rpool -virsh pool-autostart rpool -``` - -##### Конфигурация гипервизора в core - -Добавьте машину в качестве гипервизора, замените XXXX на токен из предыдущего шага: - -```bash -curl --location --globoff 'http://10.20.0.2:11010/v1/compute/hypervisors/' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer XXXX' \ ---data '{ - "driver_spec": { - "driver": "libvirt", - "iface_mtu": 1500, - "network_type": "network", - "network": "exordos-core-net", - "storage_pool": "default", // для qcow - "storage_pool": "rpool", // для ZFS - "connection_uri": "qemu+tcp://10.20.0.1/system", // для TCP-соединения - "connection_uri": "qemu+ssh://ubuntu@10.20.0.1:22/system?no_verify=1", // для SSH-соединения - "machine_prefix": "dev-" - }, - "avail_cores": 4, - "avail_ram": 4096, - "all_cores": 4, - "all_ram": 4096, - "status": "ACTIVE" -}' -``` - -- storage_pool — имя пула хранения libvirt для использования. -- connection_uri — URI подключения libvirt. Если вам нужно добавить другую машину, используйте другой IP-адрес. -- all_cores — общее количество ядер, которые вы хотите выделить гипервизору. -- all_ram — общий объём RAM, который вы хотите выделить гипервизору. -- avail_cores — используйте то же значение, что и `all_cores`. -- avail_ram — используйте то же значение, что и `all_ram`. - -### Production - -Руководство по установке в production будет добавлено позже. - -## Использование - -Следуйте [руководству по использованию](https://github.com/infraguys/exordos_core/wiki/Usage) для получения дополнительной информации. diff --git a/docs/usage/local_deployment.md b/docs/usage/local_deployment.md new file mode 100644 index 00000000..db1c29dd --- /dev/null +++ b/docs/usage/local_deployment.md @@ -0,0 +1,132 @@ +# Local Deployment + +This guide describes how to deploy a local installation of the Exordos platform on a single host machine. + +## Dependencies + +It's assumed Linux (Ubuntu) is used as the OS on your machine. + +### Packages + +Install necessary packages: + +```bash +sudo apt update +sudo apt install qemu-kvm qemu-utils libvirt-daemon-system libvirt-dev mkisofs -y +``` + +Add the current user to the required groups: + +```bash +sudo adduser $USER libvirt +sudo adduser $USER kvm +``` + +## Local machine as a hypervisor + +The local host must be configured as a hypervisor so that the platform can schedule and run virtual machine workloads on it. + +Initialize the current host as a hypervisor: + +```bash +genesis compute hypervisors init +``` + +### Key parameters + +Run `genesis compute hypervisors init --help` to see all available options. The most important ones are: + +| Option | Description | +|---|---| +| `--pool_name TEXT` | Name of the libvirt storage pool to use for VM disk images. Defaults to `default`. | +| `--packer` / `-p` | Install HashiCorp Packer alongside the hypervisor setup. | +| `--romfile_version TEXT` | Version of the network interface ROM file to install. | + +## Bootstrap + +Once the local machine is configured as a hypervisor, run the bootstrap procedure to deploy the platform: + +```bash +genesis bootstrap -i -f -m core --ssh-public-key /path/to/public/key +``` + +where `` is the version of the platform to deploy (e.g., `0.0.6`). + +The platform can be started either from a **local build** (a locally built image) or from a **remote repository** (a prebuilt image fetched from the official repository). + +**Local build example:** + +```bash +genesis bootstrap -i /path/to/exordos-core.raw -m core +``` + +**Remote repository example (default):** + +```bash +genesis bootstrap -i https://repository.genesis-core.tech/genesis-elements/core/0.0.6/ -m core +``` + +### Key parameters + +Run `genesis bootstrap --help` to see all available options. The most important ones are: + +| Option | Description | +|---|---| +| `--profile` | Installation profile: `develop`, `small`, `medium`, `large`, or `legacy`. Defaults to `small`. | +| `--cidr IPV4NETWORK` | Main network CIDR for the platform. Defaults to `10.20.0.0/22`. | +| `--core-ip IPV4ADDRESS` | IP address for the core VM. If not set, the second address from `--cidr` is used. | +| `--admin-password TEXT` | Password for the admin user. If not provided, a password is generated automatically. | +| `--save-admin-password-file TEXT` | Save the admin password to a file instead of printing it to the console. | +| `--ssh-public-key PATH` | Path to a public SSH key to inject into the VM. Can be specified multiple times. | +| `--hyper-connection-uri TEXT` | Connection URI for the hypervisor, e.g. `qemu+tcp://10.0.0.1/system` or `qemu+ssh://user@10.0.0.1/system`. | +| `--hyper-storage-pool TEXT` | Libvirt storage pool to use for VM disks. Defaults to `default`. | +| `--force` / `-f` | Force rebuild if the output already exists. | + +## Usage + +After `genesis bootstrap` completes, the platform is up and running. The command prints the credentials for the admin user to the console (or saves them to a file if `--save-admin-password-file` was specified). + +### SSH access + +If a public SSH key was provided during bootstrap via `--ssh-public-key`, you can connect directly to the core VM: + +```bash +ssh ubuntu@10.20.0.2 +``` + +### API access + +Use the admin credentials to obtain an access token from the IAM service: + +```bash +curl --location 'http://10.20.0.2:11010/v1/iam/clients/00000000-0000-0000-0000-000000000000/actions/get_token/invoke' \ + --header 'Content-Type: application/x-www-form-urlencoded' \ + --data-urlencode 'grant_type=password' \ + --data-urlencode 'username=' \ + --data-urlencode 'password=' \ + --data-urlencode 'client_id=GenesisCoreClientId' \ + --data-urlencode 'client_secret=GenesisCoreSecret' \ + --data-urlencode 'scope=' \ + --data-urlencode 'ttl=86400' +``` + +The response contains an `access_token` field. Use this token as a `Bearer` token in all subsequent API requests. + +### CLI access + +Configure the `genesis` CLI by registering a realm and a context with the admin credentials: + +```bash +genesis settings set-realm local --endpoint http://10.20.0.2:11010 --current +genesis settings set-context local --name admin -u -p --current +``` + +- `set-realm` registers the platform endpoint under the name `local` and marks it as the active realm. +- `set-context` creates a named context with the admin credentials and marks it as the active context. + +After configuration, you can manage the platform using `genesis` commands, for example: + +```bash +genesis compute hypervisors list +genesis elements list +``` diff --git a/docs/usage/local_deployment.ru.md b/docs/usage/local_deployment.ru.md new file mode 100644 index 00000000..858d38eb --- /dev/null +++ b/docs/usage/local_deployment.ru.md @@ -0,0 +1,132 @@ +# Локальное развёртывание + +Данное руководство описывает, как развернуть локальную инсталляцию платформы Exordos на одной хост-машине. + +## Зависимости + +Предполагается, что на вашей машине используется Linux (Ubuntu). + +### Пакеты + +Установите необходимые пакеты: + +```bash +sudo apt update +sudo apt install qemu-kvm qemu-utils libvirt-daemon-system libvirt-dev mkisofs -y +``` + +Добавьте текущего пользователя в необходимые группы: + +```bash +sudo adduser $USER libvirt +sudo adduser $USER kvm +``` + +## Локальная машина как гипервизор + +Локальная машина должна быть настроена как гипервизор, чтобы платформа могла планировать и запускать на ней виртуальные машины. + +Инициализируйте текущую машину как гипервизор: + +```bash +genesis compute hypervisors init +``` + +### Основные параметры + +Выполните `genesis compute hypervisors init --help`, чтобы просмотреть все доступные параметры. Наиболее важные из них: + +| Параметр | Описание | +|---|---| +| `--pool_name TEXT` | Имя пула хранилища libvirt для образов дисков виртуальных машин. По умолчанию: `default`. | +| `--packer` / `-p` | Установить HashiCorp Packer вместе с настройкой гипервизора. | +| `--romfile_version TEXT` | Версия ROM-файла сетевого интерфейса для установки. | + +## Bootstrap + +После настройки локальной машины как гипервизора выполните процедуру bootstrap для развёртывания платформы: + +```bash +genesis bootstrap -i -f -m core --ssh-public-key /path/to/public/key +``` + +где `` — версия платформы для развёртывания (например, `0.0.6`). + +Платформу можно запустить как из **локальной сборки** (локально собранный образ), так и из **удалённого репозитория** (готовый образ, загруженный из официального репозитория). + +**Пример с локальной сборкой:** + +```bash +genesis bootstrap -i /path/to/exordos-core.raw -m core +``` + +**Пример с удалённым репозиторием (по умолчанию):** + +```bash +genesis bootstrap -i https://repository.genesis-core.tech/genesis-elements/core/0.0.6/ -m core +``` + +### Основные параметры + +Выполните `genesis bootstrap --help`, чтобы просмотреть все доступные параметры. Наиболее важные из них: + +| Параметр | Описание | +|---|---| +| `--profile` | Профиль инсталляции: `develop`, `small`, `medium`, `large` или `legacy`. По умолчанию: `small`. | +| `--cidr IPV4NETWORK` | CIDR основной сети платформы. По умолчанию: `10.20.0.0/22`. | +| `--core-ip IPV4ADDRESS` | IP-адрес основной виртуальной машины. Если не задан, используется второй адрес из `--cidr`. | +| `--admin-password TEXT` | Пароль администратора. Если не задан, генерируется автоматически. | +| `--save-admin-password-file TEXT` | Сохранить пароль администратора в файл вместо вывода в консоль. | +| `--ssh-public-key PATH` | Путь к публичному SSH-ключу для добавления в виртуальную машину. Можно указать несколько раз. | +| `--hyper-connection-uri TEXT` | URI подключения к гипервизору, например `qemu+tcp://10.0.0.1/system` или `qemu+ssh://user@10.0.0.1/system`. | +| `--hyper-storage-pool TEXT` | Пул хранилища libvirt для дисков виртуальных машин. По умолчанию: `default`. | +| `--force` / `-f` | Принудительная пересборка, если результат уже существует. | + +## Использование + +После завершения `genesis bootstrap` платформа запущена и готова к работе. Команда выводит учётные данные администратора в консоль (либо сохраняет их в файл, если был указан `--save-admin-password-file`). + +### Доступ по SSH + +Если при bootstrap был указан публичный SSH-ключ через `--ssh-public-key`, можно подключиться к основной виртуальной машине напрямую: + +```bash +ssh ubuntu@10.20.0.2 +``` + +### Доступ через API + +Используйте учётные данные администратора для получения токена доступа от сервиса IAM: + +```bash +curl --location 'http://10.20.0.2:11010/v1/iam/clients/00000000-0000-0000-0000-000000000000/actions/get_token/invoke' \ + --header 'Content-Type: application/x-www-form-urlencoded' \ + --data-urlencode 'grant_type=password' \ + --data-urlencode 'username=' \ + --data-urlencode 'password=' \ + --data-urlencode 'client_id=GenesisCoreClientId' \ + --data-urlencode 'client_secret=GenesisCoreSecret' \ + --data-urlencode 'scope=' \ + --data-urlencode 'ttl=86400' +``` + +В ответе содержится поле `access_token`. Используйте этот токен как `Bearer`-токен во всех последующих запросах к API. + +### Доступ через CLI + +Настройте CLI `genesis`, зарегистрировав realm и контекст с учётными данными администратора: + +```bash +genesis settings set-realm local --endpoint http://10.20.0.2:11010 --current +genesis settings set-context local --name admin -u -p --current +``` + +- `set-realm` — регистрирует endpoint платформы под именем `local` и устанавливает его как активный realm. +- `set-context` — создаёт именованный контекст с учётными данными администратора и устанавливает его как активный. + +После настройки можно управлять платформой с помощью команд `genesis`, например: + +```bash +genesis compute hypervisors list +genesis elements list +```