如何使用groovy/pipeline脚本将新标记追加到yaml文件中的现有标记列表

wgxvkvu9  于 2022-11-01  发布在  其他
关注(0)|答案(1)|浏览(133)

我有一个yaml文件(config.yaml),它的标签/结构与下面提到的类似。我需要向现有租户列表中添加一个新租户(tenant 3)。我如何使用pipeline/groovy脚本来实现这一点呢?任何帮助/引导都将不胜感激。

consumer_services:
- security
- token
id: 10000
tenants:
  tenant_1:
    state: all
    web_token: true
    cluster_pairs:
    - cluster1
    datacenter: local
    client: CLIENT_TEST
  tenant_2:
    state: all
    web_token: true
    cluster_pairs:
    - cluster2
    datacenter: local
    client: CLIENT_TEST
base_network:
    subnets:
    - 10.160.10.10
    - 10.179.1.09
hgncfbus

hgncfbus1#

我认为你需要做这样的事情:

@Grab('org.yaml:snakeyaml:1.17')

import org.yaml.snakeyaml.DumperOptions
import org.yaml.snakeyaml.Yaml

def options = new DumperOptions()
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK)

Yaml yaml = new Yaml(options)

// load existing structure
def structure = yaml.load(new File("original.yml").text)

// modify the structure
structure.tenants.tenant_3 =
    [
        state        : 'all',
        web_token    : true,
        cluster_pairs: ['cluster3'],
        datacenter   : 'local',
        client       : 'CLIENT_TEST'
    ]

// save to the new file
new File("modified.yml").write(yaml.dump(structure))

因此,步骤如下:
1.将数据从文件加载到内存中
1.以您喜欢的方式修改结构
1.将修改后的结构存储到文件中
我希望这会有所帮助。

相关问题