AWS::OpsWorksCM::Server - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::OpsWorksCM::Server

AWS::OpsWorksCM::Server 资源为 Chef Automate 或 AWS OpsWorks for Puppet Enterprise 配置管理服务器创建 AWS OpsWorks。有关更多信息,请参阅AWS OpsWorks 用户指南中的在 AWS CloudFormation 中创建 Chef Automate 服务器在 AWS CloudFormation 中创建 Puppet Enterprise Master,以及 AWS OpsWorks CM API 参考 中的 CreateServer

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::OpsWorksCM::Server", "Properties" : { "AssociatePublicIpAddress" : Boolean, "BackupId" : String, "BackupRetentionCount" : Integer, "CustomCertificate" : String, "CustomDomain" : String, "CustomPrivateKey" : String, "DisableAutomatedBackup" : Boolean, "Engine" : String, "EngineAttributes" : [ EngineAttribute, ... ], "EngineModel" : String, "EngineVersion" : String, "InstanceProfileArn" : String, "InstanceType" : String, "KeyPair" : String, "PreferredBackupWindow" : String, "PreferredMaintenanceWindow" : String, "SecurityGroupIds" : [ String, ... ], "ServerName" : String, "ServiceRoleArn" : String, "SubnetIds" : [ String, ... ], "Tags" : [ Tag, ... ] } }

YAML

Type: AWS::OpsWorksCM::Server Properties: AssociatePublicIpAddress: Boolean BackupId: String BackupRetentionCount: Integer CustomCertificate: String CustomDomain: String CustomPrivateKey: String DisableAutomatedBackup: Boolean Engine: String EngineAttributes: - EngineAttribute EngineModel: String EngineVersion: String InstanceProfileArn: String InstanceType: String KeyPair: String PreferredBackupWindow: String PreferredMaintenanceWindow: String SecurityGroupIds: - String ServerName: String ServiceRoleArn: String SubnetIds: - String Tags: - Tag

属性

AssociatePublicIpAddress

将公有 IP 地址与您正在启动的服务器关联。有效值为 truefalse。默认值为 true

必需:否

类型:布尔值

Update requires: Replacement

BackupId

如果您指定此字段,则 AWS OpsWorks CM 使用由 BackupId 表示的备份创建服务器。

必需:否

类型:字符串

最高79

模式[a-zA-Z][a-zA-Z0-9\-\.\:]*

Update requires: Replacement

BackupRetentionCount

您希望保留的自动化备份数量。每当创建新备份时,如果超过这一数量,AWS OpsWorks CM 就会将最早的备份删除。默认值为 1

必需:否

类型:整数

最低1

Update requires: No interruption

CustomCertificate

仅在运行 Chef Automate 2.0 的服务器上支持。PEM 格式的 HTTPS 证书。该值可以是单个自签名证书或证书链。如果指定自定义证书,您还必须指定 CustomDomainCustomPrivateKey 的值。以下是 CustomCertificate 值的要求:

  • 您可以提供自签名的自定义证书或完整的证书链。

  • 证书必须是有效的 X509 证书或 PEM 格式的证书链。

  • 证书在上传时必须是有效的。您不能在证书有效期开始(证书的 NotBefore 日期)之前或证书有效期到期(证书的 NotAfter 日期)之后使用证书。

  • 证书的公用名或使用者备用名称 (SAN)(如果存在)必须与 CustomDomain 值匹配。

  • 证书必须与 CustomPrivateKey 值匹配。

必需:否

类型:字符串

最高2097152

模式(?s)\s*-----BEGIN CERTIFICATE-----.+-----END CERTIFICATE-----\s*

Update requires: Replacement

CustomDomain

仅在运行 Chef Automate 2.0 的服务器上支持。服务器的可选公有终端节点,例如 https://aws.my-company.com。要访问服务器,请在首选 DNS 服务中创建 CNAME DNS 记录,以将自定义域指向在创建服务器时生成的终端节点(CreateServer 终端节点属性的值)。如果服务器使用自定义域,则无法使用生成的 Endpoint 值访问服务器。如果指定自定义域,您还必须指定 CustomCertificateCustomPrivateKey 的值。

必需:否

类型:字符串

最高253

模式^(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])$

Update requires: Replacement

CustomPrivateKey

仅在运行 Chef Automate 2.0 的服务器上支持。PEM 格式的私有密钥,用于使用 HTTPS 连接到服务器。私有密钥不得加密;无法使用密码或密码短语保护它。如果指定自定义私有密钥,您还必须指定 CustomDomainCustomCertificate 的值。

