Katello:Puppet模块的单独生命周期
我们将为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