class 未发现异常 -puppet
class not found exception -puppet
我正在尝试将 bash 脚本从我的人偶大师复制并执行到我的人偶代理人。
我在 /etc/puppet/modules/
中创建了一个文件夹 mymodule
[root@ip********* mymodule]# ls -l
total 0
drwxr-xr-x. 2 root root 30 Aug 26 15:58 files
drwxr-xr-x. 2 root root 20 Aug 26 16:57 manifests
[root@ip-*********** manifests]# ls -l
total 4
-rw-r--r--. 1 root root 372 Aug 26 16:57 init.pp
[root@ip-************* files]# ls -l
total 4
-rw-r--r--. 1 root root 151 Aug 26 15:13 my_bash_script.sh
[root@ip-********** files]# cat my_bash_script.sh
#!/bin/sh
mv /usr/bin/node /usr/bin/bnode
ln -s /usr/local/bin/node /usr/bin/node
mv /usr/bin/npm /usr/bin/bnpm
ln -s /usr/local/bin/npm /usr/bin/npm
[root@ip-********* manifests]# cat init.pp
class mymodule::mymodule{
file {'/home/ec2-user/my_bash_script.sh':
source => 'puppet:///modules/mymodule/files/my_bash_scrip.sh',
mode => '755',
}
exec {'/home/ec2-user/my_bash_script.sh':
refreshonly => 'true',
require => File["/home/ec2-user/my_bash_script.sh"],
subscribe => File["/home/ec2-user/my_bash_script.sh"],
}
}
在我的 /etc/puppet/manifest/site.pp 中,我调用了在模块中创建的 class。
[root@ip-*********** manifests]# cat site.pp
import 'mymodule'
node 'node1' {
include "mymodule"
}
当我 运行 来自代理 'puppet agent -t'
我收到以下错误:
[root@ip-************8 /]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class mymodule for ip-**********8 on node ip-**********8
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
您的 class 的初始清单 (init.pp
) 应该被定义为 class 名称,如下所示:
class mymodule {
而不是这个:
class mymodule::mymodule {
所以您包含:
include "mymodule"
匹配 class 名称。
此外,您的文件资源存在语法错误和拼写错误。它应该看起来像:
file {'/home/ec2-user/my_bash_script.sh':
source => 'puppet:///modules/mymodule/my_bash_script.sh',
mode => '755',
}
在此处查看我对您之前问题的回答: 了解有关 source
属性和 Puppet URI 的更多信息。
我正在尝试将 bash 脚本从我的人偶大师复制并执行到我的人偶代理人。
我在 /etc/puppet/modules/
中创建了一个文件夹 mymodule[root@ip********* mymodule]# ls -l
total 0
drwxr-xr-x. 2 root root 30 Aug 26 15:58 files
drwxr-xr-x. 2 root root 20 Aug 26 16:57 manifests
[root@ip-*********** manifests]# ls -l
total 4
-rw-r--r--. 1 root root 372 Aug 26 16:57 init.pp
[root@ip-************* files]# ls -l
total 4
-rw-r--r--. 1 root root 151 Aug 26 15:13 my_bash_script.sh
[root@ip-********** files]# cat my_bash_script.sh
#!/bin/sh
mv /usr/bin/node /usr/bin/bnode
ln -s /usr/local/bin/node /usr/bin/node
mv /usr/bin/npm /usr/bin/bnpm
ln -s /usr/local/bin/npm /usr/bin/npm
[root@ip-********* manifests]# cat init.pp
class mymodule::mymodule{
file {'/home/ec2-user/my_bash_script.sh':
source => 'puppet:///modules/mymodule/files/my_bash_scrip.sh',
mode => '755',
}
exec {'/home/ec2-user/my_bash_script.sh':
refreshonly => 'true',
require => File["/home/ec2-user/my_bash_script.sh"],
subscribe => File["/home/ec2-user/my_bash_script.sh"],
}
}
在我的 /etc/puppet/manifest/site.pp 中,我调用了在模块中创建的 class。
[root@ip-*********** manifests]# cat site.pp
import 'mymodule'
node 'node1' {
include "mymodule"
}
当我 运行 来自代理 'puppet agent -t'
我收到以下错误:
[root@ip-************8 /]# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class mymodule for ip-**********8 on node ip-**********8
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run
您的 class 的初始清单 (init.pp
) 应该被定义为 class 名称,如下所示:
class mymodule {
而不是这个:
class mymodule::mymodule {
所以您包含:
include "mymodule"
匹配 class 名称。
此外,您的文件资源存在语法错误和拼写错误。它应该看起来像:
file {'/home/ec2-user/my_bash_script.sh':
source => 'puppet:///modules/mymodule/my_bash_script.sh',
mode => '755',
}
在此处查看我对您之前问题的回答:source
属性和 Puppet URI 的更多信息。