puppet with hiera 中模块的基本用法
Basic usage of modules in puppet with hiera
我想用puppet 来管理一些服务器。即使阅读了数十页文档,我也不清楚如何使用模块以及如何将它们与 hiera 一起使用。作为第一个实验,我想在一个节点上创建一个用户 "admin" 并找到这个模块 -> https://github.com/camptocamp/puppet-accounts
我的 /etc/puppet/hiera.yaml 看起来就这么简单
---
:backends:
- yaml
:hierarchy:
- node/%{::fqdn}
- common
:yaml:
:datadir: /etc/puppet/hieradata
我的/etc/puppet/hiera数据/节点/node1.example.com.yaml包含这个
---
accounts::users:
admin:
uid: 1010
comment: admin
accounts::ssh_keys:
admin:
comment: ad
type: ssh-rsa
public: AAAAAAAAAAAAAA
在我将其放入我的 /etc/puppet/manifests/site.pp
后,它起作用了
hiera_include('classes')
class
{
'accounts':
ssh_keys => hiera_hash('accounts::ssh_keys', {}),
users => hiera_hash('accounts::users', {}),
usergroups => hiera_hash('accounts::usergroups', {}),
}
accounts::account
{
'admin':
}
这是好的做法吗?对我来说,将这些东西放入 site.pp 感觉是错误的,因为当我以后使用更多模块时它会变得混乱。但是还有什么地方可以放呢?我也不明白这是如何将数据与逻辑分开的,因为我在 node1.example.com.yaml 和 site.pp (管理员)中都有数据。一些帮助会很棒..
要理解hiera是什么,你应该简单地认为Hiera是puppet的数据库,Variables/values的数据库,仅此而已。
对于初学者我建议关注系统的其他部分,比如如何创建模块!以及如何管理您的需求(不复杂)然后慢慢构建 "smart" 食谱或可重复使用的...
你的人偶首先会厌倦一个名为 sites.pp 的文件(通常在你的主 $confdir 中(puppet.conf 变量。我不会在以后提及它的环境。)
e 路径是 /etc/puppet 在该目录中,您有一个目录 manifests。有你的地方 sites.pp
通常 sites.pp 结构是:
node default {
include *module*
include *module2*
}
node /server\.fqdn\.local/ {
include *module2*
include *module3*
}
这意味着你有一个默认节点(如果节点名称不适合任何其他节点,将使用默认值,否则将使用 regex 匹配本例中的节点 FQDN server.fqdn.local.
模块(模块、模块 2 和模块 3)存储在 puppet.conf 上设置的 $modulespath 中。在我们的例子中,我将使用:/etc/puppet/modules
树看起来像:
/etc/puppet/modules/
/etc/puppet/modules/module/
/etc/puppet/modules/module/manifests/
/etc/puppet/modules/module/manifests/init.pp
/etc/puppet/modules/module2/
/etc/puppet/modules/module2/manifests/
/etc/puppet/modules/module2/manifests/init.pp
/etc/puppet/modules/module3/
/etc/puppet/modules/module3/manifests/
/etc/puppet/modules/module3/manifests/init.pp
关于
类: https://docs.puppetlabs.com/puppet/latest/reference/lang_classes.html
一般来说,我解释的是木偶实验室:https://docs.puppetlabs.com/puppet/latest/reference/dirs_manifest.html
请注意 README
中的示例
class { 'accounts':
ssh_keys => hiera_hash('accounts::ssh_keys', {}),
users => hiera_hash('accounts::users', {}),
usergroups => hiera_hash('accounts::usergroups', {}),
}
迎合 3.x
之前没有 automatic parameter lookup 的 Puppet 版本的用户。对于最新版本,您应该只使用此清单:
include accounts
由于 Hiera 键具有适当的名称,Puppet 将隐式查找它们。
这整件事对我来说仍然毫无意义。因为我必须把
accounts::account
{
'admin':
}
在用于创建该用户的清单文件中,hiera 在这种情况下有什么用?它不会将数据与逻辑分开。我在 .yaml 文件(ssh 密钥、其他帐户数据)和清单文件(上面的代码片段)中都有数据。通过使用 hiera,我希望能够在 /etc/puppet/hieradata/node/node1.example.com.yaml 中创建该用户,但事实并非如此。这样做的正确方法是什么?这个模块的示例 hiera 文件有什么用?在 site.pp 中以旧方式创建帐户不是更容易吗?
我想用puppet 来管理一些服务器。即使阅读了数十页文档,我也不清楚如何使用模块以及如何将它们与 hiera 一起使用。作为第一个实验,我想在一个节点上创建一个用户 "admin" 并找到这个模块 -> https://github.com/camptocamp/puppet-accounts
我的 /etc/puppet/hiera.yaml 看起来就这么简单
---
:backends:
- yaml
:hierarchy:
- node/%{::fqdn}
- common
:yaml:
:datadir: /etc/puppet/hieradata
我的/etc/puppet/hiera数据/节点/node1.example.com.yaml包含这个
---
accounts::users:
admin:
uid: 1010
comment: admin
accounts::ssh_keys:
admin:
comment: ad
type: ssh-rsa
public: AAAAAAAAAAAAAA
在我将其放入我的 /etc/puppet/manifests/site.pp
后,它起作用了hiera_include('classes')
class
{
'accounts':
ssh_keys => hiera_hash('accounts::ssh_keys', {}),
users => hiera_hash('accounts::users', {}),
usergroups => hiera_hash('accounts::usergroups', {}),
}
accounts::account
{
'admin':
}
这是好的做法吗?对我来说,将这些东西放入 site.pp 感觉是错误的,因为当我以后使用更多模块时它会变得混乱。但是还有什么地方可以放呢?我也不明白这是如何将数据与逻辑分开的,因为我在 node1.example.com.yaml 和 site.pp (管理员)中都有数据。一些帮助会很棒..
要理解hiera是什么,你应该简单地认为Hiera是puppet的数据库,Variables/values的数据库,仅此而已。
对于初学者我建议关注系统的其他部分,比如如何创建模块!以及如何管理您的需求(不复杂)然后慢慢构建 "smart" 食谱或可重复使用的...
你的人偶首先会厌倦一个名为 sites.pp 的文件(通常在你的主 $confdir 中(puppet.conf 变量。我不会在以后提及它的环境。)
e 路径是 /etc/puppet 在该目录中,您有一个目录 manifests。有你的地方 sites.pp
通常 sites.pp 结构是:
node default {
include *module*
include *module2*
}
node /server\.fqdn\.local/ {
include *module2*
include *module3*
}
这意味着你有一个默认节点(如果节点名称不适合任何其他节点,将使用默认值,否则将使用 regex 匹配本例中的节点 FQDN server.fqdn.local.
模块(模块、模块 2 和模块 3)存储在 puppet.conf 上设置的 $modulespath 中。在我们的例子中,我将使用:/etc/puppet/modules
树看起来像:
/etc/puppet/modules/
/etc/puppet/modules/module/
/etc/puppet/modules/module/manifests/
/etc/puppet/modules/module/manifests/init.pp
/etc/puppet/modules/module2/
/etc/puppet/modules/module2/manifests/
/etc/puppet/modules/module2/manifests/init.pp
/etc/puppet/modules/module3/
/etc/puppet/modules/module3/manifests/
/etc/puppet/modules/module3/manifests/init.pp
关于 类: https://docs.puppetlabs.com/puppet/latest/reference/lang_classes.html 一般来说,我解释的是木偶实验室:https://docs.puppetlabs.com/puppet/latest/reference/dirs_manifest.html
请注意 README
中的示例class { 'accounts':
ssh_keys => hiera_hash('accounts::ssh_keys', {}),
users => hiera_hash('accounts::users', {}),
usergroups => hiera_hash('accounts::usergroups', {}),
}
迎合 3.x
之前没有 automatic parameter lookup 的 Puppet 版本的用户。对于最新版本,您应该只使用此清单:
include accounts
由于 Hiera 键具有适当的名称,Puppet 将隐式查找它们。
这整件事对我来说仍然毫无意义。因为我必须把
accounts::account
{
'admin':
}
在用于创建该用户的清单文件中,hiera 在这种情况下有什么用?它不会将数据与逻辑分开。我在 .yaml 文件(ssh 密钥、其他帐户数据)和清单文件(上面的代码片段)中都有数据。通过使用 hiera,我希望能够在 /etc/puppet/hieradata/node/node1.example.com.yaml 中创建该用户,但事实并非如此。这样做的正确方法是什么?这个模块的示例 hiera 文件有什么用?在 site.pp 中以旧方式创建帐户不是更容易吗?