Авторизуйтесь в сервисе Amazon Web Services https://aws.amazon.com
Для выполнения инструкций установите утилиту командной строки Amazon, для этого откройте Терминал и введите в командной строке
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
Приступим к настройке
{% hint style="info" %} Для быстрого и удобного поиска в сервисе Amazon используйте панель поиска {% endhint %}
- Перейдите к своему аккаунту
- В выпадающем меню выберите Security credentials
Если у вас нет ключа доступа, выполните следующее
- В таблице Access keys выберите Create access key
- Скопируйте Access key и Secret access key
Если у вас есть ключ доступа, скопируйте Access key и Secret access key
- Откройте Services / Storage / S3
- На вкладке выберите Create bucket
- Введите уникальное имя бакета (Bucket name)
- Для других полей используйте значения по умолчанию
- Завершив ввод значений, нажмите кнопку Create bucket
- Откройте созданный бакет и выберите Upload
- На открывшейся вкладке выберите Add files
- Загрузите файл из дистрибутива MikoPBX с расширением .raw
- Нажмите кнопку Upload
- Дождитесь окончания загрузки файла
Если для данного облака не выполнялось, сделайте один раз
- Создайте отдельную папку для файлов на компьютере
- Создайте в папке файл trust-policy.json
- Откройте Терминал и перейдите к созданной папке
- Выполните команду vi trust-policy.json
- Перейдите в режим редактирования, нажав i, вставьте текст
- Нажмите ESC и напишите :wq, чтобы записать файл
vi trust-policy.json
{
"Version": "2012-10-17",
"Statement":
[
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{"sts:Externalid": "vmimport"}
}
}
]
}
- Аналогично создайте файл role-policy.json, измените значение имени бакета в тексте на имя созданного вами бакета
{
"Version":"2012-10-17",
"Statement":
[
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::mikopbx-bucket",
"arn:aws:s3:::mikopbx-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource": "*"
}
]
}
- Аналогично создайте файл import-image.sh, измените значения параметра DEFAULT_BUCKET на имя созданного вами бакета и параметра DEFAULT_IMAGE на имя образа, загруженного в бакет
#!/bin/bash
# Определение переменных по умолчанию
DEFAULT_IMAGE="mikopbx-2024.1.40-dev-x86_64.raw"
DEFAULT_BUCKET="mikopbx-bucket"
DEFAULT_DESCRIPTION="MikoPBX the best open source PBX on asterisk"
DEFAULT_NAME="MikoPBX 2024.1.40-dev"
# Переопределение переменных значениями переменных окружения, если они установлены
IMAGE="${IMAGE:-$DEFAULT_IMAGE}"
BUCKET="${BUCKET:-$DEFAULT_BUCKET}"
DESCRIPTION="${DESCRIPTION:-$DEFAULT_DESCRIPTION}"
NAME="${NAME:-$DEFAULT_NAME}"
# Файл JSON для команды import-snapshot
JSON_FILE="disk_container.json"
# Создание файла JSON
cat <<EOF> ${JSON_FILE}
{
"Description": "${DESCRIPTION} image",
"Format": "raw",
"UserBucket": {
"S3Bucket": "${BUCKET}",
"S3Key": "${IMAGE}"
}
}
EOF
# Импорт снимка
IMPORT_TASK_ID=$(aws ec2 import-snapshot --description "${DESCRIPTION} image" --disk-container "file://${JSON_FILE}" --query 'ImportTaskId' --output text)
echo "Import task started with ID: $IMPORT_TASK_ID"
# Ожидание завершения импорта снимка
while true; do
STATUS=$(aws ec2 describe-import-snapshot-tasks --import-task-ids $IMPORT_TASK_ID --query 'ImportSnapshotTasks[0].SnapshotTaskDetail.Status' --output text)
echo "Current status: $STATUS"
if [ "$STATUS" == "completed" ]; then
break
fi
sleep 30
done
# Получение SnapshotId
SNAPSHOT_ID=$(aws ec2 describe-import-snapshot-tasks --import-task-ids $IMPORT_TASK_ID --query 'ImportSnapshotTasks[0].SnapshotTaskDetail.SnapshotId' --output text)
# Регистрация AMI
AMI_ID=$(aws ec2 register-image \
--name "$NAME" \
--description "$DESCRIPTION" \
--architecture x86_64 \
--sriov-net-support simple \
--virtualization-type paravirtual \
--ena-support \
--boot-mode legacy-bios \
--root-device-name "/dev/sda1" \
--block-device-mappings "[{\"DeviceName\": \"/dev/sda1\", \"Ebs\":{\"DeleteOnTermination\":true, \"VolumeSize\":1, \"SnapshotId\":\"$SNAPSHOT_ID\"}}, {\"DeviceName\": \"/dev/sdb\", \"Ebs\":{\"VolumeSize\":50}}]" \
--query 'ImageId' \
--output text)
echo "AMI created with ID: $AMI_ID"
- Выполните команду aws configure, укажите регион и скопированные ключи Access key и Secret access key
aws configure
- Выполните команду
aws iam create-role --role-name vmimport --assume-role-policy-document "file://trust-policy.json"
- Выполните команду
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://role-policy.json"
- Выполните команду
sh import-image.sh
В случае успешного выполнения команды будет сформирован уникальный идентификатор образа AMI
- Откройте Services / Compute / EC2 и перейдите в раздел Images / AMIs
- Выберите созданный образ и нажмите кнопку Launch an instance form AMI для создания виртуальной машины
- Введите имя виртуальной машины (Name), например mikopbx-vm
- Укажите тип машины (Instance type) - t3.micro
Если у вас есть ключ SSH, выполните следующее
- Укажите SSH ключ в поле Key pair
Если у вас есть нет ключа SSH, выполните следующее
- Выберите Create new key pair и укажите имя пары ключей (Key pair name), например mikopbx_key
Следуйте дальше по инструкции
- В разделе Network settings установите флажки Allow SSH traffic и Allow HTTPS traffic
{% hint style="danger" %} Для развертывания АТС используйте два диска:
- диск объемом 1 Гб для основной системы
- диск объемом 50+ Гб для хранения записей разговоров {% endhint %}
- При необходимости измените размер диска для хранения данных в разделе Configure storage, по умолчанию его размер - 50Гб
- Для других полей используйте значения по умолчанию
- Нажмите кнопку Launch instance
- Перейдите к созданной виртуальной машине mikopbx-vm
- На открытой вкладке выберите Connect / EC2 serial console, дождитесь полной загрузки системы, пока не отобразятся параметры авторизации
- Скопируйте внешний адрес созданной виртуальной машины и введите его в строке браузера
- Для входа используйте указанные в EC2 serial console логин и пароль
{% hint style="danger" %} Обязательно выполните настройку Firewall на самой АТС MikoPBX {% endhint %}