📅  最后修改于: 2020-10-31 16:49:15             🧑  作者: Mango
Puppet类型用于单个配置管理。人偶具有不同的类型,例如服务类型,程序包类型,提供程序类型等。其中每种类型都有提供程序。提供程序在不同的平台或工具上处理配置。例如,程序包类型具有aptitude,yum,rpm和DGM提供程序。类型很多,Puppet涵盖了需要管理的良好频谱配置管理项目。
Puppet使用Ruby作为其基本语言。存在的所有Puppet类型和提供程序都以Ruby语言编写。由于遵循标准编码格式,因此可以按照管理仓库的repo示例中的说明简单地创建它们。在这里,我们将创建类型repo以及提供程序的svn和git。回购类型的第一部分是类型本身。类型通常存储在lib / puppet / type中。为此,我们将创建一个名为repo.rb的文件。
$ touch repo.rb
在文件中添加以下内容。
Puppet::Type.newtype(:repo) do
@doc = "Manage repos"
Ensurable
newparam(:source) do
desc "The repo source"
validate do |value|
if value =~ /^git/
resource[:provider] = :git
else
resource[:provider] = :svn
end
end
isnamevar
end
newparam(:path) do
desc "Destination path"
validate do |value|
unless value =~ /^\/[a-z0-9]+/
raise ArgumentError , "%s is not a valid file path" % value
end
end
end
end
在上面的脚本中,我们创建了一个块“ Puppet :: Type.newtype(:repo)do “,该块创建了一个名为repo的新类型。然后,我们有@doc,它可以帮助您添加想要添加的任何细节级别。下一个陈述是可保证的;它创建了一个基本的保证属性。人偶类型使用sure属性确定配置项的状态。
service { "sshd":
ensure => present,
}
sure语句告诉Puppet除了以下三种方法:创建,销毁和存在于提供程序中。这些方法提供以下功能-
然后,我们需要做的就是指定这些方法及其内容。木偶围绕它们创建了支持基础架构。
接下来,我们定义一个名为source的新参数。
newparam(:source) do
desc "The repo source"
validate do |value|
if value =~ /^git/
resource[:provider] = :git
else
resource[:provider] = :svn
end
end
isnamevar
end
源将告诉回购类型在哪里检索/克隆/签出源存储库。在此,我们还使用了一个称为validate的钩子。在提供者部分,我们定义了git和svn,它们检查我们定义的存储库的有效性。
最后,在代码中我们定义了另一个称为path的参数。
newparam(:path) do
desc "Destination path"
validate do |value|
unless value =~ /^\/[a-z0-9]+/
raise ArgumentError , "%s is not a valid file path" % value
end
这是一种值类型,它指定将获取的新代码放在何处。在这里,再次使用validate钩子来创建一个检查适当性值的块。
让我们从使用上面创建的类型的Subversion提供程序开始。
require 'fileutils'
Puppet::Type.type(:repo).provide(:svn) do
desc "SVN Support"
commands :svncmd => "svn"
commands :svnadmin => "svnadmin"
def create
svncmd "checkout", resource[:name], resource[:path]
end
def destroy
FileUtils.rm_rf resource[:path]
end
def exists?
File.directory? resource[:path]
end
end
在上面的代码中,我们预先定义了需要使用的fileutils库,需要使用的“ fileutils” 。
接下来,我们将提供者定义为块Puppet :: Type.type(:repo).provide(:svn)do,这告诉Puppet这是称为repo的类型的提供者。
然后,我们添加了desc ,它允许向提供程序添加一些文档。我们还定义了此提供程序将使用的命令。在下一行中,我们正在检查资源的功能,例如创建,删除和存在。
完成上述所有操作后,我们将创建一个资源,该资源将在我们的类和清单文件中使用,如以下代码所示。
repo { "wp":
source => "http://g01063908.git.brcl.org/trunk/",
path => "/var/www/wp",
ensure => present,
}