[ad_1]

Olhar para um prompt simples e idiota da linha de comando, sem saber o que fazer com a CLI da AWS a seguir, pode ser uma experiência humilhante. E, pelo menos na minha experiência, olhar para o Console de gerenciamento do AWS CloudFormation pode ser pior. Então, deixe-me oferecer uma ajuda rápida para “começar” com base em parte do conteúdo em meu último curso Pluralsight.

Primeiro, se você planeja gerenciar suas pilhas do CloudFormation por meio da CLI da AWS, e não do Console de Gerenciamento, discutirei o básico em Este artigo. Quando tudo estiver resolvido, você estará pronto para qualquer coisa. Comece simples:

$ aws s3 ls2019-11-03 13:16:59 athena59052019-02-03 18:01:42 book-39392014-07-01 18:52:32 elasticbeanstalk-ap-northeast-1-4263974931122014-08-28 16:57:49 elasticbeanstalk-us-east-1-4264974939122019-05-04 22:17:50 ltest2362018-07-15 15:52:30 mybucket996882232017-07-25 17:06:43 nextcloud3239027

“aws” nesse exemplo diz ao seu shell que você deseja que o próximo passo seja tratado pela CLI da AWS. O “s3” digitado em seguida informa à CLI que vou usar o serviço S3 – que é o Simple Storage Service da Amazon. Por fim, “ls” ou “list” é o comando que eu gostaria de executar nesse serviço.

A CLI, usando as variáveis ​​de autenticação de conta que a ferramenta de configuração adicionou ao meu ambiente, agora se apressará e acessará minha conta, neste caso, recuperando os nomes de todos os meus buckets.

Previsivelmente, você diz à AWS que deseja trabalhar com o CloudFormation usando “cloudformation”. Se eu apenas executar isso sem especificar um comando, receberá uma mensagem de erro:

aws cloudformationusage: aws [options]   [ ...] [parameters]To see help text, you can run:  aws help  aws  help  aws   helpaws: error: the following arguments are required: operation

Mas é uma mensagem importante, pois nos diz como acessar a documentação embutida. A ajuda sensível ao contexto está disponível em cada camada.

Veja o que acontece se você adicionar “ajuda” após “formação de nuvens”. Você obterá uma breve descrição e uma lista de todos os subcomandos disponíveis.

$ aws cloudformation helpCLOUDFORMATION()                                              CLOUDFORMATION()NAME       cloudformation -DESCRIPTIONAWS  CloudFormation  allows you to create and manage AWS infrastructure deployments predictably and repeatedly. You can use AWS  CloudFormation to  leverage AWS products, such as Amazon Elastic Compute Cloud, Amazon Elastic Block Store, Amazon Simple Notification Service,  Elastic  Load Balancing,  and Auto Scaling to build highly-reliable, highly scalable, cost-effective applications without creating or configuring the  underlying AWS infrastructure.With  AWS  CloudFormation, you declare all of your resources and dependencies in a template  file.  The  template  defines  a  collection  of resources  as  a single unit called a stack. AWS CloudFormation creates and deletes all member resources of the stack together and manages  all dependencies between the resources for you.For  more information about AWS CloudFormation, see the AWS CloudFormation Product Page.Amazon CloudFormation makes use of other  AWS  products.  If  you  need additional  technical information about a specific AWS product, you can find the product's technical documentation at docs.aws.amazon.com.AVAILABLE COMMANDS       o cancel-update-stack       o continue-update-rollback       o create-change-set       o create-stack       o create-stack-set       o delete-change-set       o delete-stack       o delete-stack-instances       o delete-stack-set       o deploy       o describe-account-limits       o describe-change-set       o describe-stack-events       o describe-stack-instance       o describe-stack-resource       o describe-stack-resources       o describe-stack-set       o describe-stack-set-operation       o describe-stacks       o estimate-template-cost       o execute-change-set       o get-stack-policy[...]

Agora execute o comando “descrevem-pilhas”. Provavelmente, não há pilhas ativas na sua conta no momento, portanto você não verá nenhuma saída. Mas faça isso de novo, desta vez adicionando “ajuda”. Este mostrará algumas opções que permitirão filtrar ou manipular os dados recuperados. Você pode, por exemplo, apontar a CLI para uma pilha específica usando “–stack-name” seguido do nome de uma pilha existente.

$ aws cloudformation describe-stacks$ aws cloudformation describe-stacks helpNAME       describe-stacks -DESCRIPTION       Returns  the  description for the specified stack; if no stack name was specified, then it returns the description for all the stacks created.       NOTE:          If the stack does not  exist,  an  AmazonCloudFormationException  is returned.       See also: AWS API Documentation       See 'aws help' for descriptions of global parameters.       describe-stacks  is  a  paginated  operation. Multiple API calls may be issued in order to retrieve the entire data set  of  results.  You  can disable pagination by providing the --no-paginate argument.  When using --output text and the --query argument on  a  paginated  response,  the --query  argument  must  extract data from the results of the following query expressions: StacksSYNOPSIS            describe-stacks          [--stack-name ]          [--cli-input-json ]          [--starting-token ]          [--max-items ]          [--generate-cli-skeleton ]OPTIONS       --stack-name (string)          The name or the unique stack ID that is associated with  the  stack,          which are not always interchangeable:[...]$ aws cloudformation describe-stacks --stack-name myname

