Google compute engine 使用环境变量的Google部署管理器模板
我有一个名为dev.yaml的模板,如下所示:Google compute engine 使用环境变量的Google部署管理器模板,google-compute-engine,Google Compute Engine,我有一个名为dev.yaml的模板,如下所示: imports: - path: generate_config.py resources: - name: application_vm type: generate_config.py properties: zone: europe-west1-d project: cpb1234567 #!/usr/bin/env python COMPUTE_URL_BASE = 'https://www.googleapi
imports:
- path: generate_config.py
resources:
- name: application_vm
type: generate_config.py
properties:
zone: europe-west1-d
project: cpb1234567
#!/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}
请注意,我正在硬编码区域和项目。我希望它们来自这些环境变量
CLOUDSDK_COMPUTE_ZONE=europe-west1-d
GCP_PROJ_ID=cpb1234567
generate_config.py如下所示:
imports:
- path: generate_config.py
resources:
- name: application_vm
type: generate_config.py
properties:
zone: europe-west1-d
project: cpb1234567
#!/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中,不清楚什么语法可以工作
非常感谢
Nathan虽然没有答案,但更多信息如下:
谢谢您-他们可以将环境变量称为“deployment manager环境变量”或类似的名称。。?当GCP的其他部分允许您设置和检索环境变量时,您会感到非常困惑。在Python模板中使用“os”库也是不可能的,因此编程仅限于环境变量。