DEV Community

Railander Marques
Railander Marques

Posted on

Exportar Voip para AWS EC2 - .vmdk ou .ova

1- Vamos usar como exemplo neste tutorial uma .iso FreePBX para exportação.

2- Usaremos o Virtual Box para instalar a .iso em .vmdk e converter para .ova

Image description

![Coloque o nome | clique em NEXT]

Image description

![Neste caso, vou usar 4GB de ram para instalação | clique em NEXT]

Image description

![Escolha criar novo disco | clique em CREATE]

Image description

![Escolha VMDK | clique em NEXT]

Image description

![Deixe em "Dynamically allocated | clique em NEXT]

Image description

![Aloque cerca de 20GB para a máquina virtual | clique em CREATE]

Image description

![Clique em SETTINGS]

Image description

![Escolha uma quantidade razoável de cores para configurarmos a máquina virtual]

Image description

![Habilitar uma placa de rede NAT]

Image description

![Clique em Storage > Empty > Icone de CD > Choose a disk file]

Image description

![Escolha a .iso a ser instalada | clique em OPEN e OK na janela anterior]

Image description

![Clique em START]

Image description

![Caso pergunte qual midia para iniciar a máquina virtual, selecione a .iso a ser instalada | clique em START]

Image description

![Neste tutorial usaremos a versão 16 | aperte ENTER]

Image description

![Escolha a opção "Graphical Installation - Output to VGA" | aperte ENTER]

Image description

![Escolha a opção "FreePBX Standard | aperte ENTER]

Image description

![............ Aguarde a instalação ............]

Image description

![Clique em "ROOT PASSWORD" para configurar uma senha para o ROOT]

Image description

![Defina uma senha e clique em DONE]

Image description

![Com a senha de root configurada, aguarde até o final da instalação]

Image description

![Clique em REBOOT]

Image description

![Desligue a maquina virtual | clique em OK]

Image description

![Com a máquina virtual em STOP | clique em SETTINGS]

Image description

![Clique em Storage > clique na ISO atachada > Clique no ícone de CD > Remove Disk from Virtual Drive > Inicie o VOIP]

Image description

![Ao iniciar, logue como usuario "root" e a senha escolhida na instalação]

Image description

Image description

3- Agora que a máquina virtual está instalada, vamos instalar o AWS SSM Agent para acesso ao terminal via AWS Console

  • Neste caso, instalaremos o SSM para região de Virgínia (us-east-1) na AWS, seguindo a documentação da AWS.

https://docs.aws.amazon.com/systems-manager/latest/userguide/agent-install-rhel.html

sudo yum install -y https://s3.us-east-1.amazonaws.com/amazon-ssm-us-east-1/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent
sudo systemctl status amazon-ssm-agent
Enter fullscreen mode Exit fullscreen mode

4- Agora podemos desligar a máquina virtual.

Execute o comando:

shutdown now
Enter fullscreen mode Exit fullscreen mode

5- Vamos exportar a maquina virtual para .ova

![File > Export Appliance]

Image description

![Escolha FreePBX | clique em NEXT]

Image description

![Escolha o destino | clique em NEXT]

Image description

![Clique em EXPORT]

Image description

6- Criar bucket privado e fazer upload do arquivo.ovapara o AWS S3

  • Faça o upload do arquivo .ova para dentro do bucket criado

7- Vamos criar uma politica com o nome trust-policy.jsonno computador local

Execute o comando abaixo:

cat > "trust-policy.json" << "EOF"
{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": { "Service": "vmie.amazonaws.com" },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals":{
               "sts:Externalid": "vmimport"
            }
         }
      }
   ]
}
EOF
Enter fullscreen mode Exit fullscreen mode

![Output do comando acima]

Image description

8- Vamos criar uma Role com o nome vmimport utilizando o arquivo trust-policy.json

  • Para isso necessitamos exportar uma credencial programática com permissão “AdministratorAccess”* em seu terminal.

![Comando para exportar credencial no terminal, necessário instalar o AWS CLI https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html]

Image description

Execute o comando abaixo:

aws iam create-role --role-name vmimport --assume-role-policy-document "file://trust-policy.json"
Enter fullscreen mode Exit fullscreen mode

9- Variáveis que iremos alterar nos arquivos a seguir

nome_do_seu_bucket="aldeiacloud"
# Apontar o diretorio/arquivo.ova
S3Key="diretorio-local/FreePBX.ova"
Enter fullscreen mode Exit fullscreen mode
  • Esta política será anexada à Role vmimport criada na etapa anterior
  • Vamos alterar o bucket_name para o nome do seu bucket no AWS S3

role-policy.json

echo '{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket" 
         ],
         "Resource":[
            "arn:aws:s3:::'nome_do_seu_bucket'",
            "arn:aws:s3:::'nome_do_seu_bucket'/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:ModifySnapshotAttribute",
            "ec2:CopySnapshot",
            "ec2:RegisterImage",
            "ec2:Describe*"
         ],
         "Resource":"*"
      }
   ]
}
' | sudo tee role-policy.json
Enter fullscreen mode Exit fullscreen mode

Execute o comando:

aws iam put-role-policy --role-name vmimport \
                        --policy-name vmimport \
                        --policy-document "file://role-policy.json"
Enter fullscreen mode Exit fullscreen mode

10- Iniciar tarefa de exportação da .ova

  • Em nosso caso, iremos executar o seguinte comando para criarmos o arquivo

Execute o comando:

echo '[
  {                                          
    "Description": "FreePBX",
    "Format": "ova",
    "UserBucket": {
        "S3Bucket": "'nome_do_seu_bucket'",
        "S3Key": "'diretorio-local/FreePBX.ova'"
    }
}]
' > containers.json
Enter fullscreen mode Exit fullscreen mode
  • Iniciar exportação

Execute o comando:

aws ec2 import-image --description "FreePBX" --disk-containers "file://containers.json"
Enter fullscreen mode Exit fullscreen mode

Image description


CHECAGEM DA TASK

Verifique o status dos trabalhos de importação de VM

aws ec2 describe-import-image-tasks --import-task-ids "import-ami-xxxxxxxxxxxxxxxxx"
Enter fullscreen mode Exit fullscreen mode

Image description

Image description

Image description

[Status 3]

Image description

![Status 4 | COMPLETED]

Image description

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More