すべてのプロダクト
Search
ドキュメントセンター

Resource Orchestration Service:マッピングを使用してCentOSシステムのYUMリポジトリの構成を自動化

最終更新日:Jan 16, 2025

CentOSシステムを作成する場合、システムに一般的なソフトウェアをインストールするためにYUMリポジトリを手動で構成する必要があります。 YUMリポジトリは、ソフトウェアパッケージのコレクションです。 CentOSのバージョンごとに異なるYUMリポジトリが必要です。 リソースオーケストレーションサービス(ROS)を使用すると、マッピングを定義するテンプレートに基づいてスタックを作成することにより、さまざまなバージョンのCentOSのYUMリポジトリの構成を自動化できます。

ステップ 1:テンプレートを作成する

マッピングは、次のテンプレートで定義されています。 マッピングには、複数のバージョンのCentOSのYUMリポジトリのURLが含まれています。 弾性計算サービス(ECS)インスタンスを作成し、インスタンスのシステムを初期化すると、Fn::FindInMap関数は、InstanceImageIdで指定されたイメージのバージョンに一致するYUMリポジトリのURLを返します。

ROSTemplateFormatVersion: '2015-09-01'
Description: ECS Centosシステムインスタンスを作成し、yumリポジトリを設定します。 // Translate the description
Metadata:
  ALIYUN::ROS::Interface:
    ParameterGroups:
      - Parameters:
          - VSwitchZoneId
          - InstanceImageId
          - InstanceType
          - SystemDiskSize
          - InstancePublicIP
          - InstancePassword
          - SystemDiskCategory
        Label:
          default: ECS
    TemplateTags:
      - VPC ECSインスタンスを作成します // Translate the tag
Parameters:
  SystemDiskCategory:
    Type: String
    Label:
      en: System Disk Type
       
    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>]'
       
    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:
       
      en: Image ID,support [centos_6,centos_7,centos_8]
    Label:
       
      en: Image
  InstanceType:
    Type: String
    Description:
       
      en: 'Instance type. The instance type must be available in the zone to which the vSwitch belongs.</b></font><br>General instance type: <font color='red'><b>ecs.c5.large.</b></font><br>Note: The general instance type may not be available in specific zones.<br>For more information, see <a href=''https://www.alibabacloud.com/help/en/doc-detail/25378.html'' target=''_blank''><b><font color=''blue''>Overview of instance families</font></a></b>.'
    Label:
       
      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).
        
    AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
    Label:
      en: Instance Password
       
    ConstraintDescription:
      en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in).
       
    MinLength: 8
    MaxLength: 30
  InstancePublicIP:
    Type: Boolean
    Description:
       
      en: Whether to assign a common IP.
    Label:
       
      en: Allocate Public IP
    Default: false
  VSwitchZoneId:
    AssociationProperty: ALIYUN::ECS::Instance:ZoneId
    Type: String
    Description:
        
      en: Zone ID.<br><b>Note:<font color='blue'>Before you specify a zone ID, check whether the specifications of the ECS instance are available in the zone. We recommend that you select a zone in which the vSwitch that you specify does not reside.</font></b>
    Label:
       
      en: VSwitch Availability Zone
  SystemDiskSize:
    Default: 40
    Type: Number
    Description:
       
      en: 'System disk size, range of values: 40-500, units: GB.'
    Label:
       
      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" : "Centos のインストールに成功しました。"}' // Translate the message
          - 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
            

ステップ 2:スタックを作成する

  1. [テンプレートの選択] ステップで、[既存のテンプレートを選択] をクリックします。 [テンプレートのインポート方法][テンプレートコンテンツを入力] に設定し、ステップ 1:テンプレートを作成する で編集したテンプレートコンテンツを [テンプレートコンテンツ] コードエディターに入力し、[次へ] をクリックします。

  2. [テンプレートパラメーターの構成] ステップで、[スタック名] と次のパラメーターを構成します。

    パラメーター

    説明

    Vswitch 可用ゾーン

    リソースのゾーン ID。

    Qingdao Zone C

    イメージ

    ECS インスタンスのイメージ ID。

    デフォルト値: centos_7。

    詳細については、概要をご参照ください。

    centos_7

    インスタンスタイプ

    ECS インスタンスタイプ。

    有効なインスタンスタイプを選択します。 詳細については、インスタンスファミリーの概要をご参照ください。

    ecs.c5.large

    システムディスク容量

    ECS インスタンスのシステムディスクサイズ。

    有効な値: 40 ~ 500。

    単位: GB。

    40

    パブリック IP を割り当てる

    ECS インスタンスにパブリック IP アドレスを割り当てるかどうかを指定します。

    • [パブリック IP を割り当てる] をオンにすると、システムはパブリック IP アドレスを割り当てます。

    • [パブリック IP を割り当てる] をオフにすると、システムはパブリック IP アドレスを割り当てません。

    [IPv4 パブリック IP を割り当てる] をオンにします。

    インスタンスパスワード

    ECS インスタンスにログオンするために使用されるパスワード。

    Test_12****

    システムディスクタイプ

    ECS インスタンスのシステムディスクカテゴリ。 有効な値:

    • cloud_efficiency: ウルトラディスク

    • cloud_ssd: 標準 SSD

    • cloud_essd: 拡張 SSD (ESSD)

    • cloud: ベーシックディスク

    • ephemeral_ssd: ローカル SSD

    詳細については、ディスクをご参照ください。

    cloud_efficiency

  3. [作成] をクリックします。

  4. [スタック情報] タブで、スタックのステータスを表示します。 スタックが作成された後、[出力] タブをクリックして、ECS インスタンスの ID を取得します。

  5. ECS コンソールで ECS インスタンスに接続して、YUM リポジトリを表示します。

    ECS インスタンスへの接続方法の詳細については、接続方法をご参照ください。

ステップ 3:リソースを表示する

  1. [スタック] ページで、ステップ 1 で作成したスタックをクリックします。

  2. [リソース] タブをクリックして、スタック内のリソースに関する情報を表示します。

    次の表は、この例の resources について説明しています。

    リソース

    数量

    説明

    仕様

    ALIYUN::ECS::Instance

    1

    ECS インスタンスを作成します。

    • 数量: 1

    • インスタンスタイプ: ecs.c5.large

    • システムディスクカテゴリ: cloud_efficiency

    • システムディスクサイズ: 40 GB

    • パブリック IP アドレスを割り当てる: はい

    null

    リソースの価格設定の詳細については、関連するコンソールにアクセスするか、各リソースの価格設定ドキュメントを参照してください。