Essas são ferramentas que ajudarão você, independentemente do serviço da AWS que você estiver usando. Mas, olhando especificamente para o CloudFormation, existem algumas coleções oficiais valiosas de modelos de amostra que você deve conhecer. Sendo a sintaxe JSON ou YAML o que são, você provavelmente não desejará iniciar com um documento vazio.

A própria Amazon fez um ótimo trabalho ao criar modelos para trabalharmos. Sua primeira parada deve ser a Página Modelos do AWS CloudFormation. Aqui você encontrará links para snippets e estruturas de aplicativos específicas e mais conteúdo de ponta.

No momento, gostaria de chamar sua atenção para um dos “modelos de amostra” organizados pelo serviço da AWS (esse código vem de um dos Exemplos do Amazon EC2)

O modelo começa com uma descrição de formato livre que nos informa, de maneira útil, que tipo de pilha isso gerará. Também nos disseram que poderíamos personalizar o modelo usando um endereço IP Elastic existente em vez de um que é gerado automaticamente.

{  "AWSTemplateFormatVersion" : "2010-09-09",  "Description" : "AWS CloudFormation Sample Template EC2InstanceWithSecurityGroupSample: Create an Amazon EC2 instance running the Amazon Linux AMI. The AMI is chosen based on the region in which the stack is run. This example creates an EC2 security group for the instance to give you SSH access. **WARNING** This template creates an Amazon EC2 instance. You will be billed for the AWS resources used if you create a stack from this template.",

Você precisará passar o nome de um KeyPair existente da região atual em sua conta da AWS para poder abrir o SSH remoto na instância do Linux que será lançada. Como alternativa, você pode passar esse valor na linha de comando.

A seção Parâmetros também é onde você define o tipo de instância do EC2. O padrão é t2.small, mas poderíamos trocar esse valor por qualquer um dos outros AllowedValues ​​neste documento ou substituí-lo na linha de comando.

  "Parameters" : {    "KeyName": {      "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance",      "Type": "AWS::EC2::KeyPair::KeyName",      "ConstraintDescription" : "must be the name of an existing EC2 KeyPair."    },    "InstanceType" : {      "Description" : "WebServer EC2 instance type",      "Type" : "String",      "Default" : "t2.small",

Se você rolar para baixo na seção Mapeamentos, podemos ver longas listas de arquiteturas de hardware disponíveis e identificadores de imagem de máquina da Amazon para cada região. Esta é uma seção opcional na qual você pode inserir seus próprios valores fora do padrão para, digamos, que um tipo de imagem seja iniciado com base em um conjunto específico de parâmetros – talvez até uma imagem AMI privada. Esses dados são organizados em pares chave / valor.

  "Mappings" : {    "AWSInstanceType2Arch" : {      "t1.micro"    : { "Arch" : "HVM64"  },      "t2.nano"     : { "Arch" : "HVM64"  },      "t2.micro"    : { "Arch" : "HVM64"  },

A seção Recursos, neste caso, define seu ambiente de instância. o SecurityGroup, por exemplo, está configurado para abrir a porta SSH 22, mas nada mais. O endereço IP público da instância também está associado ao novo endereço IP elástico que será alocado.

    "InstanceSecurityGroup" : {      "Type" : "AWS::EC2::SecurityGroup",      "Properties" : {        "GroupDescription" : "Enable SSH access via port 22",        "SecurityGroupIngress" : [ {          "IpProtocol" : "tcp",          "FromPort" : "22",          "ToPort" : "22",          "CidrIp" : { "Ref" : "SSHLocation"}        } ]      }    }  },

Mais um recurso importante da Amazon: Iniciação Rápida. A rigor, as pilhas de infraestrutura pré-criadas fornecidas aqui para ajudá-lo a criar implantações em nuvem mais complexas não estão diretamente relacionadas ao CloudFormation. Eles foram fornecidos por empresas terceirizadas para simplificar o processo de construção de sua infraestrutura na plataforma da AWS.

Mas o fato é que cada um começa com seu próprio modelo CloudFormation exclusivo. Clicar para ver exemplos reais geralmente o levará aos modelos de código-fonte da pilha em um repositório do GitHub. Este exemplo mostra as ferramentas necessárias para iniciar um console HashiCorp:

Screenshot from 2020 05 17 13 06 37

De qualquer forma, fique à vontade para usar esses modelos como ferramentas de aprendizado – ou navegue pela seleção para ver se há uma pilha lá que atenda às suas necessidades.

[ad_2]

Fonte