对于每个部署,Deployment Manager 都会创建预定义的环境变量,其中包含从部署中推断出的信息。您可以在 Python 或 Jinja2 模板中使用这些环境变量,以此获取具有独特性的项目或部署信息。
准备工作
- 如果要使用本指南中的命令行示例,请安装 “gcloud” 命令行工具。
- 如果希望使用本指南中的 API 示例,请设置 API 访问权限。
- 了解如何创建基本模板。
- 了解如何创建配置
可用的环境变量
Deployment Manager 自动设置以下环境变量。无论您将这些变量用于模板中何处,它们都会被替换。例如,使用 project_number
变量会将项目编号添加到服务账号名称中。
环境变量 | 值 |
---|---|
deployment |
部署的名称。 |
name |
在使用模板的配置中声明的 name 。如果您希望配置中声明的名称是基础模板中的资源名称,这将非常有用。 |
project |
此部署的项目 ID。 |
project_number |
此部署的项目编号。 |
current_time |
部署开始扩展时的 UTC 时间戳。 |
type |
在顶级配置中声明的资源类型。 |
username |
当前的 Deployment Manager 用户。 |
使用环境变量
使用以下语法将环境变量添加到模板:
{{ env["deployment"] }} # Jinja context.env["deployment"] # Python
在模板中,如以下示例所示使用变量:
Jinja
- type: compute.v1.instance name: vm-{{ env["deployment"] }} properties: machineType: zones/us-central1-a/machineTypes/f1-micro serviceAccounts: - email: {{ env['project_number'] }}-compute@developer.gserviceaccount.com scopes: - ...
Python
def GenerateConfig(context): resources = [] resources.append ({ 'name': 'vm-' + context.env["deployment"], 'type': 'compute.v1.instance', 'properties': { 'serviceAccounts': [{ 'email': context.env['project_number'] + '-compute@developer.gserviceaccount.com', 'scopes': [...] }] } ...}] return {'resources': resources}