Katello:Puppet模块的单独生命周期

时间:2020-03-21 11:45:56  来源:igfitidea点击:

我们将为Puppet模块配置一个单独的生命周期。

测试环境

我们在CentOS 7服务器上安装了Katello:

katello.igi.local(10.11.1.4)

Puppet模块的单独生命周期

为Puppet模块使用单独的生命周期的想法取自Maxim Burgerhout发表的Red Hat教程 文章。

我们已经知道我们可以创建一个包含RPM文件的存储库。
然后,我们可以通过快照存储库来创建内容视图。

我们可以使用Puppet模块创建内容视图,就像使用RPM一样。
基于该内容视图,Katello在文件系统上创建一个特殊目录,Puppet主节点在该目录中查找Puppet模块。

发布后,Katello从Puppet模块内容视图创建Puppet环境。
因此,将Puppet模块内容视图用作Puppet环境可以直接轻松地在开发我们的homelab Puppet模块期间快速进行迭代。

配置Katello

第1步:创建Puppet产品

# hammer product create --name "puppet"

步骤2:建立Puppet模组

有关更多信息,请参见此处:将Puppet模块生成和导入到Katello中

这里的想法是拥有一个包含我们所有Puppet模块的Katello存储库。

Katello存储库可以是包含Pulp列表和打包的Puppet模块的纯目录。
根据Pulp项目文档,Pulp列表是一个文件,列出目录中包含的每个Puppet模块。
每个模块在单独的行中列出,其格式如下:'<name>,<checksum>,<size>'。
名称是文件名,校验和是文件的SHA256摘要,大小是文件的大小(以字节为单位)。
纸浆列表必须命名为PULP_MANIFEST。
有了所有这些信息,我们就可以手动构建Puppet模块,生成Pulp列表并将所有内容导入Katello。

从GitHub获取源代码:

# cd /opt
# git clone https://github.com/crylium/build-puppet-modules-for-katello.git

构建模块,提供模块目录的路径:

# bash ./build-puppet-modules-for-katello/puppet-module-build.sh \
  /etc/puppetlabs/code/environments/homelab/modules/

这还将创建文件'PULP_MANIFEST'。

步骤3:建立Puppet存放区

# hammer repository create \
  --product "puppet" \
  --name "homelab_modules" \
  --content-type "puppet" \
  --url "file:///etc/puppetlabs/code/environments/homelab/modules/"

步骤4:同步Puppet存储库

# hammer repository synchronize \
  --product "puppet" \
  --name "homelab_modules"

步骤5:建立内容检视

# hammer content-view create \
  --name "puppet_content" \
  --description "Puppet modules"

步骤6:将Puppet模块添加到内容视图

查看模块列表:

# hammer puppet-module list
---|--------------------------|--------------|---------|------------------------------------
ID | NAME

| AUTHOR

| VERSION | UUID

---|--------------------------|--------------|---------|------------------------------------
38 | graylog

| graylog

| 0.6.0   | f27d9a89-9e0a-44fe-b72d-f101d94629a4
37 | sudo

| saz

| 5.0.0   | f088fa68-bfa3-4429-a8f2-f9c893d52bfc
36 | ruby

| puppetlabs   | 1.0.0   | eaaef4ba-bf52-4275-8eff-0340d98aa3f7
35 | archive

| puppet

| 2.3.0   | e09d2bc5-ec62-488c-a1a8-df6364448378
34 | elasticsearch

| elastic

| 6.2.1   | d965e7b4-ec88-4813-b575-745f9e78c2f1
33 | augeasproviders_shellvar | herculesteam | 2.2.2   | cbbe2521-890b-476d-b3b5-beef1b72fd73
32 | haproxy

| puppetlabs   | 2.1.0   | c9113401-719a-4d19-8ee8-8faca9a30317
31 | mongodb

| puppet

| 2.1.0   | c8e47d0c-e54c-4cef-9b16-c1bad02e7fba
30 | sysctl

| thias

| 1.0.6   | c23fabcc-0d62-4ecb-8ac3-ebe06e9772e6
29 | nfs

| derdanne     | 2.0.7   | c09f3853-43a8-4d30-b81d-7ce160d8b3b8
28 | stdlib

| puppetlabs   | 4.24.0  | 9ec2939a-3b08-4fbe-a7ff-1c34984350d7
27 | ssh

| saz

| 3.0.1   | 99b1c530-fbe7-487a-8842-cfeacc688b74
26 | apache

| puppetlabs   | 2.3.1   | 93f56575-da3d-41b6-964c-a70af87bcb0c
25 | concat

