1. ホーム

リソース・オーケストレーションは、柔軟なNICのAPIをフルにサポートし、ネットワーク構成を簡素化

2022-03-23 17:18:30

AliCloud Resource Orchestration Service(ROS)がElastic NIC機能をサポートするようになり、ROSのクラウドリソースタイプに3つの新しいメンバーが追加されました。

エラスティックNICのリソースタイプの紹介

AliCloud ROS Elastic NICに関連する3つのリソースタイプについて、それぞれどのような機能が提供され、どのように使用するのかを見ていきましょう。AliCloudのリソースオーケストレーションサービスに触れたことがない方は こちらをご覧ください

レジリエントなNICの作成

リソースオーケストレーションでレジリエントNICを抽象化する CreateNetworkInterface インターフェイスの能力、レジリエントNICを作成するための簡単なテンプレートは次のようになります。

{
  "ROSTemplateFormatVersion" : "2015-09-01",
  "Resources" : {
    "EniInstance" : {
      "Type": "ALIYUN::ECS::NetworkInterface",
      "Properties": {
        'VSwitchId': 'vsw-2zetgeiqlemyok9z5j2em',
        'SecurityGroupId': 'sg-2ze3yg7oo90ejudett9j',
        'NetworkInterfaceName': 'my-eni-name'
        'Description': 'eni-name-description'
      }
    }
  },
  "Outputs": {
    "NetworkInterfaceId": {
        "Value" : { "Fn::GetAtt": ["EniInstance", "NetworkInterfaceId"]}
    }
  }
}

スイッチIDとセキュリティグループIDを定義するだけで、レジリエントNICが作成できることがわかります。もちろん、NICの名前や説明情報も指定することができます。最後に、新しく作成されたレジリエント NIC の ID が Outputs タグで返されます。

レジリエントNICをバインドする

リソースオーケストレーションでレジリエントNICを抽象化する アタッチネットワークインターフェース インターフェース機能を使用する場合、エラスティックNICをバインドするための簡単なテンプレートは次のようになります。

{
  "ROSTemplateFormatVersion" : "2015-09-01",
  "Resources" : {
    "EniInstance" : {
      "Type": "ALIYUN::ECS::NetworkInterfaceAttachment",
      "Properties": {
        'NetworkInterfaceId': 'eni-2zefnmihs8r13tqdeomr',
        'InstanceId': 'i-2ze8m2j71rb2m8saw6g6'
        }
    }   
  }
}

NIC IDとECSインスタンスIDを指定するだけです。

弾力性のあるNICを認証する

Resource Orchestrationでは、Elastic NICのCreateNetworkInterfacePermissionインターフェースの機能を抽象化しており、Elastic NICを認可するための簡単なテンプレートはこのようになります。

{
  "ROSTemplateFormatVersion" : "2015-09-01",
  "Resources" : {
    "EniPermissionInstance" : {
      "Type": "ALIYUN::ECS::NetworkInterfacePermission",
      "Properties": {
        'AccountId': '1754580903499898',
        'NetworkInterfaceId': 'eni-2zehcsxovaeso7ivbgzp'
      }
    }
  },
  "Outputs": {
    "NetworkInterfacePermissionId": {
        "Value" : { "Fn::GetAtt": ["EniPermissionInstance", "NetworkInterfacePermissionId"]}
    }
  }
}

認可NICは、認可NIC IDと認可ユーザIDを指定する必要があり、認可IDはOutputsタグで返される。

包括的なアプリケーションシナリオ:ECSインスタンスの作成とレジリエントNICのバインド

リソースオーケストレーションのエラスティックNIC機能は、具体的にどのように機能するのでしょうか。よくあるシナリオを見てみましょう:"AliCloud上でECSを購入し、エラスティックNICをバインドする必要があります。



Resource Orchestration テンプレートを使用しない場合、次のようにする必要があります。



1. まず、ECSインスタンスコンソールでECSを作成し、その間に、VPC、VSwitch、SecurityGroupを作成する必要があります。



