我正在尝试实现hiera合并.希尔是我的hiera.yaml
---
:hierarchy:
- fqdn/%{fqdn}
- roles/%{role}
- os/%{osfamily}
- common
:backends:
- yaml
# options are native, deep, deeper
:merge_behavior: deeper
:yaml:
:datadir: /etc/puppet/environments/%{environment}/data
Run Code Online (Sandbox Code Playgroud)
然后我有:common.yaml
---
classes:
- a
- b
Run Code Online (Sandbox Code Playgroud)
和fqdn/some.host.yaml
---
classes:
- c
- d
Run Code Online (Sandbox Code Playgroud)
赛跑
hiera --debug -c /etc/puppet/hiera.yaml classes fqdn=some.host environment=development
["c", "d"]
Run Code Online (Sandbox Code Playgroud)
和
hiera --debug -c /etc/puppet/hiera.yaml classes fqdn=blablahost environment=development
["a", "b"]
Run Code Online (Sandbox Code Playgroud)
所以"blablahost"采取common.yaml并应用"a"和"b"类..但是fqdn = some.host应该应用a,b,c,d ..而不仅仅是c,d ...什么是我做错了?
问候
我有一个非常简单的要求,但我已经尝试了我能想到的所有转义序列,但无法获得所需的输出。
我需要几乎输出到一个文件中:
%{VAR}
Run Code Online (Sandbox Code Playgroud)
这是我的 YAML 文件:
myclass::outputstuff:
- Heres a litteral var %{VAR}
- Heres something else %{SOMETHING}
Run Code Online (Sandbox Code Playgroud)
还有我的 template.erb:
<%= @outputstuff.each do | ostuff | -%>
<%= ostuff -%>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
但它像这样,它输出:
Heres a litteral var
Heres something else
Run Code Online (Sandbox Code Playgroud)
如果我像%%{VAR}
其他帖子所建议的那样添加一个百分号,它会输出:
Heres a litteral var %
Heres something else %
Run Code Online (Sandbox Code Playgroud)
如果我添加一个像%\{VAR}
它输出的反斜杠:
Heres a litteral var %\{VAR}
Heres something else %\{SOMETHING}
Run Code Online (Sandbox Code Playgroud)
我需要这个哈哈:
Heres a litteral var %{VAR}
Heres something else %{SOMETHING}
Run Code Online (Sandbox Code Playgroud) 我在hiera中有以下参数:
base::users:
john@example.com:
ensure: present
user: john
sudo: true
type: ssh-rsa
key: AAAAB3NzaC1yc2EAAAABJ
Run Code Online (Sandbox Code Playgroud)
在木偶我得到以下哈希:
{john@example.com => {ensure => present, user => john, sudo => true, type => ssh-rsa, key => AAAAB3NzaC1yc2EAAAABJ}}
Run Code Online (Sandbox Code Playgroud)
然后我调用创建资源来创建适当的authorized_keys文件:
create_resources('ssh_authorized_key', $users)
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为我添加了新参数'sudo',在调用create_resources之前,我想从散列中删除此键并在另一个资源中操作.
我已经尝试了下一步删除它:
$users_filtered = $users.each |$k, $v| { $v.delete['sudo'] }
Run Code Online (Sandbox Code Playgroud)
我收到了下一个错误:
Error while evaluating a Function Call, delete(): Wrong number of arguments given 1 for 2.
Run Code Online (Sandbox Code Playgroud)
据我所知,puppet尝试使用stdlib模块中的"删除"功能.但我也尝试过:
$users_filtered = $users.each |$k, $v| { delete($users, $v['sudo'] }
Run Code Online (Sandbox Code Playgroud)
但它不起作用.感谢任何帮助
我在yaml hiera文件中有这个.
reg_connection:
toronto:
- host: apple.net
- port: 701
- user: george
- ssl: true
- allowed: banana,orange
texas:
- host: pink.net
- port: 702
- user: joel
- ssl: false
- allowed: blue,gree,red
Run Code Online (Sandbox Code Playgroud)
我想访问主机,端口,用户,ssl的值,并允许多伦多和德州.
我的清单中有这个:
$reg_connection= hiera_hash('reg_connection')
Run Code Online (Sandbox Code Playgroud)
我在我的模板中有这个:
<% reg_connection.keys().sort.each do |location| -%>
<%= location %>host=<%= location[host] %>
<%= location %>port=<%= location[port] %>
<%= location %>username=<%= location[user] %>
<%= location %>ssl.enable=<%= location[ssl] %>
<%= location %>allowed.list=<%= location[allowed] %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
我想在我的模板中输出两个配置块:一个用于多伦多,一个用于德州.
我的puppet输出显示它没有host的值.我怎样才能获得这个价值?
我想用 pyyaml 解析与 puppet 相关的 yaml 配置。不幸的是,由于这部分,pyyaml 似乎无法解析某些 YAML 文件:
base::files:
/var/log/fpm:
ensure: 'directory'
mode: '777'
/etc/nginx/ssl/cert:
ensure: 'directory'
/apps:
ensure: 'directory'
owner: user
group: user
['/apps/ecert-public', '/apps/ecert-public/config', '/apps/ecert-public/releases']:
ensure: 'directory'
owner: 'user'
group: 'user'
['/apps/site-public', '/apps/site-public/config', '/apps/site-public/releases']:
ensure: 'directory'
owner: 'user'
group: 'user'
Run Code Online (Sandbox Code Playgroud)
问题是具有多个值的映射(在方括号内)。尝试使用 pyyaml 解析此部分时收到以下错误消息:
在“/hieradata/node/wc-de.yaml”第 133 行第 3 列中构建映射时,在“/hieradata/node/wc-de.yaml”第 212 行第 3 列中发现不可哈希键
一些 YAML 验证器说这是有效的 YAML(例如:http : //www.yamllint.com/),但我尝试过的大多数验证器在解析这部分时也有问题。有谁知道我如何用 pyyaml 解决这个问题?不幸的是我不能改变 YAML 本身,所以我需要一个解决方案来解析它是如何的。