📅  最后修改于: 2021-01-08 04:59:34             🧑  作者: Mango
众所周知,Puppet使用客户端和服务器模型,其中一个系统充当称为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 Server使用文件服务器将静态文件的输出传输到代理。如果我们需要提供较大的文件(而不是模块提供的文件),则可以通过模块提供大多数文件,为此,您可以创建自定义文件服务器安装点,并让the从其他目录提供这些文件。
第1步:创建一个可以由puppet访问的目录,并将需要导出的文件复制到该目录。
步骤2:创建fileserver.conf并定义目录和可以访问该目录的主机。
$ touch /etc/puppetlabs/puppet/fileserver.conf
Fileserver.conf使用类似于INI文件的一次性文件格式,没有等号(=)。它是一系列的挂载点姿势,每个包括:
# cat /etc/puppetlabs/puppet/fileserver.conf
[scripts]
path /apps/puppetlabs/code/environments/production/scripts
allow *
[packages]
path /apps//puppetlabs/code/environments/production/packages
allow *
在上面的示例中,我们创建了两个位置,可以从中提供文件。第一个是脚本目录,第二个是位置软件包。可以在模块目录可用的相同位置创建两个目录。要检查模块的位置,我们可以使用以下参数:
# puppet config print modulepath
/etc/puppetlabs/code/environments/production/modules:
现在,让我们看一下清单,这些清单用于访问文件服务器提供的上述目录中的文件。
file { '/home/agile/apache.sh':
path => '/home/agile/apache.sh',
ensure => present,
mode => "755",
owner => agile,
source => "puppet:///scripts/apache.sh",
}
file { "/usr/local/httpd-2.2.22.tar.gz":
path => "/usr/local/httpd-2.2.22.tar.gz",
ensure => present,
owner => agile,
group => agile,
source => "puppet:///packages/httpd-2.2.22.tar.gz",
}