1- Vamos usar como exemplo neste tutorial uma .iso FreePBX para exportação.
- Baixar .iso do FreePBX no endereço: https://www.freepbx.org/downloads/
- Neste tutorial, usei essa .iso: https://downloads.freepbxdistro.org/ISO/SNG7-FPBX-64bit-2011-5.iso
2- Usaremos o Virtual Box para instalar a .iso em .vmdk e converter para .ova
![Coloque o nome | clique em NEXT]
![Neste caso, vou usar 4GB de ram para instalação | clique em NEXT]
![Escolha criar novo disco | clique em CREATE]
![Escolha VMDK | clique em NEXT]
![Deixe em "Dynamically allocated | clique em NEXT]
![Aloque cerca de 20GB para a máquina virtual | clique em CREATE]
![Clique em SETTINGS]
![Escolha uma quantidade razoável de cores para configurarmos a máquina virtual]
![Habilitar uma placa de rede NAT]
![Clique em Storage > Empty > Icone de CD > Choose a disk file]
![Escolha a .iso a ser instalada | clique em OPEN e OK na janela anterior]
![Clique em START]
![Caso pergunte qual midia para iniciar a máquina virtual, selecione a .iso a ser instalada | clique em START]
![Neste tutorial usaremos a versão 16 | aperte ENTER]
![Escolha a opção "Graphical Installation - Output to VGA" | aperte ENTER]
![Escolha a opção "FreePBX Standard | aperte ENTER]
![............ Aguarde a instalação ............]
![Clique em "ROOT PASSWORD" para configurar uma senha para o ROOT]
![Defina uma senha e clique em DONE]
![Com a senha de root configurada, aguarde até o final da instalação]
![Clique em REBOOT]
![Desligue a maquina virtual | clique em OK]
![Com a máquina virtual em STOP | clique em SETTINGS]
![Clique em Storage > clique na ISO atachada > Clique no ícone de CD > Remove Disk from Virtual Drive > Inicie o VOIP]
![Ao iniciar, logue como usuario "root" e a senha escolhida na instalação]
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
4- Agora podemos desligar a máquina virtual.
Execute o comando:
shutdown now
5- Vamos exportar a maquina virtual para .ova
![File > Export Appliance]
![Escolha FreePBX | clique em NEXT]
![Escolha o destino | clique em NEXT]
![Clique em EXPORT]
6- Criar bucket privado e fazer upload do
arquivo.ova
para 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.json
no 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
![Output do comando acima]
8- Vamos criar uma Role com o nome
vmimport
utilizando o arquivotrust-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]
Execute o comando abaixo:
aws iam create-role --role-name vmimport --assume-role-policy-document "file://trust-policy.json"
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"
- 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
Execute o comando:
aws iam put-role-policy --role-name vmimport \
--policy-name vmimport \
--policy-document "file://role-policy.json"
![Output da policita criada]
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
- Iniciar exportação
Execute o comando:
aws ec2 import-image --description "FreePBX" --disk-containers "file://containers.json"
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"
[Status 3]
![Status 4 | COMPLETED]
11- Veja que foi criada uma AMI com SSM Incluso
Top comments (0)