Bom pessoal, conforme prometido na aula anterior, nós iremos criar aqui o nosso primeiro recurso no nosso arquivo de configurações, que será a nossa VPC. E é bem simples, nós podemos primeiramente consultar aqui a documentação do Terraform, nós podemos digitar aqui AWS VPC Terraform. E nós seremos direcionados para a documentação da criação desse recurso. E aqui nós teremos vários exemplos de como nós podemos utilizar esse recurso. A forma mais simples, mais básica, é nós definirmos esse bloco resource AWS VPC com o nome para o nosso recurso, com o identificador para o nosso recurso e aqui nós vamos especificar o bloco, nós vamos especificar o range de IPs privados disponíveis para essa VPC, tá? Eu vou copiar este bloco, beleza? E eu vou navegar aqui até o meu arquivo de configurações e eu já vou definir esse bloco, tá? WS-VPC. Eu vou mudar aqui o nome para exemplo VPC, beleza? E aqui está o nosso bloco que, como eu já disse, determina o rende de IPs disponíveis na nossa VPC. Só para você ter uma noção um pouco melhor do que significa isso, caso você não tenha esse background de redes, não faça a mínima noção do que eu estou falando aqui, tem um site muito interessante que éIDR.xyz, onde nós podemos colocar aqui o nosso bloco CIDR, enfim, existem várias formas de nós falarmos isso, e aqui você tem uma noção de quais são os IPs que você pode utilizar, a quantidade de IPs disponíveis para este bloco, como é o caso aqui do nosso exemplo, exemplo nós escolhemos esse bloco de peço privados 10.0.0.0 barra 1616 se apresentando a quantidade de bits que fazem parte do prefixo da rota tá o que não muda vamos dizer assim e aqui você tem a quantidade de bits disponíveis ou melhor dizendo a quantidade de peixes com ele des, que no nosso caso é 65.536. Esse valor provavelmente não é exato quando nós criarmos a AWS, porque a AWS reserva alguns IPs, se eu não me engano são 5 IPs. Mas ainda assim, temos muitos IPs disponíveis aqui, utilizando essa máscara de rede, beleza? Nós temos aqui o primeiro IP disponível, que nos informa que é o 10.0.0.1 e temos o último que é o 10.0.255.254. Então todos os IPs nesse REND podem ser alocados, podem ser utilizados para os nossos recursos, desde que eles não estejam reservados, melhor dizendo, para a própria AWS. Beleza? Só para você ter uma noção aqui do que significa esse bloco. Então, nós já temos aqui a nossa VPC definida. É bem simples, a única coisa mesmo que nós precisamos definir é este bloco. Agora, nós iremos, então, criar uma subnet. Uma VPC é composta por uma ou mais subnets, mas nós precisamos ter uma subnet para nós associarmos, onde nós podemos colocar os nossos recursos, como vai ser o caso da nossa máquina virtual. Vamos lá. Nós teremos agora, então, aqui o resource, teremos agora a nossa subnet, então o tipo do recurso é aws-subnet e o nome aqui do nosso recurso será example-subnet, bem criativo. Vamos agora definir aqui também a nossa VPC, porque agora nós precisamos associar essa subnet a uma VPC, nós vamos colocar aqui VPC ID e nós já sabemos como nós fazemos essa associação, basta nós especificarmos aqui a WSVPC, por exemplo, VPC, que é a chave do nosso recurso e aqui nós vamos colocar VPC ID, beleza? Na verdade é ID somente, nós não precisamos colocar aqui vpc id, deixa eu só colocar aqui um espaço, logo em seguida nós precisamos definir um outro bloco sider, então eu vou copiar o bloco que eu tenho salvo aqui, e já vou colocar, e é evidente que este bloco precisa estar dentro desse range, não faz sentido eu colocar um bloco que não tem nada a ver. Um bloco que começa com, não sei, 172 ou algo do tipo, tá? Não faz o menor sentido. O prefixo também tem que estar dentro desse range e não pode ter overlap com uma outra subnet. Nós não criaremos outra subnet, teremos somente uma, mas é preciso estar atento a isso, tá? Deixa eu só ajustar aqui o espaçamento, beleza. Teremos essa subnet e aqui nós precisamos definir também a Z, onde essa subnet estará alocada. Para nós conhecermos, sabermos quais razões estão disponíveis, nós podemos simplesmente navegar até o console. Então, já estou com o console aberto aqui, logado na minha conta. Podemos procurar por VPC, acessar o serviço VPC e aqui nós temos as nossas VPCs, no caso nós temos uma VPC padrão, sempre que nós criamos a nossa conta, acessamos uma região nós temos uma VPC disponível já por padrão, mas nós iremos criar uma outra aqui nós temos subnets e nós podemos clicar aqui em Create Subnet, selecionar a VPC padrão e aqui nós teremos uma das opções que nós temos disponíveis, é a Availability Zone. Nós podemos clicar aqui e podemos conferir quais são as zonas de disponibilidade disponíveis aqui para nós. Então, nós podemos deixar em branco e será feita uma alocação randômica, ou então nós podemos escolher uma Availability Zone específica. Está lembrando que eu já expliquei isso, mas é pense como sendo um data center que está longe pelo menos a uma distância de 60 milhas, aproximadamente 100 km de uma outra AZ. Isso para evitar que qualquer problema que aconteça em uma AZ também interfira ou também tenha alguma consequência na outra AZ, deixando assim ou permitindo que você construa aplicações de alta disponibilidade, mesmo quando um data center da AWS está fora, tá? Beleza? Vamos escolher uma das zonas de disponibilidade aqui que nós temos. Nós escolheremos o S-Wash 2A, tá? Então, vamos aqui definir o S-Wash 2A. Availabilidade zone, beleza, será essa availability zone aqui. E agora por fim, para nós finalizarmos a primeira parte aqui da criação dos nossos recursos, nós iremos criar uma máquina virtual, nós iremos criar a nossa VM. Nós teremos aqui o nosso recurso AWS Instance, e aqui nós chamaremos de exemplo Instance, novamente um nome bem criativo, e aqui nós precisamos definir a imagem da nossa VM, definir a AMI. E bom, como nós conseguimos definir isso? Como nós podemos saber quais são as imagens que nós temos disponíveis? Primeiro, que é importante conferir a disponibilidade antes, porque nós temos certas imagens que estão disponíveis em regiões específicas, então às vezes ela não estará disponível na sua região. Por isso que eu recomendo que você navegue até o console, que você procure pelo serviço EC2, que é justamente o serviço de máquinas virtuais. Beleza. E aqui nós temos um gráfico, onde nós temos, por exemplo, as instâncias que estão rodando, as instâncias que estão parando, na verdade eu já terminei essa instância num teste que eu havia feito, daqui a pouco ela desaparece daqui, mas você pode verificar que eu não tenho nenhuma instância rodando. Nós podemos navegar aqui até a Images, temos as nossas AMIs, podemos criar imagens customizadas e assim por diante. Mas o que nos interessa aqui no momento é, vamos clicar aqui em Launch Instances e vamos verificar quais são as informações que nós precisamos para criar uma instância, para colocar uma instância aqui de máquina virtual rodando na nossa conta. Primeiro que nós temos que escolher a nossa imagem. Aqui nós temos um Quick Start com várias imagens disponíveis, com várias distribuições disponíveis. Nós temos aqui, por exemplo, a Amazon Linux e temos as diversas AMIs. Mas eu gostaria de mostrar aqui para você que você pode navegar e procurar por todas as imagens públicas disponíveis. Nós temos aqui, por exemplo, imagens MacOS, temos Red Hat, temos várias distribuições Ubuntu, temos Windows e assim por diante. No nosso exemplo, nós vamos utilizar essa primeira imagem aqui mesmo. Mas, dê uma olhada, navegue e veja quantas possibilidades você tem aqui na AWS. E o código da nossa imagem é justamente esse daqui, tá? Então, você pode escolher aqui a arquitetura do seu processador, mas nós vamos utilizar aqui essa primeira imagem, tá? Então, eu vou copiar aqui, beleza? Vou voltar e basta nós colarmos agora esse código aqui dentro, beleza? Uma outra informação que nós precisamos passar é o Instance Type. Então, se nós voltarmos aqui no nosso, no console, deixa eu voltar aqui em Launch Instance, beleza? Ao escolhermos a nossa imagem, nós vamos escolher também o tipo da nossa instância. O tipo da instância determina o tamanho dessa instância, tá? Aqui existem vários tipos. Nós temos o T2 Nano, por exemplo, que tem uma única VCPU e que tem somente meio giga de memória. Temos a T2 Micro, que tem uma VCPU e um giga de memória e assim por diante. Então, aqui você tem um leque de opções, você pode escolher o tamanho que você quiser, tá? Para o nosso caso, nós vamos escolher essa T2 Micro justamente porque ela está elegível a ser utilizada na nossa free tier. Então, nós podemos ali colocar essa máquina como sendo parte daquelas 750 horas que nós temos disponíveis nos 12 primeiros meses após a criação da nossa conta e nós não precisamos pagar por essas 750 horas, tá? Então, nós vamos escolher T2 micro. É importante observar também que a imagem, ela também pode ser ou não elegível a ser utilizada na free tier, tá? Então, é importante observar isso. A imagem que nós escolhemos, sim, ela está disponível. Então, vamos lá, vamos voltar aqui ao nosso VS Code e nós vamos colocar aqui o nosso Instance Type como sendo T2.micro. Beleza, já temos aqui a nossa instância. Por fim, nós vamos dizer que essa instância precisa estar alocada nessa subnet que nós acabamos de criar. Então, nós faremos o seguinte, subnet id e nós vamos referenciar aqui a ws subnet example subnet e ponto id e beleza, já temos os três primeiros recursos definidos aqui no terraform para nós criarmos esse recurso lá na ws, tá? é claro que para nós vermos se tudo está certo nós precisamos executar aqui os comandos do terraform e o primeiro deles é o comando init, então vamos usar o Terraform init, para que seja feito o download do nosso provider, nós vamos aguardar aqui que a instalação do provider seja concluída com sucesso, tá? Vamos esperar aqui alguns segundos, deixa eu salvar o arquivo, garantir que o arquivo esteja salvo, beleza, e perfeito, agora aqui nós já temos o provider instalado na nossa máquina, instalado no nosso projeto, e agora nós vamos dar uma olhada em qual que é o plano do Terraform em relação aos recursos que nós declaramos, vamos verificar se nós não teremos aqui nenhum problema, vamos esperar que ele execute o Terraform Plan e perfeito. Temos aqui já o plano onde ele diz que vai criar uma instância com todas essas propriedades. Você pode observar que existem várias propriedades ou vários atributos que são definidos após o Apply, que foram conhecidos após o Apply. Temos alguns valores que são default. Temos aqui também a mesma coisa para a nossa subnet onde nós iremos criar na zona de disponibilidade o swash2a beleza, temos aqui o nosso bloco, perfeito, e temos por fim a nossa vpc também com o bloco que nós especificamos e assim por diante beleza, vamos agora dar um terraform apply agora o terraform ele vai fazer chamadas Vamos agora dar um Terraform Apply. Terraform Apply. Agora o Terraform vai fazer chamadas aqui para a AWS, criando todos esses recursos. Pode demorar alguns segundos para que esses recursos sejam criados. Então eu vou dar um pause aqui nessa aula. E quando todos os recursos estiverem criados, eu volto a gravação da aula. E aqui está, pessoal. Nós já terminamos aqui de executar o comando terraform apply. Demorou cerca de... Demorou 36 segundos para ser completada essa task. E agora nós vamos dar uma conferida na nossa conta para ver se nós temos a nossa instância aqui sendo executada. Deixa eu dar um refresh. Beleza, temos aqui uma instância rodando, nós podemos observar aqui que ela ainda está no processo de inicialização, temos a hora de lançamento, a hora que nós criamos, que essa instância foi iniciada e assim por diante. Temos diversas informações. Se nós clicarmos aqui, nós podemos navegar, por exemplo, até Networking, onde nós temos o IP privado associado, então ele criou um IP dentro da nossa subnet, de acordo com o bloco que nós temos disponíveis para a nossa subnet. Nós temos aqui uma network interface associada a essa instância, e você pode observar que nós não temos nenhum IP público, ou nenhum Elastic IP associado a essa instância, nós precisamos de criar esse IP público é por isso inclusive que nós não temos aqui um IP público associado de forma nenhuma quando nós navegamos até details até porque na nossa VPC nós ainda também não temos um internet gateway que permite a comunicação na nossa VPC com a internet, tá? Nós faremos esses ajustes na nossa próxima aula, mas eu recomendo que, caso você não vá continuar assistindo às aulas hoje mesmo, agora mesmo, eu recomendo que você destrua todos os recursos para que você não tenha nenhum gasto ou para que você não tenha nenhuma surpresa no final do mês. Então, nós já faremos isso também. Eu vou colocar aqui, vou te mostrar como você pode destruir todos os seus recursos. Na verdade eu já mostrei, mas nós faremos isso juntos. Vamos dar um Terraform Destroy e aqui nós teremos agora o Terraform fazendo o mesmo processo, só que agora reverso. Ele vai parar a instância, vai destruir a instância, vai excluir a nossa subnet e vai excluir a nossa subnet e vai excluir a nossa rede a nossa VPC e aqui nós já temos o poder do Terraform sendo mostrado para nós nós podemos criar muito facilmente recursos e podemos destruí-los também de forma muito simples de forma muito fácil amanhã quando você for assistir novas aulas caso você não continue assistindo as aulas hoje, você basta simplesmente rodar de novo Terraform, Apply e a sua infraestrutura em alguns segundos estará de pé de novo, beleza? Vou deixar aqui esse comando terminar de ser executado, mas por hoje nós finalizamos, eu espero que você tenha gostado, vejo você na nossa próxima aula.