Google Cloud Deployment Manager:将变量传递到模板中

时间:2016-03-22 13:33:04

标签: google-compute-engine

我正在使用Google Cloud Deployment,我正在尝试将外部输入内容输入到我的模板中。也就是说,我想在我的实例上设置元数据变量(在创建实例时),但在执行时提供此值。

我试过了:

gcloud deployment-manager deployments create  test-api-backend --config test-api-backend.yaml --properties 'my_value=hello'

哪个失败(属性标志只应在传递模板作为配置文件时使用。

我试过了:

my_value=hello gcloud deployment-manager deployments create  test-api-backend --config test-api-backend.yaml

并使用{{env['my_value']}},但价值未被提取。

我想我可以在.jinja文件中添加该属性,并在运行所有内容之前重新编写此文件,但感觉就像是黑客。那个,或者我将一个变量从shell传递到Deploy Manager的想法是一个黑客。老实说,我不确定。

1 个答案:

答案 0 :(得分:1)

如错误消息所示,命令行属性只能与模板一起使用。它们本质上是要替换config yaml文件。

最简单的方法是将您的yaml文件重命名为.py或.jinja文件。然后使用该模板作为gcloud命令中的文件而不是yaml文件。 在该新模板文件中,如果您未在命令行中传递它们,请添加您想要的任何默认值。 对于python,类似于:

if 'myparam' in context.properties:
    valuetouse = context.properities['myparam']
else:
    valuetouse = mydefaultvalue

如果模板使用其他模板,那么您还需要为新的顶级模板创建模式文件,以便您可以在那里进行导入而不是yaml文件。 请参阅此github示例中的模式文件。

https://github.com/GoogleCloudPlatform/deploymentmanager-samples/blob/master/examples/v2/igm-updater/ha-service.py.schema

如果需要,可以忽略所有属性,只需执行导入部分。