Passaggio 1: crea uno stack, un layer e un'istanza in 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 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 Supporto AWS Team su AWS re:post o tramite Premium AWS Support.

Per utilizzare 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 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 OpsWorks Stacks solo nella regione Stati Uniti orientali (Virginia settentrionale) (Virginia settentrionale) (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.rproxy.govskope.ca.cn", "OpsWorksPrincipal": "opsworks.amazonaws.com.rproxy.govskope.ca.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 a AWS Management Console e apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformazione.

  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 EC2 key pair che desideri utilizzare per accedere all'istanza OpsWorks Stacks dopo che è stata creata. Scegli Next (Successivo).

  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. Nel AWS CloudFormation pannello di controllo è possibile visualizzare l'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 OpsWorks
  1. Apri la OpsWorks console all'indirizzo. https://console.aws.amazon.com/opsworks/

  2. Nella dashboard 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.