Para fazer isso, colarei o comando curl da página Amazon no meu shell Linux, que fará o download do pacote e o gravará em um arquivo zip local, que descompactarei. Isso criará um novo diretório chamado aws que conterá um script de instalação, que eu posso executar usando o sudo para obter privilégios de administrador. Vou executar o aws --version para confirmar que tudo funcionou como deveria.

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"unzip awscliv2.zipls awssudo ./aws/installaws --version

A próxima etapa exigirá uma rápida viagem ao console de gerenciamento. Veja, para autenticar a CLI na sua conta, você precisará de uma chave de acesso válida. Agora, a CLI possui um comando “create-access-key” que gera uma nova chave, mas isso só é possível depois que eu me autenticar. Tenho certeza que você entende o problema com isso.

Você acessa a página de credenciais de segurança no menu da conta suspensa na parte superior de qualquer página no console. Com suas credenciais em mãos, você pode executar “aws configure”. Você será solicitado a inserir seu ID da chave de acesso e a própria chave secreta. Embora eu nunca exponha minha chave publicamente assim, você pode ter certeza de que a terei excluído muito antes do início deste curso. Se desejar, você pode escolher uma região e um formato de saída padrão da AWS. O formato não será um problema, por isso vou deixá-lo como padrão.

aws configureaws s3 ls

É isso aí. Apenas para confirmar que tudo funcionou, listarei todos os buckets S3 da minha conta. Com isso, vamos começar a trabalhar no próximo clipe.

Você já deve saber que o serviço CloudFormation da Amazon existe para permitir gerenciar sua infraestrutura de aplicativos, organizando-a em pilhas de recursos da sua conta da AWS.

Os modelos CloudFormation que definem essas pilhas podem ser compartilhados, editados e lançados em qualquer lugar, oferecendo ambientes de aplicativos em nuvem previsíveis e confiáveis, onde e quando você precisar.

Você também deve saber que pode gerenciar suas pilhas do CloudFormation por meio do AWS Management Console e, conforme discutido em meu novo curso do Pluralsight, criar e gerenciar pilhas com o AWS CloudFormation usando a interface da linha de comandos, usando a CLI da AWS.

Se você optar por usar a CLI da AWS – algo que eu recomendo – você precisará de uma maneira de reunir informações importantes sobre outros recursos da conta. Mas como você espera obter essas informações através da CLI pode, a princípio, não parecer tão óbvio.

Para mostrar o que quero dizer, vamos experimentar uma pilha mais complexa usando um modelo que vem das amostras de documentação da AWS.

o Conjunto de modelos de estruturas de aplicativos inclui um modelo para servidores Linux com escala automática que será pré-provisionado com o servidor da web Apache e a linguagem de script PHP e uma conexão com uma instância de banco de dados Multi-AZ RDS executando o mecanismo de banco de dados MySQL.

Você pode clicar em Exibir nessa página de documentação da AWS e dar uma olhada no próprio modelo. Lá, você verá as seções Parâmetros, definindo a VPC e as sub-redes nas quais sua instância será iniciada e o nome, usuário e senha do banco de dados MySQL.

É fundamental que todos os serviços certos conheçam esses detalhes, pois, caso contrário, eles não poderão se comunicar. Teremos que descobrir uma maneira de adicionar esses valores. Para fazer as coisas funcionarem, basta clicar para visualizar o modelo (que você pode ver aqui) e copie o conteúdo, colando-o em um novo arquivo JSON em sua máquina local.

Você usa a CLI para iniciar uma pilha do Cloudformation usando o comando create-stack. O comando, no entanto, leva alguns argumentos para passar informações importantes. Este exemplo mínimo mostra como apontar o CloudFormation para o seu arquivo de modelo JSON, um nome para atribuir à sua pilha e uma chave SSH válida, para que eu possa efetuar login na instância criada.

