GCPを始める ~Deployment Manager~
GCP の Deployment Manager を触ってみる。
自動で環境を構築することができるみたいである。 今までやってきたことを GCP Console ではなく、Deployment Manager でやったらどうなるか、ということを試して行きたいと思う。
前提条件
ゴール
下記と同等の状態を構築することをゴールとする。
作成手順
Google Cloud Shell へ接続します。 YAML ファイルを作成します。
$ touch deploy.yml
下記をdeploy.pyにコピーアンドペーストする。
※[Your Project Id] は、GCP のプロジェクト ID を指定してください。
※[Your Service Account] は、Compute Engine のサービスアカウントを指定してください。
resources: - type: compute.v1.network name: app2-network properties: autoCreateSubnetworks: false routingConfig: routingMode: REGIONAL - type: compute.v1.subnetwork name: app2-sub properties: network: https://compute.googleapis.com/compute/v1/projects/[Your Project Id]/global/networks/app2-network ipCidrRange: 10.0.3.0/24 region: us-west1 metadata: dependsOn: - app2-network - type: compute.v1.firewall name: ce-allow-ssh properties: network: https://compute.googleapis.com/compute/v1/projects/[Your Project Id]/global/networks/app2-network priority: 1000 sourceRanges: - 0.0.0.0/0 allowed: - IPProtocol: tcp ports: - 22 direction: INGRESS logConfig: enable: false disabled: false metadata: dependsOn: - app2-network - type: compute.v1.firewall name: ce-allow-icmp properties: network: https://compute.googleapis.com/compute/v1/projects/[Your Project Id]/global/networks/app2-network priority: 1000 sourceRanges: - 0.0.0.0/0 allowed: - IPProtocol: icmp direction: INGRESS logConfig: enable: false disabled: false metadata: dependsOn: - app2-network - type: compute.v1.firewall name: ce-allow-flask properties: network: https://compute.googleapis.com/compute/v1/projects/[Your Project Id]/global/networks/app2-network priority: 1000 sourceRanges: - 0.0.0.0/0 allowed: - IPProtocol: tcp ports: - 5000 direction: INGRESS logConfig: enable: false disabled: false metadata: dependsOn: - app2-network - type: compute.v1.instance name: instance-2 properties: status: RUNNING zone: us-west1-b machineType: https://www.googleapis.com/compute/v1/projects/[Your Project Id]/zones/us-west1-b/machineTypes/f1-micro disks: - deviceName: instance-2 type: PERSISTENT mode: READ_WRITE boot: true autoDelete: true initializeParams: sourceImage: https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/family/centos-7 diskSizeGb: 10 diskType: https://www.googleapis.com/compute/v1/projects/[Your Project Id]/zones/us-west1-b/diskTypes/pd-standard networkInterfaces: - network: https://www.googleapis.com/compute/v1/projects/[Your Project Id]/global/networks/app2-network subnetwork: https://www.googleapis.com/compute/v1/projects/[Your Project Id]/regions/us-west1/subnetworks/app2-sub accessConfigs: - name: External NAT type: ONE_TO_ONE_NAT serviceAccounts: - email: [Your Service Account] scopes: https://www.googleapis.com/auth/cloud-platform metadata: dependsOn: - app2-network - app2-sub
下記のコマンドを実行します。
$ gcloud deployment-manager deployments create quickstart --config deploy.yml
削除手順
Google Cloud Shell へ接続し、下記のコマンドを実行します。
$ gcloud deployment-manager deployments delete quickstart
困ったときは
公式ドキュメントには詳細な書き方とか、どうしたらいいか、ということはあまり書いていない。
困ったときは、下記を探してリンクを開くと良い。JSONベースで記述を参照でき、これを YAML ファイルにコピペすることができる。
終わりに
Redis と Bigtable は自動化できないようである、ショック。
まぁ、最低限のことは自動化できるようなので、利用する価値はある。GCP が今後拡張してくれることを祈るばかりである。
参考サイト
https://cloud.google.com/deployment-manager/docs/configuration/supported-resource-types