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?