必需:否

类型:字符串

最高4096

模式(?ms)\s*^-----BEGIN (?-s:.*)PRIVATE KEY-----$.*?^-----END (?-s:.*)PRIVATE KEY-----$\s*

Update requires: Replacement

DisableAutomatedBackup

启用或禁用定期备份。有效值为 truefalse。默认值为 true

必需:否

类型:布尔值

Update requires: No interruption

Engine

要使用的配置管理引擎。有效值包括 ChefAutomatePuppet

必需:否

类型:字符串

最高10000

模式(?s).*

Update requires: Replacement

EngineAttributes

所指定服务器上的可选引擎属性。

Chef createServer 请求中接受的属性:

  • CHEF_AUTOMATE_PIVOTAL_KEY:base64 编码的 RSA 公有密钥。需要有相应的私有密钥才能访问 Chef API。当未设置 CHEF_AUTOMATE_PIVOTAL_KEY 时,会在响应中生成并返回一个私有密钥。当指定 CHEF_AUTOMATE_PIVOTAL_KEY 的值作为 AWS CloudFormation 控制台中的参数时,您必须在 Pivotal 密钥值的每个行的末尾添加换行符 (\n)。

  • CHEF_AUTOMATE_ADMIN_PASSWORD:Chef Automate 基于 Web 的控制面板中管理用户的密码。该密码的最小长度为 8 个字符,最大长度为 32 个字符。该密码可以包含字母、数字和特殊字符 (!/@#$%^&+=_)。该密码必须至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符。当没有设置 CHEF_AUTOMATE_ADMIN_PASSWORD 时,会在响应中生成并返回一个密码。

Puppet createServer 请求中接受的属性:

  • PUPPET_ADMIN_PASSWORD:要使用 Puppet Enterprise 控制台,密码必须使用 ASCII 字符。

  • PUPPET_R10K_REMOTE:r10k remote 是您的控件存储库的 URL(例如 ssh://git@your.git-repo.com:user/control-repo.git)。指定 r10k remote 可打开 TCP 端口 8170。

  • PUPPET_R10K_PRIVATE_KEY:如果您使用的是私有 Git 存储库,请添加 PUPPET_R10K_PRIVATE_KEY 以指定一个 PEM 编码的私有 SSH 密钥。

必需:否

类型EngineAttribute 的列表

Update requires: No interruption

EngineModel

服务器的引擎模型。此版本中的有效值包括用于 Puppet 的 Monolithic 和用于 Chef 的 Single

必需:否

类型:字符串

最高10000

模式(?s).*

Update requires: Replacement

EngineVersion

要使用的引擎的主要发布版本。对于 Chef 服务器,EngineVersion 当前的有效值是 2。对于 Puppet 服务器,有效值是 2017

必需:否

类型:字符串

最高10000

模式(?s).*

Update requires: Replacement

InstanceProfileArn

您的 Amazon EC2 实例使用的实例配置文件的 ARN。

必需:是

类型:字符串

最高10000

模式arn:aws:iam::[0-9]{12}:instance-profile/.*

Update requires: Replacement

InstanceType

要使用的 Amazon EC2 实例类型。例如:m5.large

必需:是

类型:字符串

最高10000

模式(?s).*

Update requires: Replacement

KeyPair

为实例设置的 Amazon EC2 密钥对。此参数是可选的;如果需要,您可以指定此参数,以使用 SSH 连接到您的实例。

必需:否

类型:字符串

最高10000

模式.*

Update requires: Replacement

PreferredBackupWindow

启用了自动备份时,AWS OpsWorks CM 备份服务器上应用程序级数据的一小时时段的开始时间。有效值必须按下面的其中一种格式指定:

  • HH:MM,表示每日备份

  • DDD:HH:MM,表示每周备份

MM 必须指定为 00。指定的时间为协调世界时 (UTC)。默认值为随机每日开始时间。

示例:08:00,表示开始时间为每日 08:00 UTC。

示例:Mon:08:00,表示开始时间为每个星期一的 08:00 UTC。(上午 8:00)

必需:否

类型:字符串

Update requires: No interruption

PreferredMaintenanceWindow

每周一小时时段的开始时间,在此期间 AWS OpsWorks CM 对实例执行维护。有效值必须按以下格式指定:DDD:HH:MMMM 必须指定为 00。指定的时间为协调世界时 (UTC)。默认值为星期二、星期三或星期五的一小时随机时间段。参阅 TimeWindowDefinition 了解更多信息。

示例:Mon:08:00,表示开始时间为每个星期一的 08:00 UTC。(上午 8:00)

必需:否

类型:字符串

Update requires: No interruption

SecurityGroupIds

附加到 Amazon EC2 实例的安全组 ID 的列表。如果添加此参数,则指定的安全组必须位于 SubnetIds 指定的 VPC 内。

如果您不指定此参数,AWS OpsWorks CM 会创建一个新的安全组,它使用 TCP 端口 22 和 443,对 0.0.0.0/0(所有人)开放。

必需:否

类型:字符串列表

Update requires: Replacement

ServerName

服务器的名称。服务器名称在您的 AWS 账户内、在每个区域内必须是唯一的。服务器名称必须以字母开头;然后允许字母、数字或连字符 (-),最多 40 个字符。

必需:否

类型:字符串

最低1

最高40

模式[a-zA-Z][a-zA-Z0-9\-]*

Update requires: Replacement

ServiceRoleArn

AWS OpsWorks CM 服务后端用于处理您的账户的服务角色。虽然 AWS OpsWorks 管理控制台通常会为您创建服务角色,但如果您使用的是 AWS CLI 或 API 命令,请运行位于 https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-roles.yaml 的 service-role-creation.yaml AWS CloudFormation 模板。此模板创建一个 CloudFormation 堆栈,其中包含您需要的服务角色和实例配置文件。

必需:是

类型:字符串

最高10000

模式arn:aws:iam::[0-9]{12}:role/.*

Update requires: Replacement

SubnetIds

要在其中启动服务器 EC2 实例的子网的 ID。

Amazon EC2-Classic 客户:此字段是必填字段。所有服务器必须在一个 VPC 中运行。该 VPC 必须已启用“自动分配公有 IP”。

EC2-VPC 客户:此字段是可选字段。如果未指定子网 ID,则会在 Amazon EC2 选择的默认子网中创建 EC2 实例。如果您指定子网 ID,VPC 必须已启用“自动分配公有 IP”。

有关支持的 Amazon EC2 平台的更多信息,请参阅支持的平台

必需:否

类型:字符串列表

Update requires: Replacement

Tags

一个映射,包含要附加到 AWS OpsWorks for Chef Automate 或 AWS OpsWorks for Puppet Enterprise 服务器的标签键和标签值。

  • 键不能为空。

  • 键最多可包含 127 个字符,并且只能包含 Unicode 字母、数字或分隔符,或以下特殊字符:+ - = . _ : / @

  • 值最多可包含 255 个字符,并且只能包含 Unicode 字母、数字或分隔符,或以下特殊字符:+ - = . _ : / @

  • 从键和值中修剪前导和尾随空格。

  • 对于任何 AWS OpsWorks-CM 服务器,最多允许使用 50 个用户应用的标签。

必需:否

类型Tag 的列表

最高200

Update requires: No interruption

返回值

Ref

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回服务器的 ARN,例如 arn:aws:OpsWorksCM:us-east-1:123456789012:server/server-a1bzhi

For more information about using the Ref function, see Ref.

Fn::GetAtt

Fn::GetAtt 内部函数返回此类型的一个指定属性的值。以下为可用属性和示例返回值。

有关使用 Fn::GetAtt 内部函数的更多信息,请参阅 Fn::GetAtt

Arn

服务器的 Amazon 资源名称 (ARN),例如 arn:aws:OpsWorksCM:us-east-1:123456789012:server/server-a1bzhi

Endpoint

可用于访问引擎的 DNS 名称。示例: myserver-asdfghjkl.us-east-1.opsworks.io.

Id

Not currently supported by AWS CloudFormation.

示例

创建 AWS OpsWorks for Chef Automate 服务器

以下示例创建一个 AWS OpsWorks for Chef Automate 服务器。

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "PivotalKey": { "Type": "String" }, "Password": { "Type": "String" } }, "Resources": { "MyChefServer": { "Type": "AWS::OpsWorksCM::Server", "Properties": { "BackupRetentionCount": "12", "CustomCertificate": "-----BEGIN CERTIFICATE----- EXAMPLEqEXAMPLE== -----END CERTIFICATE-----", "CustomDomain": "https://aws.my-company.com", "CustomPrivateKey": "-----BEGIN RSA PRIVATE KEY----- EXAMPLEqEXAMPLE= -----END RSA PRIVATE KEY-----", "DisableAutomatedBackup": false, "Engine": "ChefAutomate", "EngineVersion": "2", "EngineAttributes": [ { "Name": "CHEF_AUTOMATE_PIVOTAL_KEY", "Value": { "Ref": "PivotalKey" } }, { "Name": "CHEF_AUTOMATE_ADMIN_PASSWORD", "Value": { "Ref": "Password" } } ], "EngineModel": "Single", "InstanceProfileArn": "INSTANCE-PROFILE-ARN", "InstanceType": "r5.xlarge", "PreferredBackupWindow": "08:00", "PreferredMaintenanceWindow": "Fri:08:00", "ServiceRoleArn": "SERVICE-ROLE-ARN" "Tags": [ { "Key": "Stage", "Value": "Production" }, { "Key": "Name", "Value": "test-owcm-server" } ] } } }, "Outputs": { "endpoint": { "Description": "OpsWorksCM Server Endpoint", "Value": { "Fn::GetAtt": [ "MyChefServer", "Endpoint" ] } } } }

