本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 1:在「堆疊」中建立堆 AWS OpsWorks 疊、圖層和實體
重要
該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post
若要使用 AWS OpsWorks Stacks 做為管線的部署提供者,您必須先在該層中具有堆疊、層和至少一個執行個體。雖然您可以按照 Linux 堆 AWS OpsWorks 疊入門或 Windows 堆疊入門中的指示在堆疊中建立堆疊,但為了節省您的時間,本範例會使用範 AWS CloudFormation 本來建立以 Linux 為基礎的 Chef 12 堆疊、層和執行個體。此範本建立的執行個體會執行 Amazon Linux 2016.03,且執行個體類型為 c3.large
。雖然範本不會設定您的堆疊使用自訂技術指南,但您稍後仍會在演練中執行此作業。
重要
AWS CloudFormation 範本必須與稍後將應用程式上傳到的 Amazon S3 儲存貯體以及稍後建立管道所在的相同區域中存放和執行 CodePipeline。目前,僅 CodePipeline 支援美國東部 (維吉尼亞北部) 區域 (us-east-1) 的 AWS OpsWorks 堆疊提供者。本逐步解說中的所有資源應建立於美國東部 (維吉尼亞北部) 區域。
如果堆疊建立失敗,您可能會接近帳戶允許的最大IAM角色數目。如果您的帳戶無法啟動執行個體類型為 c3.large
的執行個體,堆疊建立也可能失敗。例如,如果您使用的是 AWS
免費方案,您可能會收到類似的錯誤訊息Root device type: must be included in
EBS
。如果您的帳戶對於允許建立的執行個體類型有限制,例如 AWS 免費方案的限制,請嘗試將範本執行個體區塊中的InstanceType
參數值變更為您的帳戶可以使用的執行個體類型。
若要使用建立堆疊、圖層和實體 AWS CloudFormation
-
將以下 AWS CloudFormation 範本複製到新的純文字文件中。將檔案儲存到本機電腦上方便的位置,並將其命名為 NewOpsWorksStack.template 或其他方便您使用的名稱。
{ "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" } } } }
登入 AWS Management Console 並在 https://console.aws.amazon.com/cloudFormation
中開啟 AWS CloudFormation 主控台。 -
在 AWS CloudFormation 首頁上,選擇 [建立堆疊]。
-
在 Select Template (選取範本) 頁面上的 Choose a template (選擇範本) 區域中,選擇 Upload a template to Amazon S3 (將範本上傳至 Amazon S3),然後選擇 Browse (瀏覽)。
-
瀏覽至您在步驟 1 中儲存的 AWS CloudFormation 範本,然後選擇「開啟」。在 Select Template (選取範本) 頁面上,請選擇 Next (下一步)。
-
在 [指定詳細資料] 頁面上 CodePipelineDemo,命名堆疊或帳戶專屬的任何堆疊名稱。如果您選擇不同的堆疊名稱,請變更整個本演練中該堆疊的名稱。
-
在 [參數] 區域中,提供建立 AWS OpsWorks Stacks 執行個體後要用來存取其 EC2 key pair 的名稱。選擇 Next (下一步)。
-
在選項頁面上,選擇下一步。(本演練不需要執行此頁面上的設定。)
-
您在本逐步解說中使用的 AWS CloudFormation 範本會建立IAM角色、執行個體設定檔和執行個體。
重要
選擇 [建立] 之前,請選擇 [成本] 以預估使用此範本建立 AWS 資源時可能產生的費用。
如果可 AWS CloudFormation 以接受建立IAM資源,請選取 [我確認此範本可能造成建立IAM資源] 核取方塊,然後選擇 [建立]。如果無法接受建立IAM資源,則無法繼續執行此程序。
-
在 AWS CloudFormation 儀表板上,您可以檢視堆疊的建立進度。繼續執行下一個步驟之前,請先等待「狀態」欄中顯示 CREATE_ COMPLETE。
確認堆 AWS OpsWorks 疊中的堆疊建立
在開啟 AWS OpsWorks 主控台https://console.aws.amazon.com/opsworks/
。 -
在「 AWS OpsWorks 堆疊」儀表板上,檢視您建立的堆疊。
-
開啟堆疊並檢視 layer 和執行個體。請注意,圖層和實體是使用範 AWS CloudFormation 本中提供的名稱和其他中繼資料建立的。您已準備好設定您的堆疊和 layer 使用自訂的 Chef 技術指南和配方。