我是傀儡的新手,并希望避免我看到的一些常见问题,并且因为它们被弃用而远离使用import语句。我开始的非常简单的任务是创建一个将文件复制到单个木偶代理的类。
所以我在主人身上有这个:
/etc/puppet/environments/production
/etc/puppet/environments/production/modules
/etc/puppet/environments/production/mainfests
/etc/puppet/environments/production/files
我正在尝试在manifeststs目录中名为nodes.pp的文件中创建节点定义,并在名为test的模块中使用我已定义的类(类为test_monitor):
node /^web\d+.*.net/ {
include test_monitor
}
然而,当我在代理上运行puppet agent -t时,我得到了:
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class test_monitor for server on node server
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
配置此功能的正确方法是什么。我想在一个或多个文件中有节点定义,这些文件可以访问我在自定义模块中构建的类。
这是我的puppet.conf:
[main]
environmentpath = $confdir/environments
default_manifest = $confdir/environments/production/manifests
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
factpath=$vardir/lib/facter
[master]
ssl_client_header = SSL_CLIENT_S_DN
ssl_client_verify_header = SSL_CLIENT_VERIFY
我知道这可能是一些愚蠢的事情,我没有做得正确或配置错误但我似乎无法让它发挥作用。任何帮助表示赞赏!!为了清楚起见,我只是想保持干净,并在具有特定节点类型的单独文件中将类放在他们自己的文件中。我有一个中小型的环境。 (数据中心约150台服务器)
答案 0 :(得分:1)
让我猜一下,也许test
模块的结构错误。您需要文件夹modules
└── test
├── files
├── manifests
│ ├── init.pp
│ └── monitor.pp
└── tests
└── init.pp
我建议从test_monitor更改为 test :: monitor ,这对我来说很合理,如果你需要使用test_monitor,你需要一个test_monitor模块或test_monitor.pp文件。
node /^web\d+.*.net/ {
include test::monitor
}
然后将监视任务放在monitor.pp
文件
答案 1 :(得分:0)
这就像向puppet.conf添加适当的模块路径一样简单
basemodulepath = $confdir/environments/production/modules