木偶有点像个怪物,可以带头走,所以通过榜样学习并不是坏事。在下面,我假设您正在使用模块-如果您不使用模块,或者是否需要有关如何将模块组装在一起的更多详细信息,请在评论中说。
假设您启动了一个名为的新模块mymodule
。在puppet主目录的puppet主目录(通常为/etc/puppet
)中,您应该创建模块清单和文件目录:
mkdir -p modules/mymodule/manifests
mkdir -p modules/mymodule/files
然后在该目录中创建一个名为的文件,init.pp
然后输入:
class myfile {
file { '/home/operator1/Desktop/Backup':
ensure => directory,
mode => '0755',
owner => 'operator1',
group => 'operator1',
}
file { "/home/operator1/Desktop/Backup/datas.xls":
mode => "0644",
owner => 'operator1',
group => 'operator1',
source => 'puppet:///modules/module_name/datas.xls',
}
}
然后将datas.xls
文件放入模块的files
目录-在此示例中modules/mymodule/files/
。(请注意,也可以有一个templates
用于模板的目录)。
在manifests/site.pp
文件中,您需要导入模块并通过执行以下操作来包含类:
import 'mymodule'
node base {
include myfile
}
node server1 inherits base {}
node server2 inherits base {
# extra config here
}
确保所有节点都从base继承,这应该是您需要做的所有事情。从puppet 0.25开始,您可以在节点名称中使用正则表达式,例如:
node server[0-9] inherits base {}
如果您需要进一步说明,请在评论中让我知道。
设置客户与人偶主对话
在客户端上,您需要执行以下操作:
sudo apt-get install puppet
然后编辑/etc/default/puppet
并更改START=no
为START=yes
。
还要/etc/puppet/puppet.conf
在该[main]
部分中编辑并添加一行以告诉它在哪里可以找到人偶母版:
server=puppet.mydomain.com
然后,我们可以使用进行测试sudo puppetd --test
。如果您遇到密钥错误,则可能需要继续操作人偶主服务器并签署客户端密钥。要检查你可以做确切的名字sudo puppetca --list
,然后sudo puppetca --sign server1.mydomain.com
(或任何服务器名称是从列表命令)。
现在开始使用Puppet Service,sudo service puppet start
您应该离开了。人偶服务将每小时运行一次,因此,如果您更新人偶配方,那么所有客户也将被更新。
删除文件
我在原始问题中注意到您想知道如何删除文件。您可以将修改manifests/init.pp
为
file { "/home/operator1/Desktop/Backup/datas.xls":
ensure => absent,
}
其他有用的提示
如果您遇到麻烦,可以做一些事情。在安装了木偶的任何计算机上,您可以通过运行以下命令检查语法
puppet --parseonly --ignoreimport myfile.pp
或通过删除--ignoreimport
标志来检查全部内容,尽管这可能会导致一些有趣的错误消息,而这些错误消息并不是我发现的真正错误。您还可以通过执行以下操作在puppet客户端计算机上实时运行puppet:
sudo puppetd --test
其中显示了各种有用的输出,并以不同的颜色突出显示了错误和警告。如果您想要更多细节,可以运行:
sudo puppetd --test --debug
但这通常会产生太多的输出,以至于很难通过,因此只有在您已经尝试了前面的步骤并且受阻并需要查看所有工作完成后,才可以这样做。
请注意,这是基于puppet 0.25.x的,它是我目前在工作中使用的,也是Ubuntu 10.04中的版本。主要部分中的puppet代码肯定仍然可以使用,但是更高版本的puppet具有新的标志,可以帮助调试输出。