Paso 1: Crear una pila, una capa y una instancia en AWS OpsWorks Stacks - AWS OpsWorks

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Paso 1: Crear una pila, una capa y una instancia en AWS OpsWorks Stacks

importante

El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los existentes. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en AWS Re:post o a través de Premium AWS Support.

Para usar AWS OpsWorks Stacks como proveedor de despliegue para una canalización, primero debes tener una pila, una capa y al menos una instancia en la capa. Si bien puedes crear una pila en AWS OpsWorks Stacks siguiendo las instrucciones de Introducción a Linux Stacks o Introducción a Windows Stacks, para ahorrar tiempo, en este ejemplo se utiliza una AWS CloudFormation plantilla para crear una pila, capa e instancia de Chef 11.10 basadas en Linux. La instancia que se crea con esta plantilla ejecuta Amazon Linux 2016.03 y tiene un tipo de instancia c3.large.

importante

La AWS CloudFormation plantilla debe almacenarse y ejecutarse en la misma región que el bucket de Amazon S3 en el que más adelante cargue la aplicación y en la misma región en la que posteriormente cree su canalización CodePipeline. En este momento, solo CodePipeline es compatible con el proveedor de AWS OpsWorks Stacks en la región EE. UU. Este (Virginia del Norte) (us-east-1). Todos los recursos de este tutorial deben crearse en la región Este de EE. UU. (Norte de Virginia).

Si se produce algún error durante la creación de la pila, es posible que esté a punto de alcanzar el número máximo permitido de roles de IAM para su cuenta. La creación de la pila también puede generar un error si su cuenta no puede lanzar instancias con el tipo de instancia c3.large. Por ejemplo, si está utilizando la capa gratuita de AWS , es posible que reciba un error, p. ej., Root device type: must be included in EBS. Si tu cuenta tiene limitaciones en cuanto a los tipos de instancias que puedes crear, como las que impone la capa AWS gratuita, intenta cambiar el valor del InstanceType parámetro del bloque de instancias de la plantilla por un tipo de instancia que pueda usar tu cuenta.

Para crear una pila, una capa y una instancia mediante AWS CloudFormation
  1. Copia la siguiente AWS CloudFormation plantilla en un nuevo documento de texto sin formato. Guarde el archivo en una ubicación conveniente de su equipo local y asígnele el nombre NewOpsWorksStack.template u otro nombre que le resulte conveniente.

    { "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 allows you to use SSH to connect to the OpsWorks instance." } }, "Resources": { "CPOpsDeploySecGroup": { "Type": "AWS::EC2::SecurityGroup", "Properties": { "GroupDescription" : "Lets you manage OpsWorks instances deployed to by 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": "11.10" }, "DefaultOs": "Amazon Linux 2016.03", "DefaultInstanceProfileArn": { "Fn::GetAtt": [ "OpsWorksInstanceProfile", "Arn" ] } } }, "MyLayer": { "Type": "AWS::OpsWorks::Layer", "Properties": { "StackId": { "Ref": "MyStack" }, "Name": "MyLayer", "Type": "php-app", "Shortname": "mylayer", "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. Inicie sesión en la AWS CloudFormation consola AWS Management Console y ábrala en https://console.aws.amazon.com/cloudformation.

  3. En la página de AWS CloudFormation inicio, selecciona Crear pila.

  4. En la página Select Template (Seleccionar plantilla), en el área Choose a template (Elegir una plantilla), elija Upload a template to Amazon S3 (Cargar una plantilla en Amazon S3) y, a continuación, elija Browse (Explorar).

  5. Busca la AWS CloudFormation plantilla que guardaste en el paso 1 y, a continuación, selecciona Abrir. En la página Select Template, elija Next.

    Seleccione la página de plantillas del asistente AWS CloudFormation Create Stack.
  6. En la página Especificar detalles, asigne un nombre a la pila MyStacko a cualquier pila que sea exclusivo de su cuenta. Si elige otro nombre para la pila, cambie el nombre de la pila en todo este tutorial.

  7. En el área Parámetros, proporciona el nombre de un key pair de EC2 que quieras usar para acceder a tu instancia de AWS OpsWorks Stacks una vez creada. Elija Siguiente.

  8. En la página Opciones, seleccione Siguiente. (La configuración de esta página no es obligatoria en este tutorial).

  9. La AWS CloudFormation plantilla que utilizas en este tutorial crea roles de IAM, un perfil de instancia y una instancia.

    importante

    Antes de elegir Crear, selecciona Coste para estimar los gastos en los que podrías incurrir al crear recursos con esta plantilla. AWS

    Si la creación de recursos de IAM es aceptable, active la casilla Reconozco que esta plantilla podría provocar que AWS cree recursos de IAM y, CloudFormation a continuación, seleccione Crear. Si la creación de recursos de IAM no le parece aceptable, no puede continuar con este procedimiento.

  10. En el AWS CloudFormation panel de control, puede ver el progreso de la creación de la pila. Antes de pasar al paso siguiente, espere hasta que se muestre CREATE_COMPLETE en la columna Status (Estado).

    CloudFormation Panel de AWS que muestra la creación de pilas.
Para verificar la creación de pilas en AWS OpsWorks Stacks
  1. Abre la AWS OpsWorks consola en https://console.aws.amazon.com/opsworks/.

  2. En el panel de control de AWS OpsWorks Stacks, consulta la pila que has creado.

    OpsWorks Panel de AWS que muestra la creación de pilas.
  3. Abra la pila y visualice la capa y la instancia. Observe que la capa y la instancia se crearon con los nombres y demás metadatos proporcionados en la AWS CloudFormation plantilla. Está listo para cargar su aplicación en un bucket de Amazon S3.