Etapa 1: criar uma pilha, uma camada e uma instância em AWS OpsWorks Stacks - AWS OpsWorks

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Etapa 1: criar uma pilha, uma camada e uma instância em AWS OpsWorks Stacks

Importante

O AWS OpsWorks Stacks serviço chegou ao fim da vida útil em 26 de maio de 2024 e foi desativado para clientes novos e existentes. É altamente recomendável que os clientes migrem suas cargas de trabalho para outras soluções o mais rápido possível. Se você tiver dúvidas sobre migração, entre em contato com a AWS Support equipe no AWS re:POST ou por meio do Premium AWS Support.

Para usar o AWS OpsWorks Stacks como provedor de implantação para um pipeline, você deve primeiro ter uma pilha, uma camada e pelo menos uma instância na camada. Embora você possa criar uma pilha no AWS OpsWorks Stacks seguindo as instruções em Getting Started with Linux Stacks ou Getting Started with Windows Stacks, para economizar seu tempo, este exemplo usa um AWS CloudFormation modelo para criar uma pilha, camada e instância do Chef 12 com base em Linux. A instância criada por este modelo executa o Amazon Linux 2016.03 e tem um tipo de instância c3.large. Embora o modelo não configure seu stack para usar livros de receitas personalizados, você fará isso mais tarde, na demonstração.

Importante

O AWS CloudFormation modelo deve ser armazenado e executado na mesma região do bucket do Amazon S3 para o qual você posteriormente carregará seu aplicativo e na mesma região na qual você criará seu pipeline posteriormente. CodePipeline No momento, CodePipeline oferece suporte ao provedor AWS OpsWorks Stacks somente na região Leste dos EUA (Norte da Virgínia) (us-east-1). Todos os recursos desta demonstração devem ser criados na região Leste dos EUA (N. da Virgínia).

Se houver falha na criação da pilha, você pode estar se aproximando do número máximo permitido de funções do IAM na sua conta. A criação da pilha também pode falhar se sua conta não conseguir executar instâncias com o tipo de instância c3.large. Por exemplo, se você estiver usando o nível gratuito da AWS , talvez receba um erro como Root device type: must be included in EBS. Se sua conta tiver limitações nos tipos de instância que você pode criar, como limitações impostas pelo nível AWS gratuito, tente alterar o valor do InstanceType parâmetro no bloco de instâncias do modelo para um tipo de instância que sua conta possa usar.

