我有一个名为 dev.yaml 的模板,如下所示:
imports:
- path: generate_config.py
resources:
- name: application_vm
type: generate_config.py
properties:
zone: europe-west1-d
project: cpb1234567
请注意,我正在对区域和项目进行硬编码。我希望它们来自这些环境变量。
CLOUDSDK_COMPUTE_ZONE=europe-west1-d
GCP_PROJ_ID=cpb1234567
generate_config.py 如下所示:
#!/usr/bin/env python
COMPUTE_URL_BASE = 'https://www.googleapis.com/compute/v1/'
def generate_config(context):
resources = [{
'name': context.env['name'],
'type': 'compute.v1.instance',
'properties': {
'zone': context.properties['zone'],
'machineType': ''.join([COMPUTE_URL_BASE,
'projects/',
context.properties['project'],
'/zones/',
context.properties['zone'],
'/machineTypes/n1-standard-1']),
'disks': [{
'deviceName': 'boot',
'type': 'PERSISTENT',
'boot': True,
'autoDelete': True,
'initializeParams': {
'sourceImage': ''.join([COMPUTE_URL_BASE,
'projects/',
context.properties['project'],
'/global/images/jre-10gb-debian-jessie'])
}
}],
'networkInterfaces': [{
'network': ''.join([COMPUTE_URL_BASE,
'projects/',
context.properties['project'],
'/global/networks/default']),
'accessConfigs': [{
'name': 'External NAT',
'type': 'ONE_TO_ONE_NAT'
}]
}]
}
}]
return {'resources': resources}
我从属性中获取区域和项目,这样就可以了。
但是,如何从环境变量中获取区域和项目?
我似乎无法在 Python 模板中执行此操作:
import os
...
os.environ['GCP_PROJ_ID']
由于导入失败。
在 YAML 中,尚不清楚哪种语法有效。
非常感谢
内森
最佳答案
虽然不是这样的答案,但更多信息如下:
https://groups.google.com/forum/#!topic/gce-discussion/Md7rCo1ZMJY
关于google-compute-engine - 使用环境变量的 Google Deployment Manager 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44049937/