Ao criar um serviço no Compute Nest, o provedor deve fornecer um modelo. Escreva o modelo e cole seu conteúdo no editor de modelos do console do Compute Nest ou faça upload do arquivo correspondente. Este tópico usa a criação de uma Virtual Private Cloud (VPC) como exemplo para descrever como escrever um modelo em JSON ou YAML e validá-lo no console do Resource Orchestration Service (ROS).
Informações básicas
Os modelos no Compute Nest são, essencialmente, modelos do Resource Orchestration Service (ROS). Você pode escrever um modelo de stack que siga as especificações definidas pelo ROS. No modelo, defina os recursos de nuvem necessários, como instâncias ECS e instâncias do ApsaraDB RDS, além das dependências entre eles. O mecanismo de orquestração do ROS cria e configura automaticamente todos os recursos com base no seu modelo, permitindo implantação e operações automatizadas. O Resource Orchestration Service é um serviço da Alibaba Cloud que simplifica o gerenciamento de recursos na nuvem. Para obter mais informações, consulte O que é o Resource Orchestration Service?.
Escrever um modelo
O ROS suporta modelos escritos em sintaxe JSON/YAML e Terraform. Crie um modelo modificando um exemplo ou desenvolvendo-o do zero.
-
Para cenários comuns, o ROS fornece exemplos de modelos. Selecione e modifique um modelo de referência adequado na página Template Samples do console do ROS. Os modelos da categoria ISV Software Deployment, em Scenarios, são frequentemente utilizados em cenários do Compute Nest. As etapas de modificação desses exemplos constam nas descrições dos próprios modelos.
Caso utilize um modelo de exemplo e precise apenas de alterações simples, recomendamos pular diretamente para a seção Validar o modelo no console do ROS. Nesse caso, selecione e modifique o modelo de exemplo durante a criação da stack.
-
Em cenários complexos, utilize qualquer editor de texto para escrever seu modelo do zero.
-
Se você possui projetos Terraform complexos com múltiplos arquivos, recomendamos converter seu modelo Terraform para o formato de modelo ROS. Isso permite empacotar toda a sua configuração Terraform em um único arquivo. Ao colar esse modelo formatado para ROS no console do Compute Nest, o sistema reconhece automaticamente o conteúdo como uma implantação Terraform. Tal abordagem simplifica o processo e elimina a necessidade de fazer upload de vários arquivos Terraform. Para converter um modelo Terraform para o formato ROS, siga estas etapas:
-
Instale o ROS Template Transformer. Recomendamos o uso do pip. Para mais detalhes sobre outros métodos de instalação, consulte Instalar o conversor de modelos.
pip install alibabacloud-ros-tran -
Coloque todos os seus arquivos Terraform em um único diretório. Execute o comando abaixo para converter o modelo Terraform em um modelo ROS. Substitua {terraform_path} pelo caminho do diretório pai dos seus arquivos Terraform.
rostran transform {terraform_path} -S terraform --force --compatible --target-format yaml Cole o modelo ROS gerado na etapa anterior no console do Compute Nest. Selecione ROS como método de implantação. O sistema reconhecerá automaticamente o conteúdo como um modelo Terraform e definirá o método de implantação como Terraform.
-
O modelo YAML a seguir demonstra como criar uma instância ECS:
ROSTemplateFormatVersion: '2015-09-01'
# Parameters
Parameters:
PayType:
Type: String
Label:
en: ECS instance charge type
Default: PostPaid
AllowedValues:
- PostPaid
- PrePaid
AssociationProperty: ChargeType
AssociationPropertyMetadata:
LocaleKey: InstanceChargeType
PayPeriodUnit:
Type: String
Label:
en: Pay period unit
Default: Month
AllowedValues:
- Month
- Year
AssociationProperty: PayPeriodUnit
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${PayType}
- PostPaid
PayPeriod:
Type: Number
Description:
en: When the subscription duration is Month, the value of Period ranges from 1 to 9, 12, 24, 36, 48, or 60. <br><b><font color='red'> This parameter is valid only when the billing method for the ECS instance is PrePaid. </b></font>
Label:
en: Period
Default: 1
AllowedValues:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
AssociationProperty: PayPeriod
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${PayType}
- PostPaid
EcsInstanceType:
Type: String
Label:
en: Instance type
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ${ZoneId}
InstanceChargeType: ${InstanceChargeType}
InstancePassword:
NoEcho: true
Type: String
Description:
en: The password for logging on to the server. The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters, such as ()`~!@#$%^&*_-+=|{}[]:;<>,.?/.
Label:
en: Instance password
ConstraintDescription:
en: The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters, such as ()`~!@#$%^&*_-+=|{}[]:;<>,.?/.
AssociationProperty: ALIYUN::ECS::Instance::Password
AllowedPattern: '^[a-zA-Z0-9-\(\)\`\~\!\@\#\$\%\^\&\*\_\-\+\=\|\{\}\[\]\:\;\<\>\,\.\?\/]*$'
MinLength: 8
MaxLength: 30
ZoneId:
Type: String
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
Label:
en: vSwitch availability zone
VpcId:
AssociationProperty: ALIYUN::ECS::VPC::VPCId
Type: String
Description:
en: The ID of the VPC where you want to deploy the resources. The ID usually starts with `vpc-`.
Label:
en: VPC ID
VSwitchId:
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
AssociationPropertyMetadata:
VpcId: ${VpcId}
ZoneId: ${ZoneId}
Type: String
Description:
en: The ID of the vSwitch in the specified VPC and availability zone.
Label:
en: vSwitch ID
# Resources
Resources:
EcsSecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
SecurityGroupName:
Ref: ALIYUN::StackName
VpcId:
Ref: VpcId
# Ingress rule for the security group
SecurityGroupIngress:
- PortRange: 80/80
Priority: 1
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
NicType: internet
EcsInstanceGroup:
Type: ALIYUN::ECS::InstanceGroup
Properties:
# Instance name
InstanceName:
Fn::Join:
- '-'
- - Ref: ALIYUN::StackName
- '[1,4]'
IoOptimized: optimized
# Billing method
InstanceChargeType:
Ref: PayType
PeriodUnit:
Ref: PayPeriodUnit
Period:
Ref: PayPeriod
# Network configuration
VpcId:
Ref: VpcId
ZoneId:
Ref: ZoneId
VSwitchId:
Ref: VSwitchId
SecurityGroupId:
Ref: EcsSecurityGroup
# Disk type and size
SystemDiskCategory: cloud_essd
SystemDiskSize: 200
MaxAmount: 1
# Image
ImageId: centos_7
# Instance type
InstanceType:
Ref: EcsInstanceType
Password:
Ref: InstancePassword
# Enable public IP
AllocatePublicIP: true
# Public bandwidth
InternetMaxBandwidthOut: 1
ECSRunCommand:
Type: ALIYUN::ECS::RunCommand
Properties:
InstanceIds:
Fn::GetAtt:
- EcsInstanceGroup
- InstanceIds
Type: RunShellScript
Sync: true
Timeout: 3600
CommandContent: |-
#!/bin/bash
# Outputs
Outputs:
# Display the public IP address as an HTTP endpoint in the console
Endpoint:
Description:
en: Public IP addresses
Value:
Fn::Sub:
- http://${ServerAddress}
- ServerAddress:
Fn::Select:
- 0
- Fn::GetAtt:
- EcsInstanceGroup
- PublicIps
# Metadata
Metadata:
ALIYUN::ROS::Interface:
# Group information
ParameterGroups:
- Parameters:
- PayType
- PayPeriodUnit
- PayPeriod
Label:
default:
en: Paytype configuration
- Parameters:
- EcsInstanceType
- InstancePassword
Label:
default:
en: ECS instance configuration
- Parameters:
- ZoneId
- VpcId
- VSwitchId
Label:
default:
en: Choose existing infrastructure
Um modelo possui quatro seções principais: Parameters, Resources, Outputs e Metadata.
Parameters
A seção Parameters define os parâmetros que os usuários configuram ao criar uma instância de serviço. A tabela a seguir descreve os parâmetros deste exemplo.
|
Parâmetro |
Descrição |
|
PayType |
Método de faturamento da instância. |
|
PayPeriodUnit |
Unidade de duração da assinatura. |
|
PayPeriod |
Duração da assinatura. |
|
EcsInstanceType |
Tipo da instância ECS. |
|
InstancePassword |
Senha da instância ECS. |
|
ZoneId |
Zona de disponibilidade do vSwitch. |
|
VpcId |
ID da VPC. |
|
VSwitchId |
ID do vSwitch. |
Resources
A seção Resources especifica os recursos a serem criados, incluindo Type e Properties de cada recurso. A tabela abaixo detalha os recursos definidos neste exemplo.
|
Tipo de recurso |
Descrição |
|
ALIYUN::ECS::SecurityGroup |
Cria um grupo de segurança ECS. |
|
ALIYUN::ECS::InstanceGroup |
Provisiona uma instância ECS. |
|
ALIYUN::ECS::RunCommand |
Executa um script shell na instância ECS. |
Consulte o Índice de tipos de recursos para verificar a sintaxe, propriedades e valores de retorno (outputs) de cada tipo de recurso da Alibaba Cloud. Essas informações auxiliam na declaração de requisitos específicos de recursos nos seus modelos.
Outputs
A seção Outputs determina as informações retornadas após a criação do serviço. Neste exemplo, a saída é um Endpoint (http://PublicIp). Após a criação dos recursos, os usuários podem utilizar esse endereço para acessar o serviço.
Metadata
A seção Metadata permite agrupar parâmetros definidos na seção Parameters e ocultar parâmetros personalizados. O resultado é visível na página Configure Parameters do console do ROS. A tabela a seguir lista os grupos de parâmetros deste exemplo.
|
Nome do grupo |
Parâmetro |
|
Paytype configuration |
PayType |
|
PayPeriodUnit |
|
|
PayPeriod |
|
|
ECS instance configuration |
EcsInstanceType |
|
InstancePassword |
|
|
Choose existing infrastructure |
ZoneId |
|
VpcId |
|
|
VSwitchId |
Também é possível utilizar recursos avançados, como Mappings e Conditions. Para mais informações, consulte Estrutura do modelo.
Além disso, você pode usar o Terraform para criar um modelo. Para detalhes, veja Criar um modelo Terraform.
Validar o modelo no console do ROS
Após escrever o modelo, valide-o criando uma stack no console do ROS.
Faça login no console do ROS.
No painel de navegação à esquerda, clique em Stacks.
No canto superior esquerdo da página, clique em Create Stack.
-
Na página Create Stack, configure os parâmetros necessários.
Na seção Specify Template, selecione Select an Existing Template e cole seu modelo no editor de conteúdo. Alternativamente, escolha Use a Sample Template e modifique-o conforme necessário.
Clique em Next. Na página Configure Parameters, verifique os parâmetros. Opcionalmente, clique em Preview Template Resources para revisar as configurações de recursos.
Opcional: Clique em Next. Na página Compliance Precheck (Optional), configure os parâmetros desejados.
Opcional: Clique em Next. Na página Check and Confirm (Optional), confirme suas configurações.
Clique em Create.
NotaAs etapas Configure Stack (Optional) e Check and Confirm (Optional) são opcionais e podem ser ignoradas.
Se a stack for criada com sucesso, seu modelo será considerado válido. Caso a criação falhe, visualize a mensagem de erro e modifique o modelo adequadamente.