如何使用p将文件复制到所有客户端?我已经设置了一个server服务器和客户端,并且已经测试了连接正常。我不是木偶专家,我只是初学者,我只想知道如何将文件从木偶服务器复制到所有客户端?我也想知道如何删除文件?
如何使用p将文件复制到所有客户端?我已经设置了一个server服务器和客户端,并且已经测试了连接正常。我不是木偶专家,我只是初学者,我只想知道如何将文件从木偶服务器复制到所有客户端?我也想知道如何删除文件?
Answers:
木偶文件服务器
人偶主服务包括用于传输静态文件的文件服务器。如果文件资源声明的source属性中包含puppet:URI,则节点将从主服务器的文件服务器中检索该文件:
#复制一个远程文件到/ etc / sudoers 文件{“ / etc / sudoers”: 模式=> 440, 所有者=>根, 组=>根, 来源=>“人偶:/// modules / module_name / sudoers” }
所有p文件服务器URI的结构如下:
puppet://{server hostname (optional)}/{mount point}/{remainder of path}
如果省略服务器主机名(即puppet:///{mount point}/{path}
注意三斜杠),则URI将解析到评估节点认为是其主服务器的任何服务器。由于这使清单代码更可移植和可重用,因此应尽可能省略主机名。
其余部分:URI以两种方式之一映射到服务器的文件系统,具体取决于文件是由a提供module
还是通过a公开custom mount point
。
服务模块文件
由于绝大多数文件服务都应通过模块完成,因此Puppet文件服务器提供了一个称为模块的特殊半魔术挂载点,默认情况下可用。如果URI的安装点是modules,Puppet将:
也就是说,如果在中央服务器的/etc/puppet/modules
目录中安装了名为test_module的模块,则会出现以下伪信息:URI ...
puppet:///modules/test_module/testfile.txt
...将解析为以下绝对路径:
/etc/puppet/modules/test_module/files/testfile.txt
如果test_module
安装在中/usr/share/puppet/modules
,则相同的URI将改为解析为:
/usr/share/puppet/modules/test_module/files/testfile.txt
尽管使用模块安装点不需要其他配置,但是可以通过添加[modules]
配置块在文件服务器配置中指定某些访问控制;例如,请参阅安全性。
从自定义挂载点提供文件
Puppet还可以从服务器的文件服务器配置中指定的任意装入点提供文件(请参见下文)。从自定义安装点提供文件时,Puppet不会执行模块安装中使用的其他URI抽象,而是将安装名称后的路径解析为简单的目录结构。
文件服务器配置
文件服务器的配置数据的默认位置是/etc/puppet/fileserver.conf
;。可以通过将--fsconfig
标志传递给人偶主来更改此设置。
该fileserver.conf
文件的格式几乎与的格式完全相同rsync
,并且大致类似于INI文件:
[mount_point]
path /path/to/files
allow *.domain.com
deny *.wireless.domain.com
当前可以为给定的安装点指定以下选项:
path是唯一必需的选项,但是由于默认的安全配置是拒绝所有访问,因此没有允许指令的安装点将对任何节点都不可用。
路径可以包含,和中的任何一个或全部%h
,分别由客户端的主机名,其完全限定的域名和其域名动态替换。全部取自客户端的SSL证书(因此,如果主机名/证书名不匹配,请当心)。这在创建模块时非常有用,在该模块中,每个客户端的文件都完全分开保存,例如私有ssh主机密钥。例如,使用配置%H
%d
[private]
path /data/private/%h
allow *
/private/file.txt
来自客户端client1.example.com的文件请求将查找文件/data/private/client1/file.txt
,而来自客户端的相同请求client2.example.com
将尝试在文件服务器上检索文件/data/private/client2/file.txt。
当前路径中不能包含斜杠,否则将导致错误。还请注意,puppet.conf
不要指定带有斜杠的目录位置。
安全
保护Puppet文件服务器包括对每个安装点的允许和拒绝访问(以不同的特异性级别)。可以通过三种方式将节点组标识为允许或拒绝:通过IP地址,名称或单个全局通配符(*)。自定义安装点默认为拒绝所有访问。
除了自定义挂载点外,还有两个特殊的挂载点可以使用fileserver.conf
:modules
和进行管理plugins
。这些安装点均未指定路径选项。上面的“从自定义安装点提供文件”中介绍了模块安装点的行为。插件安装不是真正的安装点,而是一个钩子,用于允许fileserver.conf指定允许哪些节点同步来自Puppet Master的插件。这两个挂载点默认情况下都存在,并且都默认允许所有访问。如果为这些特殊安装之一设置了任何allow或deny指令,则其安全设置的行为将与普通安装相同(即默认拒绝所有访问)。请注意,这些是拒绝*并非多余的唯一安装点。
如果节点未直接连接到Puppet文件服务器,例如使用反向代理和Mongrel(请参阅使用Mongrel),则文件服务器将看到所有连接均来自代理服务器的IP地址,而不是Puppet Agent节点的IP地址。 。在这种情况下,最好根据主机名限制访问。此外,将需要允许充当反向代理的机器(通常为127.0.0.0/8)访问适用的安装点。
优先
更具体的拒绝和允许语句优先于较不具体的语句;也就是说,尽管对* .domain.com的拒绝声明,对node.domain.com的allow声明仍允许其连接。在给定的特定级别上,拒绝语句优先于允许语句。
IP地址伪指令与主机名和域名伪指令混合使用会导致无法预料的行为,因此请避免这样做。(当前,如果node.domain.com的IP地址为192.168.1.80,而fileserver.conf包含allow 192.168.1.80并拒绝node.domain.com,则基于IP的allow指令实际上将具有优先权。此行为可能会在未来,不应依赖。)
主机名
主机名可以使用完整的主机名或使用*通配符指定整个域来指定:
[export]
path /export
allow host.domain1.com
allow *.domain2.com
deny badhost.domain2.com
IP地址
可以使用完整的IP地址或通配符地址来类似于主机名来指定IP地址。您还可以使用CIDR样式表示法:
[export]
path /export
allow 127.0.0.1
allow 192.168.0.*
allow 192.168.1.0/24
全局允许
指定单个通配符将允许任何节点访问安装点:
[export]
path /export
allow *
请注意,自定义安装点的默认行为等效于拒绝*。