我尝试在收到新服务器时自动执行一些任务。第一件事是添加一些 yum 存储库。
我的/etc/puppet/modules/repo/manifests/init.pp
:
1 class repo {
2 file { "/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL":
3 owner => root,
4 group => root,
5 mode => 0644,
6 source => "puppet:///repo/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL"
7 }
8
9 yumrepo {
10 "epel":
11 descr => 'the epel repo',
12 mirrorlist => 'http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch',
13 enable => 1,
14 gpgcheck => 1,
15 gpgkey => "file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL",
16 require => File["/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL"]
17 }
18 }
用 检查 时语法正常puppet parser validate
。
但是在连接 Puppet 代理时出现以下错误:
# puppet agent --no-daemonize --verbose
notice: Starting Puppet client version 2.7.1
err: Could not retrieve catalog from remote server: Error 400 on SERVER: Invalid parameter enable at /etc/puppet/modules/repo/manifests/init.pp:17 on node svr051-4170
notice: Using cached catalog
err: Could not retrieve catalog; skipping run
notice: Caught INT; calling stop
如您所见,第 17 行是右花括号。我真的不明白问题出在哪里。任何帮助都将不胜感激。
答案1
“启用”实际上不是有效的参数yumrepo 资源。它被称为“enable_d_”。
它卡在花括号里的原因是它是该部分的结尾。我不知道 Puppet 如何解析文件的具体细节,但我的猜测是 Puppet 在解析过程中抓取了所有参数并将它们一起处理,因此直到解析器离开该部分时它才知道有问题。
答案2
快速猜测是它与镜像列表行中的 $ 或 & 有关,尝试在它们前面添加 \ 并看看会发生什么