有没有办法让节点共享一组公共模块,然后向它们添加特定模块?
Is there a way to make the nodes share a common group of modules and then add specific modules to them?
有没有办法让节点共享一组公共模块,然后向它们添加特定模块?
在我的配置中,所有节点都有一个基本配置,但其中一些节点有特定的模块。
在这些通用模块中,无论是什么模块,所有配置都是完全相同的,所以"easy"路径只是将它们添加到主清单中的每个节点。
硬编码是这样的:
node default{
include module 1
include module 2
include module 3
include module 4
}
node 'www.example1.com'{
include module 1
include module 2
include module 3
include module 4
include module 5
include module 6
}
node 'www.example2.com'{
include module 1
include module 2
include module 3
include module 4
include module 7
include module 8
}
[...]
如您所见,它非常重复且效率低下,主要是因为我将添加多个节点和模块。
有没有办法仅使用 Puppet 来完成此操作?
Is there a way to make the nodes share a common group of modules and then add specific modules to them?
是的,有几种方法。在 Puppet 4 之前还有更多,但我会坚持使用保质期不受限制的机制。
一般有三种可能性:
不是为每个节点声明每个特定模块,而是定义 类 聚合常见的模块组,并在您的节点上声明 those。
将要应用于节点的 类 外部化,并通过 Hiera 数组合并查找加载它们。然后,您将获得 Hiera 共享数据的所有好处。有一个标准函数可以让这变得非常简单:hiera_include()
.
使用 ENC [帮助] 对您的节点进行分类。在 ENC 的源语言中使用您想要的任何机制来分组 类 并将组分配给节点。
@MattSchuchard 在他的评论中引用的角色和配置文件模式是一种流行且强大的类型 (1) 方法,您一定要研究一下。但是,这对于您的示例代码来说太过分了;我可能会改写这样的例子(一种更简单的 type-1 方法):
class default_modules {
include module 1
include module 2
include module 3
include module 4
}
node default{
include default_modules
}
node 'www.example1.com'{
include default_modules
include module 5
include module 6
}
node 'www.example2.com'{
include default_modules
include module 7
include module 8
}
[...]
有没有办法让节点共享一组公共模块,然后向它们添加特定模块?
在我的配置中,所有节点都有一个基本配置,但其中一些节点有特定的模块。
在这些通用模块中,无论是什么模块,所有配置都是完全相同的,所以"easy"路径只是将它们添加到主清单中的每个节点。
硬编码是这样的:
node default{
include module 1
include module 2
include module 3
include module 4
}
node 'www.example1.com'{
include module 1
include module 2
include module 3
include module 4
include module 5
include module 6
}
node 'www.example2.com'{
include module 1
include module 2
include module 3
include module 4
include module 7
include module 8
}
[...]
如您所见,它非常重复且效率低下,主要是因为我将添加多个节点和模块。
有没有办法仅使用 Puppet 来完成此操作?
Is there a way to make the nodes share a common group of modules and then add specific modules to them?
是的,有几种方法。在 Puppet 4 之前还有更多,但我会坚持使用保质期不受限制的机制。
一般有三种可能性:
不是为每个节点声明每个特定模块,而是定义 类 聚合常见的模块组,并在您的节点上声明 those。
将要应用于节点的 类 外部化,并通过 Hiera 数组合并查找加载它们。然后,您将获得 Hiera 共享数据的所有好处。有一个标准函数可以让这变得非常简单:
hiera_include()
.使用 ENC [帮助] 对您的节点进行分类。在 ENC 的源语言中使用您想要的任何机制来分组 类 并将组分配给节点。
@MattSchuchard 在他的评论中引用的角色和配置文件模式是一种流行且强大的类型 (1) 方法,您一定要研究一下。但是,这对于您的示例代码来说太过分了;我可能会改写这样的例子(一种更简单的 type-1 方法):
class default_modules {
include module 1
include module 2
include module 3
include module 4
}
node default{
include default_modules
}
node 'www.example1.com'{
include default_modules
include module 5
include module 6
}
node 'www.example2.com'{
include default_modules
include module 7
include module 8
}
[...]