GCP Deployment Manager メモ

はじめに

Deployment ManagerではYAMLを用いて定義を行う。

ドキュメントが細かすぎたので、要点のみをメモ

YAMLの基本

配列は一般的には以下のようなもの

["aaa","bbb","ccc"]

YAMLで表現すると以下になる。同じインデントでハイフンをつけて表現する。

- aaa
- bbb
- ccc

次に、ハッシュ。ハッシュはキーと値を持つ。

{Key1: aaa, Key2: bbb, Key3: ccc}

YAMLで表現すると以下になる。同じインデントで何もなしで表現する。

Key1: aaa
Key2: bbb
Key3: ccc

YAMLの入れ子の種類

YAMLには大きく、配列とハッシュがある。
入れ子には組み合わせの数だけ存在する。

ややこしいけど、あまたで判断つくようにしておくこと。

種類内容内容
配列を持つ配列– test
– (空白)
– aaa1
– aaa2
– aaa3
– (空白)
– bbb1
– bbb2
– bbb3
[test,[aaa1,aaa2,aaa3],[bbb1,bbb2,bbb3]]
配列の要素に配列をとる場合、
空のハイフン行が必要となる。
ハッシュを持つ配列– test
– name: hoge
type: fuga
[test,{name: hoge, type: fuga}]
配列を持つハッシュfruites:
– apple
– banana
– orange
{fruites: [apple,banana,orange]}
ハッシュを持つハッシュproperties:
prop1: hoge
prop2: fuga
prop3: baa
{properties: {prop1:hoge, prop2:fuga, prop3: baa} }

構成

構成はデプロイに必要なリソースをYAMLで記述したもの。
ハッシュを持つ配列」を持つ、ハッシュの形で記述される。

resources:
- name: リソースを特定するためのユーザ定義の文字列 #リソース1
  type: デプロイされるリソースのタイプ(compute.v1.instance等々) #リソース1
  properties: リソースタイプのパラメータ #リソース1
- name: リソースを特定するためのユーザ定義の文字列 #リソース2
  type: デプロイされるリソースのタイプ(compute.v1.instance等々) #リソース2
  properties: リソースタイプのパラメータ #リソース2

イメージとしてはこんな感じ

{resources: [{リソース1のハッシュの塊},{リソース2のハッシュの塊}]

構成例

resources:
- name: the-first-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-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/debian-7-wheezy-v20150423
    networkInterfaces:
    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
      accessConfigs:
      - name: External NAT
        type: ONE_TO_ONE_NAT

引用元

Deployment Manager の基礎知識  |  Cloud Deployment Manager のドキュメント

テンプレート

構成の記述は複雑になるので、テンプレートを用いて簡素化することもできる。
テンプレートはPython、Jinja2で作成する必要がある。
テンプレートは解析され、内部的にはYAMLで展開される。

その場合、typeはテンプレートの名称となる。

imports:
- path: vm_template.jinja

resources:
- name: vm-instance
  type: vm_template.jinja
  properties:
    zone: us-central1-a
    project: myproject

リソースとリソースタイプ

デプロイメントマネージャでリソースを追加する際にはリソースタイプを選択する必要がある。
タイプの指定方法には基本タイプ、タイププロバイダがある。

項目指定方法内容
基本タイプ[API].[VERSION].[RESOURCE]
タイププロバイダ(Google管理)gcp-types/[PROVIDER]:[RESOURCE]
タイププロバイダ(カスタム)[PROJECT_ID]/[TYPE_PROVIDER]:[COLLECTION]

コメント

タイトルとURLをコピーしました