Para criar uma pilha, camada e instância usando AWS CloudFormation
  1. Copie o AWS CloudFormation modelo a seguir em um novo documento de texto sem formatação. Salve o arquivo em um local conveniente em seu computador local e nomeie-o como NewOpsWorksStack.template ou outro nome que seja conveniente para você.

    { "AWSTemplateFormatVersion": "2010-09-09", "Mappings": { "Region2Principal": { "us-east-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "us-west-2": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "us-west-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "eu-west-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "ap-southeast-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "ap-northeast-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "ap-northeast-2": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "ap-southeast-2": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "sa-east-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" }, "cn-north-1": { "EC2Principal": "ec2.amazonaws.com.cn", "OpsWorksPrincipal": "opsworks.amazonaws.com.cn" }, "eu-central-1": { "EC2Principal": "ec2.amazonaws.com", "OpsWorksPrincipal": "opsworks.amazonaws.com" } } }, "Parameters": { "EC2KeyPairName": { "Type": "String", "Description": "The name of an existing EC2 key pair that lets you use SSH to connect to the OpsWorks instance." } }, "Resources": { "CPOpsDeploySecGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription" : "Lets you manage OpsWorks instances to which you deploy apps with CodePipeline" } }, "CPOpsDeploySecGroupIngressHTTP": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties" : { "IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0", "GroupId": { "Fn::GetAtt": [ "CPOpsDeploySecGroup", "GroupId" ] } } }, "CPOpsDeploySecGroupIngressSSH": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties" : { "IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "0.0.0.0/0", "GroupId": { "Fn::GetAtt": [ "CPOpsDeploySecGroup", "GroupId" ] } } }, "MyStack": { "Type": "AWS::OpsWorks::Stack", "Properties": { "Name": { "Ref": "AWS::StackName" }, "ServiceRoleArn": { "Fn::GetAtt": [ "OpsWorksServiceRole", "Arn" ] }, "ConfigurationManager" : { "Name": "Chef","Version": "12" }, "DefaultOs": "Amazon Linux 2016.03", "DefaultInstanceProfileArn": { "Fn::GetAtt": [ "OpsWorksInstanceProfile", "Arn" ] }, "UseCustomCookbooks": "false" } }, "MyLayer": { "Type": "AWS::OpsWorks::Layer", "Properties": { "StackId": { "Ref": "MyStack" }, "Name": "Node.js App Server", "Type": "custom", "Shortname": "app1", "EnableAutoHealing": "true", "AutoAssignElasticIps": "false", "AutoAssignPublicIps": "true", "CustomSecurityGroupIds": [ { "Fn::GetAtt": [ "CPOpsDeploySecGroup", "GroupId" ] } ] }, "DependsOn": [ "MyStack", "CPOpsDeploySecGroup" ] }, "OpsWorksServiceRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ { "Fn::FindInMap": [ "Region2Principal", { "Ref": "AWS::Region" }, "OpsWorksPrincipal" ] } ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "opsworks-service", "PolicyDocument": { "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*", "iam:PassRole", "cloudwatch:GetMetricStatistics", "elasticloadbalancing:*" ], "Resource": "*" } ] } } ] } }, "OpsWorksInstanceProfile": { "Type": "AWS::IAM::InstanceProfile", "Properties": { "Path": "/", "Roles": [ { "Ref": "OpsWorksInstanceRole" } ] } }, "OpsWorksInstanceRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ { "Fn::FindInMap": [ "Region2Principal", { "Ref": "AWS::Region" }, "EC2Principal" ] } ] }, "Action": [ "sts:AssumeRole" ] } ] }, "Path": "/", "Policies": [ { "PolicyName": "s3-get", "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "*" } ] } } ] } }, "myinstance": { "Type": "AWS::OpsWorks::Instance", "Properties": { "LayerIds": [ { "Ref": "MyLayer" } ], "StackId": { "Ref": "MyStack" }, "InstanceType": "c3.large", "SshKeyName": { "Ref": "EC2KeyPairName" } } } }, "Outputs": { "StackId": { "Description": "Stack ID for the newly created AWS OpsWorks stack", "Value": { "Ref": "MyStack" } } } }
  2. Faça login no AWS Management Console e abra o AWS CloudFormation console em https://console.aws.amazon.com/cloudformation.

  3. Na página AWS CloudFormation inicial, escolha Criar pilha.

  4. Na página Select Template, na área Choose a template, selecione a opção Upload a template to Amazon S3 e, em seguida, Browse.

  5. Navegue até o AWS CloudFormation modelo que você salvou na etapa 1 e escolha Abrir. Na página Select Template, escolha Next.

    Selecione a página Modelo do assistente AWS CloudFormation Create Stack.
  6. Na página Especificar detalhes, nomeie a pilha CodePipelineDemoou qualquer nome de pilha que seja exclusivo da sua conta. Se você escolher um nome diferente para a pilha, altere o nome da pilha durante esta demonstração.

  7. Na área Parâmetros, forneça o nome de um key pair do EC2 que você deseja usar para acessar sua instância do AWS OpsWorks Stacks depois que ela for criada. Escolha Próximo.

  8. Na página Options (Opções), escolha Next (Avançar). (As configurações desta página não são necessárias nesta demonstração.)

  9. O AWS CloudFormation modelo que você usa neste passo a passo cria funções do IAM, um perfil de instância e uma instância.

    Importante

    Antes de escolher Criar, escolha Custo para estimar os encargos que podem ser gerados AWS pela criação de recursos com esse modelo.

    Se a criação de recursos do IAM for aceitável, marque a caixa de seleção Eu reconheço que esse modelo pode causar AWS CloudFormation a criação de recursos do IAM e escolha Criar. Se a criação de recursos do IAM não for aceitável, você não poderá continuar esse procedimento.

  10. No AWS CloudFormation painel, você pode ver o progresso da criação da pilha. Antes de passar para a próxima etapa, aguarde até que CREATE_COMPLETE seja exibido na coluna Status.

    AWS CloudFormation painel mostrando a criação da pilha.
Para verificar a criação da pilha em AWS OpsWorks Pilhas
  1. Abra o AWS OpsWorks console em https://console.aws.amazon.com/opsworks/.

  2. No painel de AWS OpsWorks pilhas, veja a pilha que você criou.

    AWS OpsWorks painel mostrando a criação da pilha.
  3. Abra a pilha e exiba a camada e a instância. Observe que a camada e a instância foram criadas com os nomes e outros metadados fornecidos no AWS CloudFormation modelo. Você está pronto para configurar sua pilha e sua camada para usar livros de receitas e receitas personalizados do Chef.