[GCP] Google Cloud Deployment ManagerでCompute Engineをデプロイしてみた

2020.04.29

Google Cloud Deployment Managerは、GCP(Google Cloud Platform)のリソースをYAML形式で定義してデプロイするサービスです。また、PythonやJinja2テンプレートでは、デプロイするリソースをコードで定義するため、効率よくリソースを作成することができます。AWSのCloudFormationに近いサービスだと思います。

まずは、GCPが提供している仮想マシン「Compute Engine」のデプロイをやってみます。

事前準備

Cloud Deployment Managerでリソースをデプロイする際にgcloudコマンドを使用します。gcloud CLIはCloud SDKをインストールすることで利用できるようになります。Cloud SDKの導入方法は次のブログが参考になりました。

環境

項目 内容
OS macOS Catalina 10.15.4(19E287)
Python 3.7.0
Cloud SDK 280.0.0

構成ファイル作成

構成ファイルにYAML構文でリソースを定義します。PROJECT_IDは個人のものに差し替えてください。

sample-vm.yaml

resources:
  - type: compute.v1.instance
    name: sample-vm
    properties:
      zone: asia-northeast1-a
      machineType: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/asia-northeast1-a/machineTypes/f1-micro
      disks:
        - deviceName: boot
          type: PERSISTENT
          boot: true
          autoDelete: true
          initializeParams:
            sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-9
      networkInterfaces:
        - network: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default
          accessConfigs:
            - name: External NAT
              type: ONE_TO_ONE_NAT

構成ファイル内容

構成ファイルの内容は次の通りです。ファイル名はsample-vm.yamlで保存します。

項目 内容
インスタンス名 sample-vm
ゾーン asia-northeast1-a
マシンタイプ f1-micro
イメージ debian-9
ディスク boot

デプロイ

デプロイ先のプロジェクトをgcloudコマンドで指定します。

gcloud config set project [PROJECT_ID]

作成した構成ファイルを使用してgcloudコマンドでデプロイします。

gcloud deployment-manager deployments create sample-vm --config sample-vm.yaml

デプロイが完了すると次のようなログが出力されます。

The fingerprint of the deployment is yM2m-nceRKj8zLLH-eacew==
Waiting for create [operation-1588154549158-5a46b0bc043ce-3220d939-9c3a584c]...done.
Create operation operation-1588154549158-5a46b0bc043ce-3220d939-9c3a584c completed successfully.
NAME TYPE STATE ERRORS INTENT
sample-vm compute.v1.instance COMPLETED []

GCPのコンソールでもインスタンスが作成されていることを確認できました。

GCP Compute Engine VMインスタンス

後片付け

作成したリソースに対しては課金が発生するため、忘れずに削除します。

gcloud deployment-manager deployments delete sample-vm

まとめ

今回は手始めにCompute Engineのデプロイをやってみました。次はCloud Functionsなど他のサービスのデプロイを紹介しようと考えています。また、その際にはPythonテンプレートの活用も出来ればよいと思います。

参考資料