我正在运行 puppet 4,我想从同一个模板生成几个配置文件,每个配置文件都有不同的配置。
例如 :
# cat /tmp/a.conf
test1
# cat /tmp/b.conf
test2
而且我需要将所有这些信息放在 hiera 中,所以我认为是这样的:
test::clusters:
- 'a.conf'
text: 'test1'
- 'b.conf'
text: 'test2'
谢谢
我正在运行 puppet 4,我想从同一个模板生成几个配置文件,每个配置文件都有不同的配置。
例如 :
# cat /tmp/a.conf
test1
# cat /tmp/b.conf
test2
而且我需要将所有这些信息放在 hiera 中,所以我认为是这样的:
test::clusters:
- 'a.conf'
text: 'test1'
- 'b.conf'
text: 'test2'
谢谢
运行时出现以下错误puppet-lint
:
$ puppet-lint manifests/*
manifests/init.pp - WARNING: class inheriting from params class on line 72
我在duckduckgo.com上快速搜索了一下,得到了这个:
http://puppet-lint.com/checks/class_inherits_from_params_class/
但是,我们的 Puppet Agent 版本都是 2.7 或更高版本,我们的 Puppet Master 都是 3.0 或更高版本。
作为参考,有init.pp
问题的代码如下:
class myclass (
$zone = 'top',
$::myclass::params::base_url,
$::myclass::params::username,
) inherits myclass::params {
...
中的代码params.pp
如下:
class myclass::params {
$base_url = hiera('myclass::base_url','https://beta.tpsreports.com/coversheets/')
$username = hiera('clap::base_url','prod')
}
即使 Hiera 查找失败,我仍然不应该收到这样的错误:
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Must pass ::myclass::params::base_url to Class[Myclass] at /etc/puppet/manifests/nodes/beta_servers_0.pp:126 on node beta-web-server-0.tpsreports.com
既然我已经讨论了一些背景,我非常愿意添加,如果有人问,我的问题如下:
params
即使 hiera 查找以某种方式失败,我的类也会提供参数,为什么我会收到此错误?2.6.2
所有情况?我在使用 puppet 和 systemctl 时遇到了一些问题。我曾经为“服务”加载几个参数,但它不再在 centos7 上工作。
这是我的错误:
Error: Could not enable [ntpd ntpdate]:
Error: /Stage[main]/Ntp::Service/Service[[ntpd ntpdate]]/enable: change from false to true failed: Could not enable [ntpd ntpdate]:
这是我的代码:
希拉:
ntp::service::ntp_services:
- "ntpd"
- "ntpdate"
服务.pp:
class ntp::service ($ntp_services) {
service {"$ntp_services":
hasrestart => false,
hasstatus => true,
ensure => running,
enable => true,
}
}
它在 centos 6 上运行良好,并且曾经在 centos 7 上运行。
如果我这样定义参数,它会起作用:
ntp::service::ntp_services: "ntpd"
但我必须为 1 个服务定义 1 个参数...
谢谢
我目前正在尝试移动我们的 Puppet 设置以进一步使用 Hiera。关于这一点,我想用 Hiera 创建用户,但是在层次结构中向上移动时遇到了一些问题。
场景是我希望在每个安装中都包含一组基本用户。此外,有时我需要为不同的节点子集添加一些特定用户,可能特定于某些数据中心或某些节点。
所以我想到了以下设置:
hiera.yaml:
:hierarchy:
- "nodes/%{::trusted.certname}"
- "datacenter/${::datacenter}"
- "common"
用户.pp:
class profile::users {
$user_accounts = hiera('user_accounts')
create_resources(user, $user_accounts)
}
在 common.yaml 中:
user_accounts:
bob:
comment: "Bob"
managehome: true
然后再往上走。我看到的主要问题是:
managehome: true
为所有用户设置,而不是每次都显式地写。不过,我有时可能想禁用它。user_accounts
在层次结构中更进一步,它将覆盖user_accounts
来自 common.yaml 的哈希,因此我需要复制条目。我偶然发现了 Hiera 中的深度合并,但想知道这是否实际使用过或者是最佳实践。另外,它不能解决第一个问题,我需要merge_behavior
在 hiera.yaml 中设置,我想避免。那么,有没有人了解用户管理实际上是如何用 Puppet 很好地完成的?谢谢 :)