![[GCP] Google Cloud Deployment ManagerでCompute Engineをデプロイしてみた](https://devio2023-media.developers.io/wp-content/uploads/2020/09/gcp-eyecatch-deployment-manager_1200x630.png)
[GCP] Google Cloud Deployment ManagerでCompute Engineをデプロイしてみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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は個人のものに差し替えてください。
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のコンソールでもインスタンスが作成されていることを確認できました。

後片付け
作成したリソースに対しては課金が発生するため、忘れずに削除します。
gcloud deployment-manager deployments delete sample-vm
まとめ
今回は手始めにCompute Engineのデプロイをやってみました。次はCloud Functionsなど他のサービスのデプロイを紹介しようと考えています。また、その際にはPythonテンプレートの活用も出来ればよいと思います。








