GCPにDjangoの環境を整えていく_Deployment Manager編

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

今回はGCPのIaC(Infrastructure as Code)を担うDeployment Managerについてとなります。
折角なら手動で作成した環境をDeployment Managerを使って、一発でデプロイできるようにしよう、という事で用意したコードをここにまとめておきます。

# Deployment Managerを使った環境デプロイ手順
GCP画面の左のツールの欄にDeployment Managerがあります。デプロイを押下します。
※もしくは上の検索窓でDeployment Managerと検索しても出てきます。こちらの方が楽かもしれません。
![0001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/81919396-71b2-f1c7-73d0-d62f788bb331.png)
例のごとくAPIを有効化してあげる必要があります。
![0002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/9da5e82d-b0b5-a3a0-c421-2c1084dab398.png)
有効化後、以下のような管理画面が表示されます。どうもDeployment ManagerはAWSのCloudFormationのようにGUI操作でyamlをアップロードして、環境をデプロイするのではなく、Shell上でやる必要があるみたいです。
画面右上のCloud Shellを押下します。★みたいなマークの1つ右です。
![0003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/5ec3fa2c-e8cb-2c2a-e48f-41fff398a8fb.png)
CLIが開きます。ここにyamlを配置します。
![0004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/690f1086-48a8-dd54-34be-617518c871fb.png)
ファイル名はdjango01_all.yamlとしました。
内容はこの記事の下にあるGitHubを参照ください。
用意したyamlを使ってデプロイしていきます。実際にデプロイした時のコマンドと出力結果が以下となります。
gcloud deployment-managerコマンドに--previewオプションを付けると、実際にデプロイする前にGCPのDeployment Managerの管理画面でレビューをはさむことが出来ます。
```
ohtsukaaws@cloudshell:~ (classact-420821)$ gcloud deployment-manager deployments create django01all --config django01_all.yaml --preview
The fingerprint of the deployment is b'WPIbZOLDpMBZi1-p8KiUTw=='
Waiting for create [operation-1714718465795-61787010b2564-1fbf195a-49d2ffee]...done.                                                             
Create operation operation-1714718465795-61787010b2564-1fbf195a-49d2ffee completed successfully.
NAME: cdm-fw-rule
TYPE: compute.v1.firewall
STATE: IN_PREVIEW
ERRORS: []
INTENT: CREATE_OR_ACQUIRE

NAME: cdm-public-subnet
TYPE: compute.v1.subnetwork
STATE: IN_PREVIEW
ERRORS: []
INTENT: CREATE_OR_ACQUIRE

NAME: cdm-vm-django
TYPE: compute.v1.instance
STATE: IN_PREVIEW
ERRORS: []
INTENT: CREATE_OR_ACQUIRE

NAME: cdm-vpc
TYPE: compute.v1.network
STATE: IN_PREVIEW
ERRORS: []
INTENT: CREATE_OR_ACQUIRE

NAME: cdm-vpc-allow-health-check
TYPE: compute.v1.firewall
STATE: IN_PREVIEW
ERRORS: []
INTENT: CREATE_OR_ACQUIRE

NAME: cdm-vpc-allow-health-check-ipv6
TYPE: compute.v1.firewall
STATE: IN_PREVIEW
ERRORS: []
INTENT: CREATE_OR_ACQUIRE

NAME: cdm-vpc-allow-http
TYPE: compute.v1.firewall
STATE: IN_PREVIEW
ERRORS: []
INTENT: CREATE_OR_ACQUIRE
```
以下がレビュー画面となります。デプロイを押してみます。
![0005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/dc3905d0-1d56-873c-04b8-4cd55a35e8b1.png)
yamlに問題が無ければデプロイすることが出来るはずです。
![0006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/cfd80ec5-2063-1d8a-ef37-11fde73fa05b.png)
今回立ち上げたVMを見てみます。外部IPアドレスを持っていることから、このサーバに対してローカルのPCから接続試験が出来そうです。この手順で使用しているyamlではVM起動時にapache2をインストール・起動するようなシェルを加えていますので、HTTP通信をしてみます。
![0007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/9c1e7d96-c019-343f-0343-a949f08710ad.png)
Apacheの画面が出てくれば成功です。
![0008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/c184f691-2ba9-f02a-f5ff-be054a5afac3.png)
DeployしたものはDeployment Managerの管理画面で一気に削除することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/971207a4-c758-b2d8-31dd-04832a18e106.png)

# Deployment Managerで使用するyaml
## GCPにDjangoの環境を整えていく01(VPC/subnet/Internet Gateway/FW/VM)
以下記事の環境構築について

https://qiita.com/ohtsuka-shota/items/4fa7cd52421ee5887295

yamlはこちらになります。

https://github.com/ohtsuka-shota/gcp-django/blob/main/django01_all.yaml

## 今後更新予定