YAML

AWSTemplateFormatVersion: '2010-09-09' Parameters: PivotalKey: Type: String Password: Type: String Resources: MyChefServer: Type: AWS::OpsWorksCM::Server Properties: BackupRetentionCount: '12' CustomCertificate: '-----BEGIN CERTIFICATE----- EXAMPLEqEXAMPLE== -----END CERTIFICATE-----' CustomDomain: 'https://aws.my-company.com' CustomPrivateKey: '-----BEGIN RSA PRIVATE KEY----- EXAMPLEqEXAMPLE= -----END RSA PRIVATE KEY-----' DisableAutomatedBackup: False Engine: 'ChefAutomate' EngineVersion: '2' EngineAttributes: - Name: "CHEF_AUTOMATE_PIVOTAL_KEY" Value: Ref: PivotalKey - Name: "CHEF_AUTOMATE_ADMIN_PASSWORD" Value: Ref: Password EngineModel: 'Single' InstanceProfileArn: "INSTANCE-PROFILE-ARN" InstanceType: 'r5.xlarge' PreferredBackupWindow: '08:00' PreferredMaintenanceWindow: 'Fri:08:00' ServiceRoleArn: "SERVICE-ROLE-ARN" Tags: - Key: "Stage" Value: "Production" - Key: "Name" Value: "test-owcm-server" Outputs: endpoint: Description: OpsWorksCM Server Endpoint Value: !GetAtt [MyChefServer, Endpoint]

