Infraestrutura como código: o novo normal

Samuel Nwoye Blocked Unblock Seguir Seguindo 9 de janeiro

Um conhecido corretamente aconselhou que, embora se possa compreender assuntos complexos, eles devem sempre se esforçar para serem claros e precisos, transmitindo os mesmos para o outro. Para este passo, procuramos mantê-lo simples, curto e sucinto.

Até agora, os operadores, o administrador do sistema e os engenheiros de confiabilidade do site realizam suas tarefas clicando em uma interface gráfica do usuário ou escrevendo alguns scripts dinamicamente. Por que sempre fazer a mesma coisa com erro humano passando por um procedimento que pode ser automatizado? Tarefas como criar um repositório, adicionar um novo usuário, provisionar ou configurar um servidor são processos que podem ser codificados – e são reutilizáveis e reproduzíveis.

Certamente, a automação das operações e das tarefas administrativas do sistema, por meio de infra-estrutura como código, pode parecer desanimadora e para a maioria uma perda de tempo. No entanto, os ganhos de incluir isso como um deve fazer em seu fluxo de trabalho de desenvolvimento de software é inestimável. Ele dá a liberdade de tomar as melhores decisões do que eles precisam, e coloca você no comando, dando um modelo bem documentado do que funciona, e um potencial para melhorá-lo, assim como os aplicativos que codificamos.

Neste walk-through nós demonstramos uma espécie de “olá mundo” de infraestrutura como código para dar uma visão rápida deste domínio. Fiz algumas suposições de que você tem uma conta da AWS e recuperou uma ID de acesso à API e uma chave secreta. Veja https://bit.ly/2D0OOxN e https://bit.ly/2TGVNBG para se inscrever e criar uma AWS conta de usuário. Eu também presumi que você tenha baixado e instalado o binário terraform para o seu sistema operacional. Para fazer isso, por favor siga este link https://bit.ly/2FhGM65

O repositório para esta demonstração pode ser encontrado aqui https://github.com/knoxknot/iaac Portanto, temos apenas uma pasta com quatro arquivos .tf e um arquivo .sh que representam respectivamente os scripts terraform e bash. Esses arquivos exemplificam uma série de tarefas que um operador executaria em um único servidor da Web e provisionando-o com um aplicativo. Fazer isso em produção é um pouco mais complexo do que isso; Nunca se preocupe, você vai chegar lá, acredite em mim.

Permita que você entenda o que as linhas de códigos dentro desses arquivos pretendem

O resources.tf é onde criamos os recursos e componentes reais que desejamos. O objeto "provedor" define nosso provedor de nuvem específico e o mecanismo de autenticação para obter acesso a ele. O objeto "data" coleta o recurso existente em nosso provedor de nuvem. Neste caso, estamos obtendo uma imagem de máquina amazônica do sistema operacional Ubuntu. Os objetos de "recursos" criam os recursos reais – par de chaves, grupo de segurança (firewall) para controlar os tráfegos de entrada e saída em nosso servidor e, finalmente, o servidor da Web.

Nas variáveis.tf definimos e inicializamos algumas variáveis http_port, ssh_port para evitar codificação a quente desses valores dentro dos recursos.tf e essenciais para manter as coisas modulares.

O inputs.auto.tfvars é onde você passa os valores para variáveis declaradas em variables.tf especialmente valores sujeitos a modificação. Eu poderia escolher usar um novo tipo de instância em vez de t2.micro e que eu não gostaria de ser inicializado dentro das variáveis.tf

Os outputs.tf aqui declaramos os atributos que gostaríamos de retornar depois que o processo fosse executado com sucesso. Por isso, queremos obter o ip público e o nome de domínio das instâncias após o provisionamento.

User-data.sh é um script bash com o qual inicializar a instância na inicialização. Então, estamos simplesmente imprimindo a frase em um arquivo index.html criado na hora. Em seguida, usando o busybox, orquestramos algum tipo de implementação de servidor, ouvindo na porta 80 e executando em segundo plano.

Procedimentos de fluxo de trabalho

passo 1: abra a pasta no seu editor de escolha (certifique-se de ter um terminal integrado)

Etapa 2: Exporte suas credenciais aws para o namespace de variável de ambiente

Execute : export TF_VAR_secret_key = ”insira sua chave secreta aqui”

export TF_VAR_access_key = ”insira sua chave secreta aqui”

passo 3: acreditando que você tem o aplicativo openssh dentro do terminal, crie um diretório “keys” dentro da pasta IAAC e execute os comandos sob a lista para gerar o par de chaves para o seu servidor.

Execute : ssh-keygen -t rsa -b 4096 -C “chave do servidor web”

no prompt

Tipo : ./keys/server_key

passo 4: faça o download do plugin do provedor terraform aws

Executar : terraform init

passo 5: validar os códigos estão sintaticamente corretos

Executar : terraform validate

Etapa 6: obtenha uma visão geral dos recursos a serem implantados e sua atribuição

Executar : plano terraform

Etapa 7: implante esses recursos na plataforma de provedores de nuvem

Executar : terraform aplicar

passo 8: copie uma das saídas – server_ip ou server_dns – para um navegador habilitado para internet para observar os resultados. Voila você tem seu mundo Hello de infra-estrutura como código instalado e funcionando.