Puppet 文件服务器
Puppet File Server
正如我们所知,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 使用文件服务器将静态文件的输出传输到代理。如果我们需要提供不应与模块一起提供的较大文件,则大多数文件都可以通过模块提供,为此您可以创建自定义文件服务器挂载点,并让 puppet 从另一个目录提供这些文件。
第一步: 创建puppet可以访问的目录,将需要导出的文件复制到这个目录。
第一步: 创建fileserver.conf,定义可以访问的目录和主机这个目录。
$ touch /etc/puppetlabs/puppet/fileserver.conf
定义文件服务器
Fileserver.conf 使用一次性文件格式,类似于没有等号(=) 号的 INI 文件。它是一系列挂载点姿势,每个姿势包括:
用方括号括起来的 [mount_point_name]。这是此挂载点中文件的 puppet:///URL 中使用的名称。
路径指令,磁盘上有绝对路径,或者挂载点文件的存储位置。
允许 * 指令。
示例:
# 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",
}