标签: hiera

合并不起作用

我正在尝试实现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 ...什么是我做错了?

问候

puppet hiera

3
推荐指数
1
解决办法
1588
查看次数

Puppet - 为 Hiera 转义 YAML 变量

我有一个非常简单的要求,但我已经尝试了我能想到的所有转义序列,但无法获得所需的输出。

我需要几乎输出到一个文件中:

%{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)

escaping puppet hiera

3
推荐指数
1
解决办法
3946
查看次数

从哈希Puppet中删除值

我在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)

但它不起作用.感谢任何帮助

hash puppet hiera

3
推荐指数
1
解决办法
2661
查看次数

Puppet:在模板中迭代hiera_hash

我在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的值.我怎样才能获得这个价值?

ruby hash erb puppet hiera

2
推荐指数
1
解决办法
2806
查看次数

使用 PyYaml 解析可能无效的 YAML

我想用 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 本身,所以我需要一个解决方案来解析它是如何的。

python yaml puppet pyyaml hiera

2
推荐指数
1
解决办法
541
查看次数

标签 统计

hiera ×5

puppet ×5

hash ×2

erb ×1

escaping ×1

python ×1

pyyaml ×1

ruby ×1

yaml ×1