创建 AWS OpsWorks for Puppet Enterprise 服务器

以下示例创建一个 AWS OpsWorks for Puppet Enterprise 服务器。

JSON

{ "AWSTemplateFormatVersion": "2010-09-09", "Description": "My OpsWorksCM Managed Server", "Parameters": { "AdminPassword": { "Type": "String" } }, "Resources": { "TestServerDeleteMe": { "Type": "AWS::OpsWorksCM::Server", "Properties": { "AssociatePublicIpAddress": true, "BackupRetentionCount": "12", "DisableAutomatedBackup": false, "Engine": "Puppet", "EngineVersion": "2017", "EngineAttributes": [ { "Name": "PUPPET_ADMIN_PASSWORD", "Value": { "Ref": "AdminPassword" } } ], "EngineModel": "Single", "InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/MyInstanceProfile", "InstanceType": "m4.xlarge", "PreferredBackupWindow": "08:00", "PreferredMaintenanceWindow": "Fri:08:00", "ServiceRoleArn": "arn:aws:iam::123456789012:role/MyServiceRole" "Tags": [ { "Key": "Stage", "Value": "Production" }, { "Key": "Name", "Value": "test-owcm-server" } ] } } } }

YAML

AWSTemplateFormatVersion: '2010-09-09' Description: My OpsWorksCM managed server. Parameters: AdminPassword: Type: String Resources: MyPuppetServer: Type: AWS::OpsWorksCM::Server Properties: BackupRetentionCount: '12' DisableAutomatedBackup: False Engine: 'Puppet' EngineVersion: '2017' EngineAttributes: - Name: "PUPPET_ADMIN_PASSWORD" Value: Ref: AdminPassword EngineModel: 'Monolithic' InstanceProfileArn: "INSTANCE-PROFILE-ARN" InstanceType: 'm4.large' PreferredBackupWindow: '08:00' PreferredMaintenanceWindow: 'Fri:08:00' ServiceRoleArn: "SERVICE-ROLE-ARN" Tags: - Key: "Stage" Value: "Production" - Key: "Name" Value: "test-owcm-server" Outputs: endpoint: Description: OpsWorksCM Server Endpoint Value: !GetAtt [MyPuppetServer, Endpoint]

另请参阅