Google Cloud Deployment Manager:通过 yaml 配置将实例添加到实例组
Google Cloud Deployment Manager: add instances to instance group via yaml configuration
我正在尝试通过部署管理器配置(YAML 文件)创建一个包含多个 VM 的非托管实例组。
我可以通过 Google API 轻松找到有关 addInstances 的文档,但无法在 YAML 文件中找到有关如何执行此操作的文档:
instances/instanceGroup 资源中应包含哪些属性才能使其正常工作?
目前不可能使用 gcloud 部署管理器来完成。
这已经过测试,似乎 Google Deployment Manager 能够完成而不会出现以下代码段的问题:
{
"instances": [
{
"instance": string
}
]
}
它没有添加指定的实例,但创建了 IGM。
但是 Terraform 似乎可以做到 https://www.terraform.io/docs/providers/google/r/compute_instance_group.html
下面的 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) ]
我认为@mcourtney 的回答是正确的。
我刚遇到这种情况,我使用 python 模板和 yaml 配置将实例添加到非托管实例组。
这是我的 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
这只是一个例子。您可以将所有硬编码的内容抽象为 python 模板顶部的 yaml 配置或变量。
我正在尝试通过部署管理器配置(YAML 文件)创建一个包含多个 VM 的非托管实例组。
我可以通过 Google API 轻松找到有关 addInstances 的文档,但无法在 YAML 文件中找到有关如何执行此操作的文档:
instances/instanceGroup 资源中应包含哪些属性才能使其正常工作?
目前不可能使用 gcloud 部署管理器来完成。
这已经过测试,似乎 Google Deployment Manager 能够完成而不会出现以下代码段的问题:
{
"instances": [
{
"instance": string
}
]
}
它没有添加指定的实例,但创建了 IGM。
但是 Terraform 似乎可以做到 https://www.terraform.io/docs/providers/google/r/compute_instance_group.html
下面的 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) ]
我认为@mcourtney 的回答是正确的。
我刚遇到这种情况,我使用 python 模板和 yaml 配置将实例添加到非托管实例组。
这是我的 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
这只是一个例子。您可以将所有硬编码的内容抽象为 python 模板顶部的 yaml 配置或变量。