初めまして、SB Cloud の Crane です。初めてのテックブログの投稿します。どうぞよろしくお願い致します。
Alibaba Cloud を使ってリソースをたくさん作るようになると、リソース全体の管理が大変になったり、同じインスタンスを時間を掛けずに複製しなければいけない場面に遭遇することが多くなりますよね。 そんな場面で役に立つのが Resource Orchestration Service です。
このツールでリソースをうまく管理することで、IT資産に対するコスト管理を行いやすくなるなど、エンジニアだけではなく、管理部門にとっても大変重宝するツールです。
Resource Orchestration Service とは
Resource Orchestration Service(以下、ROS)はIT資産管理と O&M の効率化を実現するツールです。
構成を文字で記述したファイルをテンプレートと呼び、そのテンプレートから作成した環境をスタックと呼びます。
1つのテンプレートにはサーバインスタンスやロードバランサ、DBサーバなど必要なアプライアンスを記述でき、これを元に作成したスタックにはテンプレートに書かれた仮想アプライアンスが実装されます。 使用頻度の高いアプライアンスから成る構成を1つのテンプレートにまとめます。
これまでTerraform(オープンソース)などを利用して同様の機能を実現していましたが、Alibaba Cloud 純正の機能として実現可能となりました。本サービスの使用料は無料です。
大量のリソースを一括して管理することができ、ROSで作成した環境の一括削除も可能です。また、よく利用する環境をテンプレートに記述して保存することにより、それらの環境が必要となった時に瞬時に作成・展開することが可能です。
また削除ポリシーもテンプレート作成時に自由に決めることができ、スタックが不要になった際には一括して削除することも可能です。
注意する点としては、展開をした後に編集を行うことができません。これから環境を作り込むというケースより、構成要素が決まった環境を展開するようなケースに向いています。 同じ環境を繰り返し作成することが出来るので検証作業など同じ環境を構築する必要がある場合などにも向いています。
今回はテンプレートからスタックの作成が可能な点に着目し、ECSインスタンス2つとSLBインスタンス1つという小さな構成をテンプレートに保存して実際にスタックを作成するまでをご紹介いたします。
目標とする構成
本記事ではこのサービスを使用して、まずサンプルテンプレートから以下の図のような環境の構築を目指します。
今回はサンプルテンプレートにアップロードされているテンプレートの内、 entire_ecs_clone というテンプレートを利用します。 このテンプレート内容を図示すると以下のようになります。
テンプレートでは「ALIYUN::ECS::InstanceGroupClone」関数を使用してクローンの作成を行い、オリジナルのECSインスタンスと同じ内容を持つECSインスタンスを作成します。
ROS で使用できるリソースは以下の文書にて公開されています。 https://jp.alibabacloud.com/help/doc-detail/48893.htm 作成するインスタンスの数は関数に渡すパラメータを用いて変えられるようになっており、1回で100個までのECSインスタンスのクローンを作成できます。
このテンプレートからスタックが正常に作成できることを検証したのち、このテンプレートを元に SLB も追加して生成するように改編し、以下に図示するような環境の構築を試みます。
最終的に既に作成してあるECSインスタンスのクローンを作成し、そのテンプレートに独自に SLB を付け加えて、ECSインスタンス2台とロードバランサー1台の環境を構築することを目指します。
基本操作
ROSのテンプレートはJSONテキストファイルで、文字コードはUTF-8でなければなりません。 文書の冒頭で、この文書を規定する定義を行うことで文書はROSのテンプレートとして認識され、それ以降、ルールに従って記述した内容でスタックが作成されます。
必須になる定義は以下の通りです。
"ROSTemplateFormatVersion": "2015-09-01",
この値や綴り、書式を間違えると動作しませんので十分注意が必要です。この宣言より下の位置に各要素別に項目を記述します。宣言以外の各要素は全て必須ではなくオプションです。
他の構成要素は、Resources や Parameters など7項目あり、その詳細は以下の通りです。 https://jp.alibabacloud.com/help/doc-detail/28858.htm
また、ROSでは幾つかの制限事項があります。 https://jp.alibabacloud.com/help/doc-detail/28854.htm
テンプレートからスタックを作成する
entire_ecs_clone の内容は、サンプルテンプレートのページから参照可能です。「Resource Orchestration Service 画面 > サンプルテンプレート > entire_ecs_clone > プレビュー」からご覧ください。
元になるECSインスタンスのデータディスクID等のパラメータをあらかじめ準備しておき、インスタンスIDやシステムディスクID、データディスクID、元のECSインスタンスへのログインパスワードなどを入力し、元のインスタンスのクローンを作成するというものです。
本テンプレートに関して、VPCはオリジナルのECSを作成するときに指定しており、そのECSのクローンを作成するため、元々のVPCの中に新しいECSとSLBが作成されます。このため本テンプレートではVPCは作成しません。
それではこのテンプレートを使ってスタックを作成してみます。
サンプルテンプレート一覧から entire_ecs_clone を選び、右下の「スタックを作成」ボタンをクリックします。
すると、スタック作成を進める画面が表示されるので、作成するリージョンが合っているかを確認して次へをクリックします。
次へをクリックするとパラメータの値を設定する画面が表示されます。
このテンプレートではクローンの元となるディスクが必要です。このため事前に自分で作成したECSインスタンスをクローン元のECSとして使用しました。使用した値はデータディスクのスナップショットのID、システムディスクのスナップショットのID、クローン元となるECSインスタンスのインスタンスID、rootのパスワード、作成するクローンの数です。
尚、テンプレートの内容を独自に編集することで事前のインスタンス準備なしに新規インスタンスを作成することも可能ですので、興味のある方は是非お試しください。
値を入力したのちプレビューをクリックします。エラーがなければ作成するECSインスタンスのプロパティなどが表示されます。何らかのエラーがある場合、そのエラー内容が指摘されますので、メッセージに即してテンプレートを修正する必要があります。
尚、「失敗時にロールバック」というチェックボックスをオンにすることで、スタック作成中にエラーが出た場合、自動的に作成を中止して作成前の状態に戻すことができます。
スタック作成中に何らかのエラーが出た場合、スタックの作成全体が失敗したものとみなされ、途中まで正常に作成されたインスタンスを含め、作成そのものが中止になり最初の状態に戻ります。
画面右下の「作成」をクリックすると以下の画面が表示されます。
ここで「仕上げ」をクリックすると以下の作成中ステータスの画面に遷移します。
作成から5分ほど経って画面を更新すると、インジケーターが緑色に変わり、「正常に作成されました」と表示されてます。 正常に作成されなかった場合、ステータスが赤いインジケータとなりその旨が表示されます。エラーが出なくなるまでテンプレートの修正作業を繰り返し、スタック作成を試みてください。
独自のテンプレートを作成する
entire_ecs_clone のテンプレート内容をエディタなどへコピーし、独自のテンプレートを作成します。
編集する内容は SLB インスタンスの追加(新規生成)で、台数は1台です。
以下、追記する内容です。
Resourcesセクションへの追加内容は以下の通りです。 SLBインスタンスを作成します。
"Resources": { "CreateLoadBalance": { "Type": "ALIYUN::SLB::LoadBalancer", "Properties": { "LoadBalancerName": "NewSLBforROSTest", "AddressType": "internet", "InternetChargeType": "paybytraffic" } } }
Outputセクションへの追加内容は以下の通りです。 作成したSLBインスタンスのIDを出力します。
"Outputs": { "LoadBalanceDetails": { "Value": { "Fn::GetAtt": [ "CreateLoadBalance", "LoadBalancerId" ] } } }
「マイテンプレート」画面の「テンプレートを作成」ボタンをクリックして入力画面を表示します。そこへエディタで作成した内容を入力します。
テンプレートのタイトルと説明の欄は必須項目となります。
以降は先程と同じ手順に従って画面右下の「スタックを作成」をクリックし、スタックが作成できれば終了となります。
ECSインスタンスが正常に作成されたかどうかは ROS の画面および ECSのインスタンスの画面でも確認可能です。 その画面で作成されたECSインスタンスが登録されていることが分かります。
作成されたECSインスタンスの名前をダブルクリックするとプロパティなど関連する情報が掲載された画面が表示されます。そこに表示されているタグ情報などから、ご自身が生成したECSインスタンスであることが確認できます。
また、同様に SLBのインスタンスの管理画面を見ると作成した SLB インスタンスが登録されています。出来上がった SLB インスタンスも同様の方法でご自身が作成したものであることを確認できます。
また、ROSのリソース画面を見ると、以下の通りリソースが作成されたことが分かります。
上記の図の通り、ステータス欄には緑色の「正常に作成されました」との表示があります。これで希望していた環境の構築が無事完了しました。
まとめ
今回は Resource Orchestration Service のうち、テンプレートからスタックが作成可能である点に注目して機能をご紹介しました。
本サービスを使用することで、インスタンスを1台ずつ作る場合とは異なり、全体の構成をまとめてから環境を構築できるため、構成を練り上げてから一気に環境を構築することが可能です。
Alibaba Cloud には多くのサンプルテンプレートが掲載されていますので、それらを参考にしながらご自身が必要な機器構成をマイテンプレートに登録してご使用ください。これによりリソース導入時の作業時間の軽減などが可能です。リソースの数が増えても管理は容易になり、検証環境など繰り返し作成する環境の再現なども手早く行うことができるでしょう。 この機能を使って Alibaba Cloud をさらに便利に使ってみてはいかがでしょうか。