Terraform by Hashicorp é uma infraestrutura e uma ferramenta de código que pode ser usada para gerenciar os vários serviços da AWS. É semelhante ao serviço da AWS CloudFormation com mais recursos e benefícios. Com o Terraform, podemos planejar as alterações a serem aplicadas antes de serem realmente aplicadas.
O que cobrimos?
Neste guia, utilizaremos os recursos do Terraform para criar grupos de segurança. Neste SG, permitiremos apenas o tráfego HTTP e o tráfego SSH, por exemplo. Em seguida, anexaremos este grupo de segurança a uma instância da AWS executando um servidor da web e verificamos se os SGs anexados estão funcionando como esperado.
O que precisamos?
Para executar este guia, você deve ter uma conta da AWS e acesso às credenciais da AWS no seu sistema local de onde você está executando o Terraform. Você também deve ter o Terraform instalado em seu sistema. Você pode se referir ao Guia Oficial do Terraform para aprender sobre como instalar o Terraform.
Bits sobre grupos de segurança
Grupos de segurança são uma parte muito importante do serviço EC2. O que eles fazem é simplesmente controlar o tráfego que entra e sai dos recursos que estão associados. Por exemplo, depois de criar uma instância e anexar um grupo de segurança, a regra de entrada decide que tipo de tráfego pode alcançar a instância. Da mesma forma, uma regra de saída decide que tipo de tráfego pode sair da instância.
Existe um grupo de segurança padrão que vem com todos os VPC recém -criados (Cloud Virtual Private). Em seguida, podemos criar novos SGs (abreviação de grupos de segurança), mas esses SGs só podem ser anexados aos recursos que pertencem a este VPC.
Pode -se anexar um ou vários grupos de segurança no momento do lançamento de uma instância. Várias regras podem ser anexadas a um grupo de segurança que também pode ser modificado posteriormente.
Criando um grupo de segurança
Nesta seção, criaremos um grupo de segurança que permita apenas o tráfego de saída "HTTP" (outido), eu.e. tráfego saindo da instância e permita todo o tráfego de entrada (entrada) i.e. tráfego chegando à instância.
Observação: Quando um novo grupo de segurança é criado em um VPC, ele tem uma regra de saída de "permitir tudo" por padrão. Quando um novo grupo de segurança é criado em um VPC, essa regra padrão é eliminada pelo Terraform, mas você pode configurar esta regra novamente, se necessário.
Agora, criamos um diretório de trabalho para o nosso projeto Terraform que manterá todos os nossos arquivos subsequentes. Abra um editor de texto e crie o seguinte arquivo:
$ nano secgrp.tf
Coloque o seguinte código dentro deste arquivo e salve -o:
Recurso "AWS_SECURITY_GROUP" "Demo-SG"
Nome = “sec-grp”
Descrição = "Permitir tráfego HTTP e SSH via Terraform"
Ingressão
de_port = 80
to_port = 80
protocolo = "tcp"
cidr_blocks = ["0.0.0.0/0 "]
Ingressão
de_port = 22
to_port = 22
protocolo = "tcp"
cidr_blocks = ["0.0.0.0/0 "]
saída
de_port = 0
to_port = 0
protocolo = "-1"
cidr_blocks = ["0.0.0.0/0 "]
Os dois blocos de entrada definidos acima permitem os protocolos HTTP e SSH de qualquer lugar IPv4.
A saída permite todo o tráfego de saída.
Descrição de alguns dos argumentos usados anteriormente:
saída: O bloco que contém a configuração das regras de saída.
entrada: O bloco que contém a configuração das regras de entrada.
descrição: Descreve o título do grupo de segurança. É opcional e o valor padrão é "gerenciado pela Terraform".
de_port: Indica o número da porta inicial.
to_port: Indica a porta final.
protocolo: A especificação do protocolo. Se esse valor de campo for "-1", os valores de From_port e To_Port devem ser "0".
Implantando o grupo de segurança
Agora que criamos um grupo de segurança, verificaremos se está realmente funcionando. Para isso, criamos uma instância do EC2 e instalamos um servidor da web simples com a mensagem “Tutoriais do Linuxhint Terraform”. Abra um editor de texto e crie um arquivo “WebServer.tf ”.
$ Nano WebServer.tf
Agora, coloque o seguinte código dentro dele:
Provedor "AWS"
região = "US-leste-1"
Access_key = "Your-Acacess-Key"
Secret_key = "Your-secret-key"
Recurso "AWS_INSTANCE" "WebServer"
ami = "ami-09d56f8956ab235b3"
instance_type = “T2.micro ”
key_name = "seu nome-name"
vpc_security_group_ids = [AWS_SECURITY_GROUP.Demo-sg.eu ia]
associado_public_ip_address = true
root_block_device
volume_type = "gp2"
volume_size = "8"
Delete_on_nMensinity = true
user_data = "$ file (“ userData.sh ”)"
tags =
Name = "ExpletEC2WebServer"
Substitua o 'Your-Kyypair-name', 'Your-Secret-Key', 'You-Acacess-Key' com os valores no seu caso. Depois disso, crie um arquivo “UserData.SH ”para o código de implantação do servidor da web.
$ nano userData.sh
Cole o seguinte conteúdo nele:
#!/BIN/BASH
Atualização de sudo apt-get
sudo apt -get upgrade -y
sudo apt -get install apache2 -y
sudo systemctl reiniciar apache2
sudo chmod 777 -r/var/www/html/
CD/var/www/html/
sudo eco "Tutoriais do Linuxhint Terraform.
"> ÍNDICE.html
Executando o servidor da web
Agora é a hora de inicializar o diretório Terraform usando o seguinte comando:
$ Terraform init
Além disso, é bom verificar a sintaxe de nossos arquivos de projeto executando o seguinte comando:
$ Terraform Validar
Agora, construímos a infraestrutura usando o comando "Terraform Apply":
$ Terraform se aplica
Opcionalmente, podemos visualizar as alterações usando o comando "Terraform Plan". Quando o comando Aplicar terminar, verifique seu console EC2 para verificar a instância do EC2 e seu grupo de segurança.
Para verificar o status do servidor, abra um navegador da web e cole o nome DNS da instância.
Da mesma forma, tente o SSH na instância para ver se somos capazes de fazer login com nossa chave privada.
Conclusão
Neste guia, vimos o processo de criação de um grupo de segurança. Também o anexamos a uma instância do EC2 para ver se está funcionando como esperado. Tanto o protocolo SSH quanto HTTP estão funcionando corretamente.