AWS подробная инструкция
Установка MikoPBX в AWS с помощью произвольного образа
Авторизуйтесь в сервисе Amazon Web Services https://aws.amazon.com
Для выполнения инструкций установите утилиту командной строки Amazon, для этого откройте Терминал и введите в командной строке
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
Приступим к настройке
Копирование ключей доступа
Перейдите к своему аккаунту
В выпадающем меню выберите 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:::",
"arn:aws:s3:::/*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource": "*"
}
]
}
Аналогично создайте файл import-image.sh, измените значения параметра DEFAULT_BUCKET на имя созданного вами бакета и параметра DEFAULT_IMAGE на имя образа, загруженного в бакет
#!/bin/bash
# Определение переменных по умолчанию
DEFAULT_IMAGE=""
DEFAULT_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

Для развертывания АТС используйте два диска:
диск объемом 1 Гб для основной системы
диск объемом 50+ Гб для хранения записей разговоров
При необходимости измените размер диска для хранения данных в разделе Configure storage, по умолчанию его размер - 50Гб

Для других полей используйте значения по умолчанию
Нажмите кнопку Launch instance

Запуск АТС MikoPBX
Перейдите к созданной виртуальной машине mikopbx-vm
На открытой вкладке выберите Connect / EC2 serial console, дождитесь полной загрузки системы, пока не отобразятся параметры авторизации

Скопируйте внешний адрес созданной виртуальной машины и введите его в строке браузера
Для входа используйте указанные в EC2 serial console логин и пароль

Обязательно выполните настройку Firewall на самой АТС MikoPBX
Last updated
Was this helpful?