建立CentOS系統時,通常需要手動設定yum源(軟體集合地)下載安裝常用軟體,不同版本的CentOS系統需要配置不同的yum源。Resource Orchestration Service服務ROS(Resource Orchestration Service)支援通過建立資源棧的方式使用Mappings自動化配置不同版本CentOS系統的yum源。
步驟一:編輯模板
以下模板中定義了Mappings:{...}對象內容,記錄多個CentOS系統版本對應的阿里yum源地址。在建立ECS進行系統初始化操作時,Fn::FindInMap函數會根據所選擇鏡像參數(InstanceImageId)的版本匹配對應的yum源,然後完成yum源的替換。
ROSTemplateFormatVersion: '2015-09-01'
Description: Creates ECS Centos system instance, and set yum repo.
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>Optional values:</b></font><br>[cloud_efficiency: <font color=''green''>Efficient Cloud Disk</font>]<br>[cloud_ssd: <font color=''green''>SSD Cloud Disk</font>]<br>[cloud_essd: <font color=''green''>ESSD Cloud Disk</font>]<br>[cloud: <font color=''green''>Cloud Disk</font>]<br>[ephemeral_ssd: <font color=''green''>Local SSD Cloud Disk</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: Image ID,support [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: 'Fill in the specifications that can be used under the VSwitch availability zone;</b></font><br>general specifications:<font color=''red''><b>ecs.c5.large</b></font><br>note: a few zones do not support general specifications<br>see detail: <a href=''https://www.alibabacloud.com/help/en/doc-detail/25378.html'' target=''_blank''><b><font color=''blue''>Instance Specification Family</font></a></b>'
Label:
zh-cn: 執行個體規格
en: Instance Type
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: VSwitchZoneId
InstancePassword:
NoEcho: true
Type: String
Description:
en: Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in).
zh-cn: 伺服器登入密碼。長度為8~30個字元,必須包含大寫英文字母、小寫英文字母、數字和特殊字元(`()~!@#$%^&*_-+=|{}[]:;'<>,.?/)中的三項。
AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
Label:
en: Instance Password
zh-cn: 執行個體密碼
ConstraintDescription:
en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in).
zh-cn: 長度為8~30個字元,必須包含大寫英文字母、小寫英文字母、數字和特殊字元(`()~!@#$%^&*_-+=|{}[]:;'<>,.?/)中的三項。
MinLength: 8
MaxLength: 30
InstancePublicIP:
Type: Boolean
Description:
zh-cn: 是否分配公用IP。
en: Whether to assign a common IP.
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: Availability Zone ID.<br><b>note:<font color='blue'>before selecting, please confirm that the Availability Zone supports the specification of creating ECS resources,which is recommended to be different from other VSwitch Availability Zone</font></b>
Label:
zh-cn: 交換器可用性區域
en: VSwitch Availability Zone
SystemDiskSize:
Default: 40
Type: Number
Description:
zh-cn: 系統硬碟大小, 取值範圍:40~500, 單位:GB。
en: 'System disk size, range of values: 40-500, units: GB.'
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
步驟二:建立資源棧
在左側導覽列,單擊資源棧。
在頂部功能表列的地區下拉式清單,選擇資源棧的所在地區,例如:華東1(杭州)。
在資源棧列表頁面,單擊建立資源棧,然後在下拉式清單中選擇使用ROS。
在選擇模板頁面,選擇已有模板,選擇模板錄入方式為輸入模板,輸入步驟一中YAML格式的模板,然後單擊下一步。
在配置參數頁面,輸入資源棧名稱,並設定以下參數。
參數
說明
樣本
交換器可用性區域
資源所屬的可用性區域。
華北1可用性區域C
鏡像
ECS執行個體的鏡像ID。
預設值:centos_7。
更多資訊,請參見鏡像概述。
centos_7
執行個體規格
ECS執行個體規格。
請選用有效執行個體規格。更多資訊,請參見執行個體規格類型系列。
ecs.c5.large
系統硬碟空間
ECS執行個體的系統硬碟空間。
取值範圍:40~500。
單位:GB。
40
分配公網IP
是否為ECS執行個體分配公網地址。
選中方框:分配公網IP地址。
不選中方框:不分配公網IP地址。
選中方框
執行個體密碼
ECS執行個體登入密碼。
Test_12****
系統硬碟類型
ECS執行個體的系統硬碟規格。取值:
cloud_efficiency:高效雲端硬碟。
cloud_ssd:SSD雲端硬碟。
cloud_essd:ESSD雲端硬碟。
cloud:普通雲端硬碟。
ephemeral_ssd:本地SSD盤。
更多資訊,請參見雲端硬碟概述。
cloud_efficiency
單擊建立。
在資源棧資訊頁簽查看資源棧狀態。資源棧建立成功後,單擊輸出頁簽,擷取ECS執行個體ID。
在ECS控制台串連相應的ECS執行個體,查看yum源。
關於如何串連ECS執行個體,請參見串連方式概述。
步驟三:查看資源
在左側導覽列,單擊資源棧。
在資源棧列表頁面,單擊目標資源棧名稱。
單擊資源頁簽,查看資源資訊。
本樣本中,資源資訊如下表所示。
資源
數量
資源說明
規格說明
ALIYUN::ECS::Instance
1
建立一台雲端服務器。
總數量:1台。
執行個體規格:ecs.c5.large。
磁碟類別:高效雲端硬碟。
系統硬碟空間:40 GB。
分配公網IP:是。
說明 資源收費情況,請參見官網報價或各產品定價文檔。