Automatando a implantação do site na AWS usando o Terraform

Já se perguntou como colocar um site em funcionamento na nuvem sem clicar em cem botões? Vou mostrar como usar o Terraform, uma ferramenta incrível que permite escrever código para criar sua infraestrutura em serviços como o AWS.Sonizaremos um servidor web simples, fará um belo modelo de site em execução e aprenderá alguns conceitos -chave ao longo do caminho. O que você precisa para começar antes de mergulharmos, verifique se há algumas coisas configuradas: Terraform: esta é a principal ferramenta que usaremos. Você pode fazer o download do site oficial da AWS CLI: Isso permite que seu computador converse com sua conta da Amazon Web Services. Você precisará instalá -lo e configurá -lo com suas credenciais. Uma conta da AWS: se você ainda não tiver uma, pode se inscrever em uma conta de camada gratuita. Configure um usuário do IAM para o Terraform antes de mergulharmos no código Terraform, precisamos garantir que estamos nos conectando à AWS da maneira certa. Dica: 🚨 Nunca use sua conta raiz da AWS para projetos! Em vez disso, criaremos um usuário do IAM dedicado apenas para a Terraform. Veja como: Faça login no AWS Console e Open IAM (Identity & Access Management). Crie um novo usuário-chame de algo como o Terraform-User. Em Tipo de acesso, verifique o acesso programático (isso fornece uma chave de acesso e chave de acesso secreto). Definir permissões: para aprender, você pode anexar o AdministratorAccess (acesso total). Mas no mundo real, você só daria as permissões exatas necessárias. Download de credenciais: salve o arquivo .csv com suas chaves, ele o mantém seguro! Configure a AWS CLI para que a Terraform saiba como se conectar. Execute isso no seu terminal: AWS Configure Digite o modo de saída de tela cheia de tela cheia e digite seu: Acesse a chave IDSecret Access KeyDefault Região: Formato dos EUA-East-1Output: JSON Etapa 1: Configurando a pasta do projeto First Things First, vamos nos organizar! Crie uma nova pasta para o seu projeto no seu computador, usei o VSCode (é mais fácil configurar seus projetos usando -o) dentro desta pasta, você criará alguns arquivos. Você pode copiar o código que forneci abaixo em cada arquivo. Ele diz a Terraform: “Ei, vamos trabalhar com a AWS, e estaremos na região dos EUA leste (N. Virgínia)”. Basta copiar esse código em um arquivo chamado Provider.tf. Provedor “AWS” {Region = Var.region} Digite o modo de tela de tela cheia Modo de tela cheia Etapa 3: Organize seu código com variáveis ​​(vars.tf) em vez de digitar coisas como “US-East-1” repetidamente, podemos usar variáveis. Isso torna seu código mais limpo e mais fácil de alterar posteriormente. Este arquivo define onde seus recursos morarão e qual tipo de servidor usaremos. Copie esse código em vars.tf. variável “região” {default = “US-leste-1”} variável “zone1” {default = “US-leste-1a”} variável “webUser” {default = “ubuntu”} variável “amiid” {type = map (qualquer) default = {US-EAST-2 “” ami-0cfdeaea8ed = (qualquer) default = {US-EAST-2 ” “AMI-0360C520857E3138F”}} Digite Modo de tela de tela cheia Modo de tela cheia Etapa 4: Crie uma chave para bloquear e desbloquear seu servidor (Keypair.tf e Dovekey.pub) para fazer login com segurança no seu servidor, você precisa de uma chave especial. Este é um processo padrão chamado ssh.pene seu terminal e crie seu próprio par de chaves. Você pode usar este comando no seu terminal: ssh-keygen digite o modo de saída de tela cheia, solicitará que você digite o caminho do arquivo: dê o nome da chave; pressione Enter. Isso criará dois arquivos: Dovekey (sua chave privada) e Dovekey.pub (sua chave pública). Mantenha a chave privada segura! Copie todo o conteúdo do seu novo arquivo Dovekey.pub em um novo arquivo com o mesmo nome. Recurso “AWS_KEY_PAIR” “Dove-key” {key_name = “Dove-key” public_key = FILE (“Dovekey.pub”)} Digite o modo de tela cheia de tela cheia Etapa 5: Configure o firewall do seu servidor (Secgrp.tf) Pense em um grupo de segurança como um bouncer digital para o servidor. Ele decide quem entra e quem não faz. Nosso grupo de segurança permitirá que as pessoas: ssh (porta 22): apenas do seu computador. Importante: você deve alterar o endereço IP 197.211.58.41/32 para seu próprio endereço IP. Uma pesquisa rápida por “O que é meu IP” no Google mostrará a você.http (porta 80): De qualquer lugar do mundo para que todos possam ver seu site. “Dove-SG”}} Resource “aws_vpc_security_group_ingress_rule” “ssh-from-my-ip” {Security_group_id = aws_security_group.dove-sg.id cidr_ipv4 = “197.211.58.41/32 “_Pr de “AWS_VPC_SECURITY_GROUP_INGRUEN” “allow_http” {Security_group_id = aws_security_group.dove-sg.id cidr_ipv4 = “0.0.0.0/0” from_port = 80 ip_protocol = “tcp” to_port “AWS_VPC_SECURITY_GROUP_EGRESS_RULE” “ALIM_ALL_OUTBOUND_IPV4” {Security_group_id = AWS_Security_Group.Dove-SG.ID Cidr_IPV4 = “0,0.0.0/0” IP_Protocol = “-1”} enterro completo ex-MODO FULHO ENTRE FULHO EXENTO FULHO FULL (instance.tf) Este é o evento principal. Este arquivo informa ao Terraform para criar um servidor AWS (uma instância do EC2) e vinculá -lo ao par e do grupo de segurança que acabamos de definir. A parte especial aqui está os blocos provisionistas. Eles dizem ao Terraform para: Carregar nosso arquivo web.sh no servidor.log no servidor via ssh.run the web.sh script para instalar nosso site! Recurso “AWS_INSTANCE” “Web” {ami = var.amiid[var.region]
instance_type = “t3.micro” key_name = “Dove-key” vpc_security_group_ids = [aws_security_group.dove-sg.id]
disponibilidade_zone = var.ZONE1 Tags = {name = “Dove-web” Project = “Dove”} Provisionner “FILE” {ORONTE = “Web.sh” Destination = “/tmp/web.sh”} conexão {type = “ssh” user = var.webUser Private_key = (“Dovekey”) inline = [
“chmod +x /tmp/web.sh”,
“sudo /tmp/web.sh”
]
}} Digite Modo de tela FullScreen Modo de tela cheia Etapa 7: O script “Magic” (web.sh) Este script simples é o que realmente instala um servidor da web (Apache) e coloca um site nele. Ele baixa um modelo de site gratuito (usei um modelo da placa superior com), descompacte -o e copia todos os arquivos para o local correto. #!/bin/bash apt update apt install wget unzip apache2 -y systemctl start apache2 systemctl enable apache2 wget unzip -o 2117_infinite_loop.zip cp -r 2117_infinite_loop/* /var/www/html/ systemctl restart apache2 Enter fullscreen mode Exit fullscreen mode Step 9: Get the Details of Seu novo servidor (saídas. Isso facilita a localização do seu novo site. Crie um novo arquivo chamado saída.tf e adicione este código: output “instance_id” {description = “O ID da instância do EC2” Value = aws_instance.web.id} outpuls “Public_ip” {description = “o endereço IP do publicação da instância do ec2” Value = AwS_inStance.web.publ.publ.publ.publ.publ.publ.publ.publ.publ.publ.publ.publ.publ.publ.publ.pUrd.Pert.Pemnsenet Demen Modanseen. Nota nos arquivos do estado Quando você executa o TerraForm, ele cria arquivos como TerraForm.tfstate e TerraForm.tfstate.backup. Esses arquivos são muito importantes porque mantêm um registro de tudo o que a Terraform criou. Sempre, sempre, comprometa esses arquivos para git! Eles podem conter informações confidenciais e podem causar enormes problemas se você trabalhar com uma equipe. Para evitar isso, crie um arquivo na pasta do projeto chamado .gitignore e adicionar as seguintes linhas, ou podemos criar um s3bucket, mas vamos seguir isso por enquanto: Terraform. Abra seu terminal, vá para a pasta do projeto e execute esses comandos um por um. Quando solicitado, digite sim e pressione Enter. O Terraform agora construirá tudo para você. Etapa 12: confira! Quando o processo estiver concluído, você verá as saídas que você definiu! Basta copiar o valor public_ip e colá -lo no seu navegador da web. Você deve ver seu novo site! Etapa 13: Limpe! Para evitar ser cobrado pela AWS, é um ótimo hábito limpar seus recursos quando terminar. Basta executar este comando simples: o Terraform Destroy, isso derrubará tudo o que você criou. Tudo se foi! E aí está!. Abaixo está a imagem do site provisionado.

Fonte

Você pode ter perdido