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 /

Приступим к настройке

Для быстрого и удобного поиска в сервисе Amazon используйте панель поиска

Копирование ключей доступа

  1. Перейдите к своему аккаунту

  2. В выпадающем меню выберите Security credentials

Если у вас нет ключа доступа, выполните следующее

  1. В таблице Access keys выберите Create access key

  2. Скопируйте Access key и Secret access key

Если у вас есть ключ доступа, скопируйте Access key и Secret access key

Создание бакета

  1. Откройте Services / Storage / S3

  2. На вкладке выберите Create bucket

  3. Введите уникальное имя бакета (Bucket name)

  1. Для других полей используйте значения по умолчанию

  2. Завершив ввод значений, нажмите кнопку Create bucket

  1. Откройте созданный бакет и выберите Upload

  2. На открывшейся вкладке выберите Add files

  3. Загрузите файл из дистрибутива MikoPBX с расширением .raw

  4. Нажмите кнопку Upload

  5. Дождитесь окончания загрузки файла

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

Если для данного облака не выполнялось, сделайте один раз

  1. Создайте отдельную папку для файлов на компьютере

  2. Создайте в папке файл trust-policy.json

    1. Откройте Терминал и перейдите к созданной папке

    2. Выполните команду vi trust-policy.json

    3. Перейдите в режим редактирования, нажав i, вставьте текст

    4. Нажмите 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"}
            }
        }
    ]
}
  1. Аналогично создайте файл 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": "*"
        }
    ]
}
  1. Аналогично создайте файл 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"
  1. Выполните команду aws configure, укажите регион и скопированные ключи Access key и Secret access key

aws configure
  1. Выполните команду

aws iam create-role --role-name vmimport --assume-role-policy-document "file://trust-policy.json"
  1. Выполните команду

aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://role-policy.json"
  1. Выполните команду

sh import-image.sh

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

Создание виртуальной машины

  1. Откройте Services / Compute / EC2 и перейдите в раздел Images / AMIs

  2. Выберите созданный образ и нажмите кнопку Launch an instance form AMI для создания виртуальной машины

  1. Введите имя виртуальной машины (Name), например mikopbx-vm

  1. Укажите тип машины (Instance type) - t3.micro

Если у вас есть ключ SSH, выполните следующее

  1. Укажите SSH ключ в поле Key pair

Если у вас есть нет ключа SSH, выполните следующее

  1. Выберите Create new key pair и укажите имя пары ключей (Key pair name), например mikopbx_key

Следуйте дальше по инструкции

  1. В разделе Network settings установите флажки Allow SSH traffic и Allow HTTPS traffic

Для развертывания АТС используйте два диска:

  • диск объемом 1 Гб для основной системы

  • диск объемом 50+ Гб для хранения записей разговоров

  1. При необходимости измените размер диска для хранения данных в разделе Configure storage, по умолчанию его размер - 50Гб

  1. Для других полей используйте значения по умолчанию

  2. Нажмите кнопку Launch instance

Запуск АТС MikoPBX

  1. Перейдите к созданной виртуальной машине mikopbx-vm

  2. На открытой вкладке выберите Connect / EC2 serial console, дождитесь полной загрузки системы, пока не отобразятся параметры авторизации

  1. Скопируйте внешний адрес созданной виртуальной машины и введите его в строке браузера

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

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

Last updated