全部產品
Search
文件中心

Resource Orchestration Service:基於Mappings自動化配置CentOS系統的yum源

更新時間:Feb 05, 2024

建立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. 登入Resource Orchestration Service控制台

  2. 在左側導覽列,單擊資源棧

  3. 在頂部功能表列的地區下拉式清單,選擇資源棧的所在地區,例如:華東1(杭州)。

  4. 資源棧列表頁面,單擊建立資源棧,然後在下拉式清單中選擇使用ROS

  5. 選擇模板頁面,選擇已有模板,選擇模板錄入方式輸入模板,輸入步驟一中YAML格式的模板,然後單擊下一步

  6. 配置參數頁面,輸入資源棧名稱,並設定以下參數。

    參數

    說明

    樣本

    交換器可用性區域

    資源所屬的可用性區域。

    華北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

  7. 單擊建立

  8. 資源棧資訊頁簽查看資源棧狀態。資源棧建立成功後,單擊輸出頁簽,擷取ECS執行個體ID。

  9. 在ECS控制台串連相應的ECS執行個體,查看yum源。

    關於如何串連ECS執行個體,請參見串連方式概述

步驟三:查看資源

  1. 在左側導覽列,單擊資源棧

  2. 資源棧列表頁面,單擊目標資源棧名稱。

  3. 單擊資源頁簽,查看資源資訊。

    本樣本中,資源資訊如下表所示。

    資源

    數量

    資源說明

    規格說明

    ALIYUN::ECS::Instance

    1

    建立一台雲端服務器。

    • 總數量:1台。

    • 執行個體規格:ecs.c5.large。

    • 磁碟類別:高效雲端硬碟。

    • 系統硬碟空間:40 GB。

    • 分配公網IP:是。

    說明 資源收費情況,請參見官網報價或各產品定價文檔。