Google Cloud Deployment Manager:通过yaml配置向实例组添加实例

时间:2016-11-24 13:12:25

标签: google-cloud-platform google-compute-engine google-cloud-sdk

我尝试通过Deployment Manager Configuration(YAML文件)创建一个包含多个VM的非托管instanceGroup。

我可以通过Google API轻松找到有关addInstances的文档,但无法在YAML文件中找到有关如何执行此操作的文档:

instances

instanceGroups

要使实例/ instanceGroup资源有效,应包含哪些属性?

4 个答案:

答案 0 :(得分:1)

现在没有可能与gcloud部署经理一起做。

答案 1 :(得分:1)

下面的YAML将创建一个计算引擎实例,创建一个非托管实例组,并将该实例添加到该组中。

resources:
- name: instance-1
  type: compute.v1.instance
  properties:
    zone: australia-southeast1-a
    machineType: zones/australia-southeast1-a/machineTypes/n1-standard-1
    disks:
    - deviceName: boot
      type: PERSISTENT
      diskType: zones/australia-southeast1-a/diskTypes/pd-ssd
      boot: true
      autoDelete: true
      initializeParams:
        sourceImage: projects/debian-cloud/global/images/debian-9-stretch-v20180716
    networkInterfaces:
    - network: global/networks/default
      accessConfigs:
      - name: External NAT
        type: ONE_TO_ONE_NAT

- name: ig-1
  type: compute.v1.instanceGroup
  properties:
    zone: australia-southeast1-a
    network: global/networks/default

- name: ig-1-members
  action: gcp-types/compute-v1:compute.instanceGroups.addInstances
  properties:
    project: YOUR_PROJECT_ID
    zone: australia-southeast1-a
    instanceGroup: ig-1
    instances: [ instance: $(ref.instance-1.selfLink) ]

答案 2 :(得分:0)

这已经过测试,看起来Google Deployment Manager能够在没有问题的情况下完成以下代码片段:

{
  "instances":  [
    {
      "instance":  string
    }
  ]
}

它没有添加指定的实例,而是创建了IGM。

然而Terraform似乎能够做到https://www.terraform.io/docs/providers/google/r/compute_instance_group.html

答案 3 :(得分:0)

我认为@mcourtney的答案是正确的。

我刚遇到这种情况,我使用python模板和yaml config将实例添加到非托管实例组中。

这是我的python模板中的资源定义摘要:

{
        'name': name + '-ig-members',
        'action': 'gcp-types/compute-v1:compute.instanceGroups.addInstances',
        'properties': {
            'project': '<YOUR PROJECT ID>',
            'zone' : context.properties['zone'], // Defined in config yaml
            'instanceGroup': '<YOUR Instance Group name ( not url )>',
            "instances": [
    {
      "instance": 'projects/<PROJECT ID>/zones/<YOUR ZONE>/instances/<INSTANCE NAME>'
    }
  ]            
        }
    }

参考API记录在这里:

https://cloud.google.com/compute/docs/reference/rest/beta/instanceGroups/addInstances

这只是一个例子。您可以将所有硬编码的内容抽象为yaml配置或python模板顶部的变量。