aws cloudformation create-stack   --template-body file://lamp-as.json   --stack-name lamp   --parameters   ParameterKey=KeyName,ParameterValue=mykey

O problema é que, se você executasse esse comando no modelo em seu documento JSON, ele falharia. Isso porque, como você sem dúvida se lembrará de examinar o modelo, existem alguns parâmetros extras que precisam ser satisfeitos. Especificamente, precisaremos de referências a uma VPC e a duas sub-redes – e como essa é uma implantação de zona de disponibilidade múltipla, elas precisam estar em zonas diferentes.

Como isso vai funcionar? É a CLI da AWS para o resgate. Precisa de um ID de VPC? Tendo em mente que as VPCs são objetos do EC2, você pode executar o aws ec2 descrevem-vpcs e todos os dados necessários, incluindo o ID da VPC, aparecerão magicamente. E sub-redes? Bem, mais do mesmo, obviamente. Basta copiar os IDs de sub-rede para qualquer uma das duas sub-redes que aparecerão e você estará no negócio.

aws ec2 describe-vpcsaws ec2 describe-subnets

Agora vamos reunir todas essas informações em nossa nova versão do comando create-stack. Você precisará ter cuidado com isso, pois existem algumas dicas desagradáveis ​​na sintaxe.

aws cloudformation create-stack   --template-body file://lamp-as.json   --stack-name lamp-as   --parameters   ParameterKey=KeyName,ParameterValue=mykey   ParameterKey=VpcId,ParameterValue=vpc-1ffbc964   ParameterKey=Subnets,ParameterValue='subnet-0e170b31,subnet-52d6117c'   ParameterKey=DBUser,ParameterValue=myadmin   ParameterKey=DBPassword,ParameterValue=mypass23

O primeiro novo parâmetro é VPC-ID. Mas certifique-se de acertar o caso: usar um D maiúsculo em Id fará com que tudo falhe. Não sei por que eles tornam as coisas tão difíceis de conviver, mas é isso que temos.

O próximo é ainda mais delicado. Como precisamos de duas sub-redes, precisamos inseri-las em uma única linha separada por vírgula – mas sem espaço. No entanto, também precisaremos colocar a sequência dentro de apóstrofos únicos. Mas a CLI não pode ler apóstrofos assim, portanto, precisaremos escapar deles usando barras invertidas. Percebido?

Também adicionarei esses dois parâmetros de banco de dados: DBUser e meu DBPassword ultra secreto e super criptográfico. será que vai dar certo? Pode apostar. Mas não conte a ninguém quantas vezes eu tive que tentar isso sem você assistir antes de eu acertar. Lembre-se: o fracasso é seu amigo.

Quando nossa pilha é boa e é lançada (o que pode levar até meia hora), a execução de pilhas de descrição nos fornecerá o URL do site.

aws cloudformation describe-stacks

Mas essa não é a história toda. Então, vou usar outro comando aws ec2 – desta vez, para descrever as instâncias – para obter algumas informações sobre as instâncias do EC2 que foram iniciadas como parte dessa pilha. Este filtrará os resultados, restringindo a saída apenas às instâncias em execução no momento.

Por acaso não tenho outras instâncias em execução nessa região, portanto, apenas as instâncias do CloudFormation serão exibidas. Agora vou usar –query para filtrar ainda mais a saída e fornecer apenas os IDs da instância e os endereços IP públicos dessas instâncias. Como você esperaria, existem exatamente duas em execução.

aws ec2 describe-instances   --filters Name=instance-state-name,Values=running   --query 'Reservations[*].Instances[*].{Instance:InstanceId,PublicIPAddress:PublicIpAddress}'

Apenas uma amostra – e a maior parte relacionada especificamente ao CloudFormation – mas acho que você tem a idéia de como a coleta de informações funciona usando a CLI da AWS.

Há muito mais benefícios administrativos na forma de livros, cursos e artigos disponíveis no meu bootstrap-it.com.

[*]