Google Cloud Deployment Manager:将变量传递到模板中
Google Cloud Deployment Manager: Passing variables into templates
我正在使用 Google 云部署,我正在尝试将外部输入输入到我的模板中。也就是说,我想在我的实例上设置一个元数据变量(在创建实例时),但在执行时提供这个值。
我试过:
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 文件中添加 属性 并在我 运行 一切之前重写这个文件,但感觉就像一个 hack。那,或者我将变量从 shell 传递到 Deploy Manager 的想法是一种 hack。老实说,我不确定。
如错误消息所示,命令行属性只能与模板一起使用。它们本质上是为了替换配置 yaml 文件。
最简单的方法就是将您的 yaml 文件重命名为 .py 或 .jinja 文件。然后使用该模板作为 gcloud 命令中的文件而不是 yaml 文件。
在那个新的模板文件中,如果您不在命令行中传递默认值,请添加您想要的任何默认值。
对于 python,类似于:
if 'myparam' in context.properties:
valuetouse = context.properities['myparam']
else:
valuetouse = mydefaultvalue
如果模板使用另一个模板,那么您还需要为新的顶级模板创建一个架构文件,这样您就可以在那里而不是 yaml 文件进行导入。
请参阅此 github 示例中的架构文件。
如果需要,您可以忽略所有属性,只执行导入部分。
我正在使用 Google 云部署,我正在尝试将外部输入输入到我的模板中。也就是说,我想在我的实例上设置一个元数据变量(在创建实例时),但在执行时提供这个值。
我试过:
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 文件中添加 属性 并在我 运行 一切之前重写这个文件,但感觉就像一个 hack。那,或者我将变量从 shell 传递到 Deploy Manager 的想法是一种 hack。老实说,我不确定。
如错误消息所示,命令行属性只能与模板一起使用。它们本质上是为了替换配置 yaml 文件。
最简单的方法就是将您的 yaml 文件重命名为 .py 或 .jinja 文件。然后使用该模板作为 gcloud 命令中的文件而不是 yaml 文件。 在那个新的模板文件中,如果您不在命令行中传递默认值,请添加您想要的任何默认值。 对于 python,类似于:
if 'myparam' in context.properties:
valuetouse = context.properities['myparam']
else:
valuetouse = mydefaultvalue
如果模板使用另一个模板,那么您还需要为新的顶级模板创建一个架构文件,这样您就可以在那里而不是 yaml 文件进行导入。 请参阅此 github 示例中的架构文件。
如果需要,您可以忽略所有属性,只执行导入部分。