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

Image description

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

![Output da policita criada]

Image description

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

11- Veja que foi criada uma AMI com SSM Incluso

Image description

Top comments (0)