Cada versão do CentOS exige repositórios yum específicos. O Resource Orchestration Service (ROS) permite criar uma stack que usa mapeamentos para configurar automaticamente o repositório yum correto com base na versão do CentOS da instância ECS.
Etapa 1: Criar o modelo
O modelo a seguir define um objeto Mappings que associa versões do CentOS a URLs de repositórios yum da Alibaba Cloud. Ao iniciar a instância ECS, a função Fn::FindInMap recupera a URL do repositório yum correspondente à versão do CentOS da imagem especificada (InstanceImageId) e substitui o repositório padrão.
ROSTemplateFormatVersion: '2015-09-01'
Description: Creates an ECS instance that runs CentOS and configures the yum repository.
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- VSwitchZoneId
- InstanceImageId
- InstanceType
- SystemDiskSize
- InstancePublicIP
- InstancePassword
- SystemDiskCategory
Label:
default: ECS
TemplateTags:
- Creates VPC ECS instance
Parameters:
SystemDiskCategory:
Type: String
Label:
en: System Disk Type
zh-cn: 系统盘类型
Description:
en: '<font color=''blue''><b>Valid values:</b></font><br>[cloud_efficiency: <font color=''green''>Ultra Disk</font>]<br>[cloud_ssd: <font color=''green''>Standard SSD</font>]<br>[cloud_essd: <font color=''green''>Enhanced SSD</font>]<br>[cloud: <font color=''green''>Basic Disk</font>]<br>[ephemeral_ssd: <font color=''green''>Local SSD</font>]'
zh-cn: '<font color=''blue''><b>可选值:</b></font><br>[cloud_efficiency: <font color=''green''>高效云盘</font>]<br>[cloud_ssd: <font color=''green''>SSD云盘</font>]<br>[cloud_essd: <font color=''green''>ESSD云盘</font>]<br>[cloud: <font color=''green''>普通云盘</font>]<br>[ephemeral_ssd: <font color=''green''>本地SSD盘</font>]'
AllowedValues:
- cloud_efficiency
- cloud_ssd
- cloud
- cloud_essd
- ephemeral_ssd
Default: cloud_ssd
InstanceImageId:
Type: String
Default: centos_7
AllowedValues:
- centos_6
- centos_7
- centos_8
Description:
zh-cn: 镜像ID, 支持选择 [centos_6,centos_7,centos_8]
en: 'The ID of the image. Valid values: [centos_6, centos_7, centos_8].'
Label:
zh-cn: 镜像
en: Image
InstanceType:
Type: String
Description:
zh-cn: 填写VSwitch可用区下可使用的规格;<br>通用规格:<font color='red'><b>ecs.c5.large</b></font><br>注:可用区可能不支持通用规格<br>规格详见:<a href='https://www.alibabacloud.com/help/zh/doc-detail/25378.html' target='_blank'><b><font color='blue'>实例规格族</font></a></b>
en: 'The instance type. The instance type must be available in the VSwitch''s availability zone.<br>Example of a general-purpose instance type: <font color=''red''><b>ecs.c5.large</b></font><br>Note: General-purpose instance types may not be available in all availability zones.<br>For more information, see <a href=''https://www.alibabacloud.com/help/en/doc-detail/25378.html'' target=''_blank''><b><font color=''blue''>Instance families</font></a></b>.'
Label:
zh-cn: 实例规格
en: Instance Type
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: VSwitchZoneId
InstancePassword:
NoEcho: true
Type: String
Description:
en: 'The logon password for the instance. 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. Special characters include ()`~!@#$%^&*_-+=|{}[]:;''<>,.?/.'
zh-cn: 服务器登录密码。长度为8~30个字符,必须包含大写英文字母、小写英文字母、数字和特殊字符(`()~!@#$%^&*_-+=|{}[]:;'<>,.?/)中的三项。
AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
Label:
en: Instance Password
zh-cn: 实例密码
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. Special characters include ()`~!@#$%^&*_-+=|{}[]:;''<>,.?/.'
zh-cn: 长度为8~30个字符,必须包含大写英文字母、小写英文字母、数字和特殊字符(`()~!@#$%^&*_-+=|{}[]:;'<>,.?/)中的三项。
MinLength: 8
MaxLength: 30
InstancePublicIP:
Type: Boolean
Description:
zh-cn: 是否分配公共IP。
en: Specifies whether to assign a public IP address.
Label:
zh-cn: 分配公网IP
en: Allocate Public IP
Default: false
VSwitchZoneId:
AssociationProperty: ALIYUN::ECS::Instance:ZoneId
Type: String
Description:
zh-cn: 可用区ID。<br><b>注: <font color='blue'>选择前请确认该可用区是否支持创建ECS资源的规格,建议设置与其他交换机不同的可用区</font></b>
en: 'The ID of the availability zone.<br><b>Note: <font color=''blue''>Before you select an availability zone, make sure that the specified instance type is available in that zone. We recommend that you select an availability zone that is different from the availability zones of other VSwitches.</font></b>'
Label:
zh-cn: 交换机可用区
en: VSwitch Availability Zone
SystemDiskSize:
Default: 40
Type: Number
Description:
zh-cn: 系统盘大小, 取值范围:40~500, 单位:GB。
en: 'The size of the system disk. Unit: GB. Valid values: 40 to 500.'
Label:
zh-cn: 系统盘空间
en: System Disk Space
Mappings:
YumMap:
centos_6:
YumSource: http://mirrors.aliyun.com/repo/Centos-6.repo
centos_7:
YumSource: http://mirrors.aliyun.com/repo/Centos-7.repo
centos_8:
YumSource: http://mirrors.aliyun.com/repo/Centos-8.repo
Resources:
RosConditionHandle:
Type: ALIYUN::ROS::WaitConditionHandle
RosWaitCondition:
Type: ALIYUN::ROS::WaitCondition
DependsOn: EcsInstance
Properties:
Timeout: 1800
Count: 1
Handle:
Ref: RosConditionHandle
EcsVSwitch:
Type: ALIYUN::ECS::VSwitch
Properties:
VpcId:
Ref: EcsVpc
ZoneId:
Ref: VSwitchZoneId
CidrBlock: 192.168.0.0/24
EcsInstance:
Type: ALIYUN::ECS::Instance
Properties:
UserData:
Fn::Sub:
- |
#!/bin/bash
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo ${yum_repo}
yum clean all
yum makecache
${ros-notify} -d '{"data" : "Install Centos success."}'
- ros-notify:
Fn::GetAtt:
- RosConditionHandle
- CurlCli
yum_repo:
Fn::FindInMap:
- YumMap
- Ref: InstanceImageId
- YumSource
IoOptimized: optimized
PrivateIpAddress: 192.168.0.1
VpcId:
Ref: EcsVpc
SecurityGroupId:
Ref: EcsSecurityGroup
VSwitchId:
Ref: EcsVSwitch
ImageId:
Ref: InstanceImageId
AllocatePublicIP:
Ref: InstancePublicIP
InstanceType:
Ref: InstanceType
SystemDiskSize:
Ref: SystemDiskSize
SystemDiskCategory:
Ref: SystemDiskCategory
Password:
Ref: InstancePassword
EcsSecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
VpcId:
Ref: EcsVpc
SecurityGroupIngress:
- PortRange: '-1/-1'
Priority: 1
SourceCidrIp: 0.0.0.0/0
IpProtocol: all
NicType: intranet
SecurityGroupEgress:
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
DestCidrIp: 0.0.0.0/0
NicType: intranet
EcsVpc:
Type: ALIYUN::ECS::VPC
Properties:
CidrBlock: 192.168.0.0/16
VpcName:
Fn::Join:
- '-'
- - StackId
- Ref: ALIYUN::StackId
Outputs:
EcsInstanceId:
Value:
Fn::GetAtt:
- EcsInstance
- InstanceId
Etapa 2: Criar a stack
Faça login no console do ROS.
No painel de navegação à esquerda, clique em Stacks.
Na barra de navegação superior, selecione a região onde deseja criar a stack, como China (Hangzhou).
-
Na página Stacks, clique em Create Stack. Na seção Specify Template, clique em Select an Existing Template.
NotaAo selecionar Create Template ou ROS Infrastructure Composer, o sistema redireciona você para a página correspondente.
-
Na página Select Template, defina Template Import Method como Enter Template Content, insira o modelo YAML da Etapa 1 e clique em Next.
-
Na página Configure Parameters, insira um Stack Name e configure os parâmetros a seguir.
Parâmetro
Descrição
Exemplo
vSwitch Availability Zone
Zona de disponibilidade do vSwitch.
China North 1 Zone C
Image
ID da imagem da instância ECS.
Padrão: centos_7.
centos_7
Instance specification
Tipo da instância ECS.
Selecione um tipo disponível. Instance families.
ecs.c5.large
System Disk Space
Tamanho do disco do sistema.
Valores válidos: 40 a 500.
Unidade: GB.
40
Allocate Public IP
Define se a instância ECS receberá um endereço IP público.
Selecionado: atribui um endereço IP público.
Desmarcado: não atribui um endereço IP público.
Selecionado
Instance Password
Senha de login da instância.
Test_12****
System Disk Type
Categoria do disco do sistema. Valores válidos:
cloud_efficiency: Ultra Disk.cloud_ssd: Standard SSD.cloud_essd: Enhanced SSD.cloud: Basic Disk.ephemeral_ssd: Local SSD.
cloud_efficiency
Clique em Create.
Na aba Stack Information, verifique o status da stack. Após a criação, clique na aba Output para obter o ID da instância ECS.
-
Conecte-se à instância ECS e verifique o repositório yum.
Para conectar-se a uma instância ECS, consulte Connection methods.
Etapa 3: Visualizar recursos
No painel de navegação à esquerda, clique em Stacks.
Na página Stacks, clique no nome da stack desejada.
-
Clique na aba Resources para visualizar as informações dos recursos.
A tabela a seguir descreve os recursos criados neste exemplo.
Recurso
Quantidade
Descrição
Especificações
ALIYUN::ECS::Instance
1
Uma instância ECS.
Total: 1
Tipo de instância: ecs.c5.large
Categoria do disco do sistema: Ultra Disk
Espaço do disco do sistema: 40 GB
Atribuir IP público: Sim
NotaPara informações sobre taxas de recursos, consulte a página oficial de preços ou a documentação de preços de cada product.