Passaggio 1: crea uno stack, un layer e un'istanza in AWS OpsWorks Stacks - AWS OpsWorks

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Passaggio 1: crea uno stack, un layer e un'istanza in AWS OpsWorks Stacks

Importante

Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disattivato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il AWS Support Team su AWS re:post o tramite Premium AWS Support.

Per utilizzare AWS OpsWorks Stacks come provider di distribuzione per una pipeline, devi prima avere uno stack, un layer e almeno un'istanza nel layer. Sebbene sia possibile creare uno stack in AWS OpsWorks Stacks seguendo le istruzioni in Getting Started with Linux Stacks o Getting Started with Windows Stacks, per risparmiare tempo, questo esempio utilizza un AWS CloudFormation modello per creare uno stack, un layer e un'istanza di Chef 12 basati su Linux. L'istanza creata in base a questo modello esegue Amazon Linux 2016.03 ed è di tipo c3.large. Anche se il modello non configura lo stack per l'utilizzo di libri di ricette personalizzati, potrai eseguire questa operazione più avanti nella procedura guidata.

Importante

Il AWS CloudFormation modello deve essere archiviato ed eseguito nella stessa regione del bucket Amazon S3 in cui successivamente carichi l'app e nella stessa regione in cui successivamente crei la pipeline. CodePipeline Al momento, CodePipeline supporta il provider AWS OpsWorks Stacks solo nella regione Stati Uniti orientali (Virginia settentrionale) (us-east-1). Tutte le risorse di questa procedura dettagliata devono essere create nella regione Stati Uniti orientali (Virginia settentrionale).

Se si verifica un errore di creazione dello stack, la causa potrebbe essere il raggiungimento del numero massimo permesso di ruoli IAM per l'account. Può verificarsi un errore nella creazione dello stack anche se l'account non è in grado di avviare istanze di tipo c3.large. Ad esempio, se utilizzi il piano AWS gratuito, potresti ricevere un errore del tipo. Root device type: must be included in EBS Se il tuo account presenta limitazioni sui tipi di istanze che puoi creare, come le limitazioni imposte dal piano AWS gratuito, prova a modificare il valore del InstanceType parametro nel blocco di istanze del modello con un tipo di istanza utilizzabile dal tuo account.

Per creare uno stack, un layer e un'istanza utilizzando AWS CloudFormation
  1. Copiate il seguente AWS CloudFormation modello in un nuovo documento di testo semplice. Salvate il file in una posizione comoda sul computer locale e denominatelo NewOpsWorksStack.template o con un altro nome adatto alle vostre esigenze.

    { "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. Accedi AWS Management Console e apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation.

  3. Nella AWS CloudFormation home page, scegli Crea stack.

  4. Nella pagina Select Template (Seleziona modello) nell'area Choose a template (Scegliere un modello) scegliere Upload a template to Amazon S3 (Carica un modello in Amazon S3) e quindi Browse (Sfoglia).

  5. Vai al AWS CloudFormation modello che hai salvato nel passaggio 1, quindi scegli Apri. Nella pagina Select Template (Seleziona modello), selezionare Next (Avanti).

    Seleziona la pagina Modello della procedura guidata AWS CloudFormation Create Stack.
  6. Nella pagina Specificare i dettagli, assegna un nome allo stack CodePipelineDemoo a qualsiasi altro nome dello stack univoco per il tuo account. Se si sceglie un nome diverso per lo stack, modificare il nome dello stack in tutta questa procedura guidata.

  7. Nell'area Parametri, fornisci il nome di una coppia di key pair EC2 che desideri utilizzare per accedere all'istanza AWS OpsWorks Stacks dopo che è stata creata. Seleziona Avanti.

  8. Nella pagina Opzioni, scegli Avanti. Le impostazioni in questa pagina non sono necessarie per questa procedura guidata.

  9. Il AWS CloudFormation modello utilizzato in questa procedura dettagliata crea ruoli IAM, un profilo di istanza e un'istanza.

    Importante

    Prima di scegliere Create, scegli Costo per stimare gli addebiti che potresti dover sostenere AWS per la creazione di risorse con questo modello.

    Se la creazione di risorse IAM è accettabile, seleziona la casella di controllo Riconosco che questo modello potrebbe causare AWS CloudFormation la creazione di risorse IAM, quindi scegli Crea. Se la creazione di risorse IAM non è accettabile, non puoi continuare con questa procedura.

  10. Nella AWS CloudFormation dashboard, puoi visualizzare lo stato di avanzamento della creazione dello stack. Prima di continuare con la fase successiva, attendere che venga visualizzato il messaggio CREATE_COMPLETE (CREAZIONE_COMPLETATA) nella colonna Status (Stato).

    AWS CloudFormation dashboard che mostra la creazione dello stack.
Per verificare la creazione dello stack in Stacks AWS OpsWorks
  1. Apri la AWS OpsWorks console all'indirizzo https://console.aws.amazon.com/opsworks/.

  2. Nella dashboard AWS OpsWorks Stacks, visualizza lo stack che hai creato.

    AWS OpsWorks dashboard che mostra la creazione dello stack.
  3. Aprire lo stack e visualizzare il livello e l'istanza. Osserva che il layer e l'istanza sono stati creati con i nomi e gli altri metadati forniti nel AWS CloudFormation modello. A questo punto si è pronti per configurare lo stack e il livello per l'utilizzo dei libri di ricette di Chef e le ricette.