Puppet Bolt 多层库存 yamls

问题描述 投票:0回答:1

从 puppet bolt 及其 inventory.yaml 的文档,here,您似乎可以通过在 a

group
的定义中指定另一个
group
来定义 yaml 文件的多个级别。从而创建一个多级或嵌套的清单文件。

但是我找不到任何关于如何使用 cli 中的

bolt
命令调用嵌套清单文件的示例。

例如文档中的这个 yaml:

groups:
  - name: ssh_nodes
    groups:
      - name: webservers
        targets:
          - 192.168.100.179
          - 192.168.100.180
          - 192.168.100.181
      - name: memcached
        targets:
          - 192.168.101.50
          - 192.168.101.60
        config:
          ssh:
            user: root
    config:
      transport: ssh
      ssh:
        user: centos
        private-key: ~/.ssh/id_rsa
        host-key-check: false

如何从 ssh_nodes 组调用

webservers
组? 通常我用这样的东西来称呼顶级组,在这种情况下是
ssh_nodes
组。

bolt plan run "deploy::update_package" \
            --targets "ssh_nodes" \
            --user "${BOLT_USER}" \
            --private-key "${KEY}" \
            --modulepath "path/to/module" \
            --inventoryfile "${INVENTORY_FILE}" \
            package_name="${PACKAGE}" \
            package_version="${VERSION}"
puppet puppet-bolt
1个回答
0
投票

是的,支持嵌套组。无论嵌套如何,所有组都必须唯一命名。

例如,如果您的库存如下所示:

groups:
  - name: dc1
    groups:
      - name: webservers
        targets:
          - 192.168.100.179
          - 192.168.100.180
          - 192.168.100.181
  - name: dc2
    groups:
      - name: webservers
        targets:
          - 192.168.101.50
          - 192.168.101.60

然后你试图查看库存,你会得到错误:

试图为 ["webservers", "dc2", "all"] 处的组重新定义物理组

为了解决这个问题,我建议像这样为嵌套组添加前缀:

groups:
  - name: dc1
    groups:
      - name: dc1/webservers
        targets:
          - 192.168.100.179
          - 192.168.100.180
          - 192.168.100.181
  - name: dc2
    groups:
      - name: dc2/webservers
        targets:
          - 192.168.101.50
          - 192.168.101.60

然后你可以定位这些群体:

bolt inventory show -t dc2/webservers
© www.soinside.com 2019 - 2024. All rights reserved.