Puppet:类排序/包含-总是错误的顺序
我读了很多关于使用容器(iam使用puppet 6)排序puppet类的文章。但有一种情况对我来说仍然不起作用。也许我的英语不够好,我错过了一些东西。也许有人知道我做错了什么 我有一个安装puppetserver的配置文件(Puppet:类排序/包含-总是错误的顺序,puppet,Puppet,我读了很多关于使用容器(iam使用puppet 6)排序puppet类的文章。但有一种情况对我来说仍然不起作用。也许我的英语不够好,我错过了一些东西。也许有人知道我做错了什么 我有一个安装puppetserver的配置文件(profile::puppetserver)。这个概要文件有三个子类,我在profile::puppetserver 类配置文件::puppetserver( ) { 包含配置文件::puppetserver::安装 包含配置文件::puppetserver::配置 包含配置
profile::puppetserver
)。这个概要文件有三个子类,我在profile::puppetserver
类配置文件::puppetserver(
) {
包含配置文件::puppetserver::安装
包含配置文件::puppetserver::配置
包含配置文件::puppetserver::防火墙
}
这对我来说很好。现在我想扩展此配置文件并安装PuppetDB
。为此,我从以下位置使用puppetdb
模块:
因此,我要做的是添加profile::puppetserver::puppetdb
和包含到profile::puppetserver
class profile::puppetserver::puppetdb(
) {
#配置puppetdb及其底层数据库
类{'puppetdb':}
#将Puppet主机配置为使用puppetdb
类{'puppetdb::master::config':}
}
puppetserver
并在其后面添加profile::puppetserver::puppetdb
时,puppetdb
安装完毕,一切正常contain
添加它,并一次设置所有内容,它就会崩溃。这是因为puppetdb
模块是在我的主服务器安装期间随机安装的(还有postgresql
服务器等等)。结果是mypuppetserver
没有运行,mypuppetdb
没有生成本地ssl
证书,服务也没有启动profile::puppetserver::puppetdb
中安装了puppetdb
包,并使用所需的标志。当我一次提供所有资源时,它就起作用了
class profile::puppetserver::puppetdb(
) {
包{'puppetdb':
确保=>已安装,
require=>Class['profile::puppetserver::config']
}
}
所以我想我可以在上面的代码中做同样的事情:
class profile::puppetserver::puppetdb(
) {
#配置puppetdb及其底层数据库
类{'puppetdb':
require=>Class['profile::puppetserver::config']
}
#将Puppet主机配置为使用puppetdb
类{'puppetdb::master::config':
require=>Class['profile::puppetserver::config']
}
}
但这不起作用
所以我读了关于木偶类包含和按链排序的内容。所以我在我的profile::puppetserver
类配置文件::puppetserver(
) {
包含配置文件::puppetserver::安装
包含配置文件::puppetserver::配置
包含配置文件::puppetserver::防火墙
包含配置文件::puppetserver::puppetdb
类['profile::puppetserver::install']->
类['profile::puppetserver::config']->
类['profile::puppetserver::firewall']->
类['profile::puppetserver::puppetdb']
}
但它仍然没有任何效果。。。在安装、配置、防火墙步骤中的“puppetserver配置”过程中,他仍然开始安装postgresql
和puppetdb
包
我必须如何编写排序,即我在profile::puppetserver::puppetdb
中调用的puppetdb
模块中的所有内容仅在其余的配置步骤完成后才开始
我真的不明白。我想这可能与以下事实有关:我从profile::puppetserver::puppetdb
中的puppetdb
模块中声明类,而不是直接从资源类型中声明类。因为当我使用带有Require标志的包资源类型
时,它似乎可以工作。但我真的不知道该怎么处理。我想一定有办法的
我想这可能与我宣布的事实有关
的内部puppetdb模块中的类
profile::puppetserver::puppetdb,而不是直接的资源类型。
因为当我使用带有Require标志的包资源类型时,它
似乎有效
确实如此
资源通过直接声明它们的类或定义的类型实例进行排序,并根据直接应用于它们的排序参数和指令进行排序
因为类可以在不同的位置多次声明,所以对它们来说,排序更加复杂。您演示的类似资源的类声明(您确实应该尽可能避免)并不意味着声明类的任何特定顺序。通过函数进行的声明也不包括在内
通过require
函数的类声明在声明的类上相对于声明的类或定义的类型放置单端排序约束,通过contain
函数的声明放置双端排序约束,类似于应用于所有资源声明的约束。链接箭头和排序元参数可以在类上放置额外的排序约束
但我真的不知道该怎么处理。我想一定有办法的
您的最后一个示例显示了在profile::puppetserver
级别强制执行排序的可行方法,但其有效性取决于其包含的每个类对它们自己声明的任何类采用相同的方法,至少在第三级类必须受第二级类顺序约束的情况下。这似乎是你跌倒的地方
还要注意的是,尽管确实需要对某些事物进行相对排序,但尝试对所有资源强制执行显式的总排序是没有必要的,也没有多大用处的。尽可能用最轻的手工作,只放置t