我正在使用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的想法是一个黑客。老实说,我不确定。
答案 0 :(得分:1)
如错误消息所示,命令行属性只能与模板一起使用。它们本质上是要替换config yaml文件。
最简单的方法是将您的yaml文件重命名为.py或.jinja文件。然后使用该模板作为gcloud命令中的文件而不是yaml文件。 在该新模板文件中,如果您未在命令行中传递它们,请添加您想要的任何默认值。 对于python,类似于:
if 'myparam' in context.properties:
valuetouse = context.properities['myparam']
else:
valuetouse = mydefaultvalue
如果模板使用其他模板,那么您还需要为新的顶级模板创建模式文件,以便您可以在那里进行导入而不是yaml文件。 请参阅此github示例中的模式文件。
如果需要,可以忽略所有属性,只需执行导入部分。