如何避免在我的 hiera 数据中出现 "write everything twice"?
How can I avoid "write everything twice" in my hiera data?
有没有更好的方法来格式化我的 hiera 数据?
我想避免 "write everything twice" 问题。
这是我现在拥有的:
[root@puppet-el7-001 ~]# cat example.yaml
---
controller_ips:
- 10.0.0.51
- 10.0.0.52
- 10.0.0.53
controller::horizon_cache_server_ip:
- 10.0.0.51:11211
- 10.0.0.52:11211
- 10.0.0.53:11211
我想知道 hiera 中是否有类似于 Perl 的 map 函数的可用功能。
如果是这样,那么我可以做类似的事情:
controller::horizon_cache_server_ip: "%{hiera_map( {"$_:11211"}, %{hiera('controller_ips')})}"
谢谢
这取决于您使用的是哪个 Puppet 版本。我傀儡3.x,你可以这样做:
common::test::var1: a
common::test::var2: b
common::test::variable:
- "%{hiera('common::test::var1')}"
- "%{hiera('common::test::var2')}"
common::test::variable2:
- "%{hiera('common::test::var1')}:1"
- "%{hiera('common::test::var2')}:2"
在 puppet 4.0 中,您可以尝试使用 zip, hash functions from stdlib, with built in function map 的组合。
类似于:
$array3 = zip($array1, $array2)
$my_hash = hash($array3)
$my_hash.map |$key,$val|{ "${key}:${val}" }
突变是个问题。由于 YAML 的引用功能,使用相同的数据更简单。
controller_ips: &CONTROLLERS
- 10.0.0.51
- 10.0.0.52
- 10.0.0.53
controller::horizon_cache_server_ip: *CONTROLLERS
您将需要更多逻辑以便端口可以独立存储。
controller::horizon_cache_server_port: 11211
清单的结构需要允许您将 IP 与端口结合起来。
有没有更好的方法来格式化我的 hiera 数据? 我想避免 "write everything twice" 问题。
这是我现在拥有的:
[root@puppet-el7-001 ~]# cat example.yaml
---
controller_ips:
- 10.0.0.51
- 10.0.0.52
- 10.0.0.53
controller::horizon_cache_server_ip:
- 10.0.0.51:11211
- 10.0.0.52:11211
- 10.0.0.53:11211
我想知道 hiera 中是否有类似于 Perl 的 map 函数的可用功能。 如果是这样,那么我可以做类似的事情:
controller::horizon_cache_server_ip: "%{hiera_map( {"$_:11211"}, %{hiera('controller_ips')})}"
谢谢
这取决于您使用的是哪个 Puppet 版本。我傀儡3.x,你可以这样做:
common::test::var1: a
common::test::var2: b
common::test::variable:
- "%{hiera('common::test::var1')}"
- "%{hiera('common::test::var2')}"
common::test::variable2:
- "%{hiera('common::test::var1')}:1"
- "%{hiera('common::test::var2')}:2"
在 puppet 4.0 中,您可以尝试使用 zip, hash functions from stdlib, with built in function map 的组合。 类似于:
$array3 = zip($array1, $array2)
$my_hash = hash($array3)
$my_hash.map |$key,$val|{ "${key}:${val}" }
突变是个问题。由于 YAML 的引用功能,使用相同的数据更简单。
controller_ips: &CONTROLLERS
- 10.0.0.51
- 10.0.0.52
- 10.0.0.53
controller::horizon_cache_server_ip: *CONTROLLERS
您将需要更多逻辑以便端口可以独立存储。
controller::horizon_cache_server_port: 11211
清单的结构需要允许您将 IP 与端口结合起来。