| puppetlabs   | 2.2.1   | 9379ce64-6135-4b17-a1c3-5731b0ac89c3
24 | mysql

| puppetlabs   | 5.3.0   | 92695de8-45c0-4271-832c-5721bdb5ffd9
23 | openldap

| camptocamp   | 1.16.1  | 924b998d-b361-4f75-9e41-55f825d209da
22 | accounts

| puppetlabs   | 1.3.0   | 8bf8366e-81f1-4dd1-8de6-9e330e7de759
21 | sssd

| sgnl05

| 2.7.0   | 8afc1e88-9d4a-46ad-8107-5d457f4cd740
20 | snmp

| razorsedge   | 3.9.0   | 8aed966e-e973-4d87-af1d-6f4b63051c32
19 | theitroad_firewall

| theitroad

| 1.0.0   | 8513e8ec-7cdd-4606-8d8c-92a660dc5da5
18 | corosync

| puppet

| 6.0.0   | 7b4dba49-c793-47f7-b872-a683a4b8d131
17 | augeasproviders_core     | herculesteam | 2.1.4   | 77afedf9-65b8-4168-a8a1-5e534e84462d
16 | pe_gem

| puppetlabs   | 0.2.0   | 5e639097-072a-4486-bc19-0b3ab6a8bbae
15 | keepalived

| arioch

| 1.2.5   | 4ff5c45b-0a93-4cbd-8574-1b246363378c
14 | firewall

| puppetlabs   | 1.12.0  | 3a86241a-3c52-4339-a05d-6f6de0a033ac
13 | rsyslog

| saz

| 5.0.0   | 330447a4-010a-4cfb-8b99-5cbcf327adaa
12 | systemd

| camptocamp   | 1.1.1   | 2fea15c7-99d4-49cd-9eea-578c5e249657
11 | ntp

| puppetlabs   | 7.1.1   | 2fd3c5d5-4943-4f54-bd60-3bd1d73af0d3
10 | translate

| puppetlabs   | 1.1.0   | 2e46f4e3-34f6-41a0-9466-4b163b87f5d9
9  | selinux

| puppet

| 1.5.2   | 2e12d841-2801-45d2-a70c-e287d134b1e8
8  | postgresql

| puppetlabs   | 5.3.0   | 28f11fd1-223b-46fe-a92c-cfc485aa28ef
7  | datacat

| richardc     | 0.6.2   | 24f45f62-7012-4ac1-809e-3efd9d5d9daa
6  | zabbix

| puppet

| 6.2.0   | 2426fdbc-9dc2-4cf2-8810-a7702fdd7faa
5  | limits

| saz

| 3.0.2   | 1b893348-11e9-45e7-9d64-5fb2819c1e96
4  | apt

| puppetlabs   | 4.5.1   | 13c33cf0-acbe-4369-b44e-def9933e6d87
3  | wordpress

| hunner

| 1.0.0   | 0f928270-7b36-407b-b603-1efe6e261812
2  | staging

| puppet

| 3.1.0   | 0a6ffb28-5049-4556-923d-7af3850ece63
1  | java

| puppetlabs   | 2.4.0   | 081cb24f-cec7-4c12-a203-5685edc1936d
---|--------------------------|--------------|---------|------------------------------------

我们可以循环使用模块ID,以将其添加到内容视图中:

# for i in $(seq 1 38);do \
  hammer content-view puppet-module add \
  --content-view "puppet_content" \
  --id "$i"; done

步骤7:发布Puppet内容视图

在发布内容视图之前,让我们检查可用的环境:

# hammer environment list
---|----------
ID | NAME

---|----------
2  | homelab   
1  | production
---|----------

生产环境是默认环境,而homelab环境是我们手动创建的环境。
发布Puppet内容视图:

# hammer content-view publish \
  --name "puppet_content" \
  --description "Publishing Puppet modules"

如前所述,Katello在发布Puppet模块内容视图时会创建一个Puppet环境。
检查确认:

# hammer environment list
---|-----------------------------------
ID | NAME

---|-----------------------------------
3  | KT_theitroad_Library_puppet_content_4
2  | homelab

1  | production

---|-----------------------------------

现在,我们可以将主机或者主机组与所需的任何Puppet环境相关联,包括为Puppet模块内容视图创建的环境。

步骤8:备份Katello配置

让我们为Katello配置创建一个备份,这样我们就不会丢失到目前为止所做的任何更改:

# katello-backup /mnt/backup/--features=all -y