2. Resilient NICのページに切り替えてレジリエントNICを作成します。この時、最初のステップで作成したVPC、VSwitch、SecurityGroupを正しく指定する必要があります。VPCの数が多い場合は、ページを切り替えて最初のステップのVPC情報をメモして記入することも必要です。



3. Elastic NICのページでECSインスタンスをバインドする

再びROSの使用を見てみる



      1. ROSテンプレートを書く (付録参照)



2、スタックを作成し、ECSを作成するために必要な情報(ミラーID、インスタンス仕様、地域など)を記入する。

作成方法を説明します。



1. ROS Stackは、作成過程でVPC、VSwitch、SecurityGroup、ECSインスタンス、レジリエントNICを作成し、レジリエントNICを指定したユーザーに自動的に認証し、ECSにバインドします。わずかな情報を記入した後、すべての操作は人手を介さず、1クリックで導入されます。(図1参照)



2. 中間生成に失敗した場合、Stack全体のリソースは自動的にロールバックされる。



3. 書いたROSのテンプレートは、保存しておくと次回も引き続き使用することができます。(図2のように)

この一連の流れはとても便利だと思いませんか?もちろん、AliCloudのリソースオーケストレーション製品では、ビジネスシナリオを組み合わせて、エラスティックNICの機能を柔軟に使って、ビジネスをオーケストレーションすることができます。皆さんのご意見をお待ちしています。





(図1)








(図2)




付録 ROSテンプレート(ECSの作成とレジリエントNICのバインド)

{
    "ROSTemplateFormatVersion": "2015-09-01",
    "Description": "One VPC, VSwitch,
            "Type": "String",
            "Description": "The ECS instance type, <a href='#/product/cn-shenzhen/list/typeList' target='_blank'>View instance types</a>",
            "Default": "ecs.sn1ne.large"
        },
        "AccountId":{
            "Type": "String",
            "Description": "The account id"
        },
        "ZoneId": {
            "Type": "String",
            "Description": "The available zone, <a href='#/product/cn-shenzhen/list/zoneList' target='_blank'>View available zones</a>"
        },
        "SecurityGroupName": {
            "Type": "String",
            "Description": "The security group name",
            "Default": "my-sg-name"
        },
        "NetworkInterfaceName": {
            "Type": "String",
            "Description": "The Network interface name",
            "Default": "my-eni-name"
        },
        "VpcName": {
            "Type": "String",
            "Description": "The VPC name",
            "MinLength": 2,
            "MaxLength": 128,
            "ConstraintDescription": "[2, 128] English or Chinese letters",
            "Default": "my-vpc-name"
        },
        "IoOptimized": {
            "AllowedValues": [
                "none",
                "optimized"
            ],
            "Description": "IO optimized, optimized is for the IO optimized instance type",
            "Type": "String",
            "Default": "optimized"
        },
        "SystemDiskCategory": {
            "AllowedValues": [
                "cloud",
                "cloud_efficiency",
                "cloud_ssd"
            ],
            "Description": "System disk category: average cloud disk(cloud), efficient cloud disk(cloud_efficiency) or SSD cloud disk(cloud_sssd)" ssd)",
            "Type": "String",
            "Default": "cloud_ssd"
        },
        "VpcCidrBlock": {
            "Type": "String",
            "AllowedValues": [
                "192.168.0.0/16",
                "172.16.0.0/12",
                "10.0.0.0/8"
            ],
            "Default": "10.0.0.0/8"
        },
        "VSwitchCidrBlock": {
            "Type": "String",
            "Description": "The VSwitch subnet which must be within VPC",
            "Default": "10.0.10.0/24"
        }
    },
    "Resources": {
        "Vpc": {
            "Type": "ALIYUN::ECS::VPC",
            "Properties": {
                "CidrBlock": {
                    "Ref": "VpcCidrBlock"
                },
                "VpcName": {
                    "Ref": "VpcName"
                }
            }
        },
        "VSwitch": {
            "Type": "ALIYUN::ECS::VSwitch",
            "Propertie