到目前为止,我只使用数据库。yml中的每个参数都显式地调用,在下面的文件中,它使用了一些我不理解的字符。每一行和符号(&,*,<<)是什么意思?我如何读取这个文件?
development: &default
adapter: postgresql
database: dev_development
test: &test
<<: *default
database: test_test
cucumber:
<<: *test
production:
<<: *default
database: test_production
&标记节点的别名(在示例中&default将开发节点别名为“default”),*引用别名为“default”的节点。<<:插入该节点的内容。
请允许我在这里引用YAML规范:
重复的节点(对象)首先由一个锚(用&号-“&”标记)标识,然后被别名(用星号-“*”引用)。
这是你的例子的一部分
development: &default
adapter: postgresql
database: dev_development
test: &test
<<: *default
database: test_test
实际上展开到
development: &default
adapter: postgresql
database: dev_development
test: &test
adapter: postgresql # from the "default" alias
database: test_test # overridden by the duplicate key
同时使“test”节点在别名“test”下也可用。
查看YAML规范- 2.2 Structures以获得更多细节(或者如果你需要moar docs++: 3.2.2.2)。锚和别名)
简单地说,这个概念类似于基类和派生类。
在基类模板中,您使用“&”提到了所有常见的细节,这意味着它可以用于展开需要这些字段的其他yaml节。
现在,当你创建另一个section,它是这个'基类'类型结构的配置值的超集时,你使用'*'和基类锚(即以'&'开头的锚)。你使用'<<:'作为yaml概念来实际放置'基类'部分,你可以稍后重写。
vsm:
stub_nsx_mgr: &MGR_CTRL_STUB
username: ADMIN
password: $DEFAULT_PASSWORD
deployment: ovf
build: $PR_BUILD
vmnics:
- network: $MANAGEMENT_NETWORK_0
vc: vc_0
ovf_options:
- --diskMode=$DISKMODE
- --deploymentOption=$DEPLOYMENT_OPTION
$MGR_0:
<<: *MGR_CTRL_STUB
ovf_path_regex: 'appliance.*\.ovf'
ovf_options:
- --diskMode=$DISKMODE
- --deploymentOption=$DEPLOYMENT_OPTION
$CTRL_0:
<<: *MGR_CTRL_STUB
ovf_options:
- --diskMode=$DISKMODE
- --allowExtraConfig
$CTRL_1:
*MGR_CTRL_STUB
但是,如果你不想覆盖扩展字段,你可以跳过'<<:'