📅  最后修改于: 2020-10-31 14:06:17             🧑  作者: Mango
Puppet遵循客户端和服务器的概念,其中设置中的一台计算机充当运行Puppet服务器软件的服务器,其余的充当运行Puppet代理软件的客户端。文件服务器的此功能有助于在多台计算机之间复制文件。 Puppet中文件服务函数的此功能是中央Puppet守护程序的一部分。 Puppetmasterd和客户端函数在采购文件属性作为文件对象方面起着关键作用。
class { 'java':
package => 'jdk-8u25-linux-x64',
java_alternative => 'jdk1.8.0_25',
java_alternative_path => '/usr/java/jdk1.8.0_25/jre/bin/java'
}
就像上面的代码片段一样,Puppet的文件服务功能通过支持文件服务模块来抽象本地文件系统拓扑。我们将通过以下方式指定文件服务模块。
“puppet://server/modules/module_name/sudoers”
在Puppet目录结构中,默认情况下,文件服务器配置位于/etc/puppet/fileserver.config目录下,如果用户希望更改此默认配置文件路径,则可以使用新的config标志设置为puppetmasterd来完成。配置文件类似于INI文件,但不完全相同。
[module]
path /path/to/files
allow *.domain.com
deny *.wireless.domain.com
如上面的代码片段所示,这三个选项都在配置文件中表示。模块名称放在方括号中。路径是唯一必需的选项。默认安全选项是拒绝所有访问,因此,如果未指定允许行,则将对任何人都将使用将要配置的模块。
路径可以包含%d,%h和%H中的任何一个或全部,它们会动态替换为其域名,其主机名和标准主机名。全部取自客户端的SSL证书(因此,如果主机名和证书名不匹配,请当心)。这对于创建模块是很有用的,其中每个客户端的文件完全分开保存。例如,用于私人主机密钥。
[private]
path /data/private/%h
allow *
在以上代码片段中,该代码正尝试从客户端client1.vipin.com搜索文件/private/file.txt。它将在/data/private/client1/file.txt中查找它,而对client2.vipin.com的相同请求将尝试在文件服务器上检索文件/data/private/client2/file.txt。
Puppet支持在Puppet文件服务器上保护文件的两个基本概念。这是通过允许访问特定文件并拒绝访问不需要的文件来实现的。默认情况下,Puppet不允许访问任何文件。需要明确定义。在文件中可以使用允许或拒绝访问的格式是通过使用IP地址,名称或全局允许。
如果客户端未直接连接到Puppet文件服务器,例如使用反向代理和Mongrel,则文件服务器将看到所有连接均来自代理服务器而不是Puppet客户端。在上述情况下,最佳做法是基于主机名限制主机名。
定义文件结构时要注意的一个关键点是,所有deny语句都在allow语句之前进行解析。因此,如果任何deny语句与主机匹配,则该主机将被拒绝,如果在即将到来的文件中未写入allow语句,则该主机将被拒绝。此功能有助于设置任何特定站点的优先级。
在任何文件服务器配置中,都可以通过两种方式指定文件的主机名:使用完整的主机名,或使用*通配符指定整个域名,如以下示例所示。
[export]
path /usr
allow brcleprod001.brcl.com
allow *.brcl.com
deny brcleprod002.brcl.com
在任何文件服务器配置中,都可以使用完整的IP地址或通配符地址将文件地址指定为类似于主机名。也可以使用CIDR系统符号。
[export]
path /usr
allow 127.0.0.1
allow 172.223.30.*
allow 172.223.30.0/24
当用户希望每个人都可以访问特定模块时,将使用全局允许。为此,一个通配符有助于让每个人都访问该模块。
[export]
path /export
allow *