使えばテンプレートと呼ばれる設定ファイルを書くだけで自動でセットアップしてくれて、開発者のシステム管理に割く時間を節約することができます。設定ファイルを作成してやればOSインストールからコマンド単位まで自動でセットアップを行えるという点において、Chef,Puppet等のGCE版という感じでしょうか。知っておきたい2つのオブジェクトがあります。テンプレートVMのオプション設定を定義しているもの。デプロイメントテンプレートをデプロイして実行した後の実際のインスタンスにあたるもの。テンプレートはグローバルリソースであり、どこからでも誰でも使えるようになりますが、リソースをデプロイしたときはそのリソースが動いているリージョンも指定しないとアクセスできません。3つのテンプレートと2つの異なるリージョンにあるデプロイメントテンプレートにはどのようにサービスを設定するのかが書かれています。VMのマシンタイプ、OSイメージ、その他重要な設定のプロパティを定義することができます。サンプルテンプレートはこちらで公開しています。https://developers.google.com/deployment-manager/samples/?hl=jaテンプレートはJSONかYAML形式のファイルで表現されます。テンプレートを繰り返し使いたい場合はYAMLファイルを使ったほうが良いです。それに対してJSON形式のテンプレートはHttpのリクエストボディに埋め込んでAPIで送れます。テンプレートを作成したあとにテンプレートをデプロイし、インスタンスを生成します。テンプレートをデプロイした瞬間にデプロイメントが生成されます。Engineにセットアップするテンプレートを例にとってどのような記述をしているのか見てみましょう。以下はサンプルとして公開されているnodejs.yamlの中身になります。VMやネットワーク環境の設定内容が記述されています。typeはリソースの種類を指定でき、1つのテンプレートにREPLICA_POOLやLOAD_BALANCINGなど複数のリソースを指定できます。バーチャルマシンを利用する場合は、この例にあるようにREPLICA_POOLを指定します。Engineのインスタンスが生成した後、どのような処理を進めていくかをshellコマンド単位で記されています。shellコマンドでソフトウェアのインストールやアップデートや自分で作成したバッチを動かしたりできます。利用費用は発生します。意識しなくても良いかと思いますがリクエスト回数は、1日に50000リクエスト・1秒間に20リクエストまでという制限があります。APIを有効にします。(現在LimitedPreviewなのでサインアップしてください)これで準備完了です。サービスにアクセスできます。操作はテンプレートとデプロイメントに対して、削除(delete)、情報取得(get)、追加(insert)、一覧取得(list)を行います。APIのメソッドに関する詳しい情報はこちらをご覧ください。PlatformのCLIはこちらからダウンロード。Managerを利用するには、現時点(2014年11月6日)ではLimitedPreview版が必要なので以下のコマンドでアップデートしてから利用します。previewすると、google-cloud-sdk/examples配下にdeployment_managerというディレクトリが生成されます。中には、nginx_phpとnodejsがあり、それぞれのディレクトにはyamlファイルが入っています。nodejs/nodejs-config.yamlは上のテンプレートの記述方法で解説したサンプルファイルです。デプロイ先のプロジェクトIDを指定しておきます。my-test-projectでは、テンプレートをインサートします。inserted.と表示されます。実際にテンプレートがインサートされたのかgetコマンドを使って指定したテンプレートが取得できるのか確認します。インサートされていないと404が返されますが、先ほどインサートしたテンプレートが取得できました。実行結果では、今度はこのテンプレートを指定して実際にインスタンスを生成してみます。インスタンスの生成には1分近く時間がかかります。10秒ずつポーリングしますが最後にDEPLOYEDになればデプロイ成功です。DEPLOY_FAILUREになった場合は失敗です。生成されるデプロイ成功を確認したので、立ち上がったVMインスタンスのIPアドレスとポート番号8080を入力してブラウザからアクセスしてみます。NodeJSと表示されます。Worldと表示されたのでインストールが成功しているのを確認できました。*コマンドの使用方法はこちらに詳しく載っています。動いているのを確認CLIでの全体的な使い方はこんな感じです。nodejsだけではなく、moodleやWordpressなどを組むときは使い勝手が良さそうです。次にAPIで動かしてみますAPIを叩くためのクライアントプログラムを作成して実際に動かしてみましょう。Javaのクライアントライブラリがありますのでこちらを拝借します。https://developers.google.com/deployment-manager/v1beta2/api-lib/java?hl=ja*APIリファレンスはこちらを見てください。認証を通してAPIを叩きたいので、サービスアカウントを有効にします。押して新しいクライアントIDを発行します。自動でP12ファイルがダウンロードされますのでそれをクライアントプログラムのプロジェクトに入れ、クライアントプログラムから読み込むだけです。同時に、上のCLIでの検証で使ったYAML形式のテンプレート(nodejsの実行環境)をJSONに変換し、用意します。認証を行った後にテンプレートファイルをアップロードし、アップロードしたテンプレートからインスタンスを生成するようになっています。"nodejs4");delete.execute();では、プログラムを実行してみます。(1)はManager.Templates.Insert(テンプレートの追加)を実行します。実行しますとテンプレートファイルがアップロードされます。(2)ではManager.Templates.List(アップロードしたテンプレートのリスト取得)を実行します。プロジェクトにアップロードしたテンプレートファイルの件数が表示されました。(3)ではManager.Deployments.Insert(テンプレート名を指定してデプロイ)を実行します。デプロイ完了までにはインスタンスの生成など時間がかかりますので、Manager.Deployments.List(デプロイしたデプロイメントのリスト取得)でデプロイ状況を確認してみます。確認すると、DEPLOYING(デプロイ中)と返されますが、しばらく経ってから再取得するとDEPLOYED(デプロイ済)となります。デプロイが失敗するとDEPLOYMENT_FAILEDとなります。テンプレートに書かれたシェルスクリプトの実行が失敗するだけでもDEPLOYMENT_FAILEDになります。(4)デプロイメントを削除(Manager.Deployments.Delete)します。生成したデプロイメントを削除し、VMインスタンスなどを削除します。画面から直接削除することができますが、デプロイメントが残ってしまいますので直接いじらないようにしましょう。APIでの一通りの使い方は以上です。GCEをAPIで立ち上げるのも良いけど、お任せでサーバセットアップをするなら、クラウドエースにお任せください。