google 部署管理器使用 --properties 参数访问嵌套属性
google deployment manager access nested properties with --properties argument
如果我使用神社模板,我可以像这样通过命令行覆盖属性:
--properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9
但是我没有看到使用嵌套属性(例如标签或环境变量)执行此操作的文档或示例:
resources:
- name: resource-name
type: 'gcp-types/cloudfunctions-v1:projects.locations.functions'
properties:
labels:
testlabel1: testlabel1value
testlabel2: testlabel2value
environmentVariables:
TEST: 'zzzzzzzzz'
如何设置这些属性?这不起作用:--properties labels:testlabel1:newvalue
这里的简短回答是 --properties
标志并不意味着将 属性 值传递给模板。模板不能 运行 没有配置文件,--properties 标志用于替换配置文件。您传递的每个参数都与在配置文件中列出它们相同。
本质上使用 --template my-template.py --properties zone:us-central1-f
相当于 运行ning --config myConfig.yaml
,其中 YAML 定义如下:
imports:
- path: my-template.py
resources:
- name: some-resource
type: my-temaplte.py
properties:
zone: us-central1-f
--properties
标志并不意味着传递原始数据以替换非变量。
尽管这不能直接回答您的问题,但您通常不需要在标志中定义嵌套值。您的模板通常会调用从对象 properties
.
中获取的直接变量
尽管如此,我确实尝试了一些测试,据我所知,你不能这样做。
经过反复试验,我设法通过命令行传递了一个对象,如下所示:
--properties ^~^labels:{'testlabel1: testlabel1value','testlabel2: testlabel2value'}~environmentVariables:{'TEST: zzzzzzzzz'}
- 这个符号序列 ^~^ 是您可以更改分隔符的方式。你必须把它放在你的属性的开头。有关转义的更多信息,您可以找到 here.
- 我将单个撇号放在单个键值对上,因为我们需要在键和值之间添加 space。否则它被解释为具有空值的键。
- 如果您使用 Bash shell,您还应该转义 {,} 符号。
如果我使用神社模板,我可以像这样通过命令行覆盖属性:
--properties zone:us-central1-a,machineType:n1-standard-1,image:debian-9
但是我没有看到使用嵌套属性(例如标签或环境变量)执行此操作的文档或示例:
resources:
- name: resource-name
type: 'gcp-types/cloudfunctions-v1:projects.locations.functions'
properties:
labels:
testlabel1: testlabel1value
testlabel2: testlabel2value
environmentVariables:
TEST: 'zzzzzzzzz'
如何设置这些属性?这不起作用:--properties labels:testlabel1:newvalue
这里的简短回答是 --properties
标志并不意味着将 属性 值传递给模板。模板不能 运行 没有配置文件,--properties 标志用于替换配置文件。您传递的每个参数都与在配置文件中列出它们相同。
本质上使用 --template my-template.py --properties zone:us-central1-f
相当于 运行ning --config myConfig.yaml
,其中 YAML 定义如下:
imports: - path: my-template.py resources: - name: some-resource type: my-temaplte.py properties: zone: us-central1-f
--properties
标志并不意味着传递原始数据以替换非变量。
尽管这不能直接回答您的问题,但您通常不需要在标志中定义嵌套值。您的模板通常会调用从对象 properties
.
尽管如此,我确实尝试了一些测试,据我所知,你不能这样做。
经过反复试验,我设法通过命令行传递了一个对象,如下所示:
--properties ^~^labels:{'testlabel1: testlabel1value','testlabel2: testlabel2value'}~environmentVariables:{'TEST: zzzzzzzzz'}
- 这个符号序列 ^~^ 是您可以更改分隔符的方式。你必须把它放在你的属性的开头。有关转义的更多信息,您可以找到 here.
- 我将单个撇号放在单个键值对上,因为我们需要在键和值之间添加 space。否则它被解释为具有空值的键。
- 如果您使用 Bash shell,您还应该转义 {,} 符号。