Katello Foreman на OEL7: Difference between revisions

From wiki.habital.lv
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
В данной статье описывается установка и начальные настройки сервера управления пакетами Katello на базе OEL7. Сервис "Katello" включает в себя управление конфигурациями "puppet", обнаружение и развертывание узлов "foreman", управление репозиториями "pulp", управление жизненным циклом "katello" и управление подписками "candlepin". Полную статью можно прочитать по следующей ссылке "http://wiki.habital.lv/images/Katello_foreman_oel7.pdf".
В данной статье описывается установка и начальные настройки сервера управления пакетами Katello на базе OEL7. Сервис "Katello" включает в себя управление конфигурациями "puppet", обнаружение и развертывание узлов "foreman", управление репозиториями "pulp", управление жизненным циклом "katello" и управление подписками "candlepin". Полную статью можно прочитать по следующей ссылке "http://wiki.habital.lv/images/Katello_foreman_oel7.pdf".
== Инсталляция “Katello Foreman” на сервер OEL 7 ==
3 сентября 2019 г.
'''Создание сервера'''
* Операционная система - OEL 7[[#fn1x0|1]].
* Необходимое требование к монтированию каталога “/tmp” - не должно быть опции “noexec”.
=== Firewall ===
Необходимо, чтобы были открыты следующие порты:
{| style="border-spacing:0;width:4.7396in;"
|-
||
||
||
|-
| align=center| Порт
| align=center| Протокол
| align=center| Назначение
|-
||
||
||
|-
||
||
||
|-
| align=center| 80
| align=center| TCP
| align=center| HTTP, used for provisioning purposes
|-
||
||
||
|-
| align=center| 443
| align=center| TCP
| align=center| HTTPS, used for web access and api communication
|-
||
||
||
|-
| align=center| 5647
| align=center| TCP
| align=center| qdrouterd - used for client and Smart Proxy actions
|-
||
||
||
|-
| align=center| 8140
| align=center| TCP
| align=center| Puppet agent to Puppet master connections
|-
||
||
||
|-
| align=center| 9090
| align=center| TCP
| align=center| HTTPS - used for communication
|-
||
||
| align=center| with the Smart Proxy
|-
||
||
||
|-
||
| colspan="2" |
|-
|}
Таблица 1: Открытые порты для “Katello”
Открытие портов:
<nowiki>#</nowiki>&nbsp;firewall-cmd&nbsp;--get-active-zones&nbsp;public&nbsp;
<nowiki>#</nowiki>&nbsp;firewall-cmd&nbsp;\
&nbsp;--zone=public&nbsp;\
&nbsp;--add-port="53/udp"&nbsp;--add-port="53/tcp"&nbsp;\
&nbsp;--add-port="67/udp"&nbsp;--add-port="69/udp"&nbsp;\
&nbsp;--add-port="80/tcp"&nbsp;--add-port="443/tcp"&nbsp;\
&nbsp;--add-port="5000/tcp"&nbsp;--add-port="5647/tcp"&nbsp;\
&nbsp;--add-port="8000/tcp"&nbsp;--add-port="8140/tcp"&nbsp;\
&nbsp;--add-port="8443/tcp"&nbsp;--add-port="9090/tcp"&nbsp;\
&nbsp;--permanent&nbsp;
<nowiki>#</nowiki>&nbsp;firewall-cmd&nbsp;--reload
=== Инсталляция пакетов ===
В состав дистрибутива “OEL 7” не входит пакет “subscribe-manager”, который надо устанавливать отдельно:
<nowiki>#</nowiki>&nbsp;wget&nbsp;https://copr.fedoraproject.org/coprs/dgoodwin/subscription-manager/repo/epel-7/dgoodwin-subscription-manager-epel-7.repo&nbsp;-O&nbsp;/etc/yum.repos.d/dgoodwin-subscription-manager-epel-7.repo
Кроме того, если установлены следующие пакеты:
* rhn-check
* rhn-client-tools
* rhn-setup
* rhn-setup-gnome
* rhnlib
* rhnsd
* yum-rhn-plugin
то их надо удалить.
==== Установка необходимых репозиториев. ====
<nowiki>#</nowiki>&nbsp;yum&nbsp;-y&nbsp;localinstall&nbsp;https://fedorapeople.org/groups/katello/releases/yum/3.12/katello/el7/x86_64/katello-repos-latest.rpm&nbsp;
<nowiki>#</nowiki>&nbsp;yum&nbsp;-y&nbsp;localinstall&nbsp;https://yum.theforeman.org/releases/1.22/el7/x86_64/foreman-release.rpm&nbsp;
<nowiki>#</nowiki>&nbsp;yum&nbsp;-y&nbsp;localinstall&nbsp;https://yum.puppet.com/puppet6-release-el-7.noarch.rpm&nbsp;
<nowiki>#</nowiki>&nbsp;yum&nbsp;-y&nbsp;localinstall&nbsp;https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
=== Инсталляция “Katello” ===
Внимание: перед установкой необходимо обратить внимание на воможность установки с дополнительными флагами.
<nowiki>#</nowiki>&nbsp;yum&nbsp;-y&nbsp;install&nbsp;foreman-release-scl&nbsp;
<nowiki>#</nowiki>&nbsp;yum&nbsp;-y&nbsp;install&nbsp;katello&nbsp;
<nowiki>#</nowiki>&nbsp;foreman-installer&nbsp;--scenario&nbsp;katello&nbsp;\
&nbsp;&nbsp;&nbsp;--foreman-initial-organization="Example"&nbsp;\
&nbsp;&nbsp;&nbsp;--foreman-initial-location="Latvia"&nbsp;\
&nbsp;&nbsp;&nbsp;--foreman-initial-admin-username=admin&nbsp;\
&nbsp;&nbsp;&nbsp;--foreman-initial-admin-password="Passw0rd"&nbsp;
Installing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Done&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[100%]&nbsp;&nbsp;&nbsp;Success!&nbsp;&nbsp;&nbsp;
<nowiki>*</nowiki>&nbsp;Katello&nbsp;is&nbsp;running&nbsp;at&nbsp;https://foreman.bank.baltikums.com&nbsp;&nbsp;&nbsp;
<nowiki>*</nowiki>&nbsp;To&nbsp;install&nbsp;an&nbsp;additional&nbsp;Foreman&nbsp;proxy&nbsp;on&nbsp;separate&nbsp;machine&nbsp;continue&nbsp;by&nbsp;running:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreman-proxy-certs-generate&nbsp;--foreman-proxy-fqdn&nbsp;"$FOREMAN_PROXY"&nbsp;--certs-tar&nbsp;"/root/$FOREMAN_PROXY-certs.tar"&nbsp;&nbsp;
&nbsp;The&nbsp;full&nbsp;log&nbsp;is&nbsp;at&nbsp;/var/log/foreman-installer/katello.log&nbsp;yum&nbsp;install&nbsp;-y&nbsp;-q&nbsp;rh-mongodb34-syspaths&nbsp;finished&nbsp;successfully!
==== Смена пароля ====
При необходимости можно сменить административный пароль:
<nowiki>#</nowiki>&nbsp;foreman-rake&nbsp;permissions:reset&nbsp;
/usr/share/foreman/lib/foreman.rb:8:&nbsp;warning:&nbsp;already&nbsp;initialized&nbsp;constant&nbsp;Foreman::UUID_REGEXP&nbsp;
/usr/share/foreman/lib/foreman.rb:8:&nbsp;warning:&nbsp;previous&nbsp;definition&nbsp;of&nbsp;UUID_REGEXP&nbsp;was&nbsp;here&nbsp;
Reset&nbsp;to&nbsp;user:&nbsp;admin,&nbsp;password:&nbsp;HfWLyceWA5bdRon3
Если была произведена смена пароля, то в файле “/root/.hammer/cli.modules.d/foreman.yml” также необходимо изменить пароль.
==== Добавление доменов ====
<nowiki>#</nowiki>&nbsp;hammer&nbsp;domain&nbsp;create&nbsp;--name&nbsp;habital.lv
==== Добавление подсетей ====
<nowiki>#</nowiki>&nbsp;hammer&nbsp;domain&nbsp;list&nbsp;
---|-------------------&nbsp;
ID&nbsp;|&nbsp;NAME&nbsp;
---|-------------------&nbsp;
1&nbsp;&nbsp;|&nbsp;habital.lv&nbsp;
---|-------------------&nbsp;
<nowiki>#</nowiki>&nbsp;hammer&nbsp;subnet&nbsp;create&nbsp;\
&nbsp;&nbsp;&nbsp;--organizations&nbsp;"Example"&nbsp;\
&nbsp;&nbsp;&nbsp;--locations&nbsp;"Latvia"&nbsp;\
&nbsp;&nbsp;&nbsp;--name&nbsp;"VirtualBox&nbsp;Net"&nbsp;\
&nbsp;&nbsp;&nbsp;--network&nbsp;"10.0.3.0"&nbsp;\
&nbsp;&nbsp;&nbsp;--mask&nbsp;"255.255.255.0"&nbsp;\
&nbsp;&nbsp;&nbsp;--network-type&nbsp;"IPv4"&nbsp;\
&nbsp;&nbsp;&nbsp;--domain-ids&nbsp;"1"
==== Добавление продуктов ====
===== Создание нового продукта =====
<nowiki>#</nowiki>&nbsp;hammer&nbsp;organization&nbsp;list&nbsp;
<nowiki>#</nowiki>&nbsp;hammer&nbsp;product&nbsp;create&nbsp;\
&nbsp;&nbsp;&nbsp;--name=’Extra&nbsp;Packages&nbsp;for&nbsp;Enterprise&nbsp;Linux’&nbsp;\
&nbsp;&nbsp;&nbsp;--organization-id&nbsp;1&nbsp;\
&nbsp;&nbsp;&nbsp;--description&nbsp;’Extra&nbsp;Packages&nbsp;for&nbsp;Enterprise&nbsp;Linux’
===== Добавление GPG-ключей =====
<nowiki>#</nowiki>&nbsp;hammer&nbsp;organization&nbsp;list&nbsp;
<nowiki>#</nowiki>&nbsp;wget&nbsp;-q&nbsp;https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7&nbsp;-O&nbsp;~/RPM-GPG-KEY-EPEL-7&nbsp;
<nowiki>#</nowiki>&nbsp;hammer&nbsp;gpg&nbsp;create&nbsp;\
&nbsp;&nbsp;&nbsp;--key&nbsp;~/RPM-GPG-KEY-EPEL-7&nbsp;\
&nbsp;&nbsp;&nbsp;--name&nbsp;’GPG&nbsp;EPEL&nbsp;7’&nbsp;\
&nbsp;&nbsp;&nbsp;--organization-id&nbsp;1
[[Image:0_home_eugene_Documents_Foreman_katello_foreman_content_cred.pngImage1.png|top|alt="PIC"]]
Рис.&nbsp;1: Content Credentials
===== Добавление EPEL 7-репозитория =====
<nowiki>#</nowiki>&nbsp;hammer&nbsp;organization&nbsp;list&nbsp;
<nowiki>#</nowiki>&nbsp;hammer&nbsp;gpg&nbsp;list&nbsp;--organization-id&nbsp;1&nbsp;
<nowiki>#</nowiki>&nbsp;hammer&nbsp;repository&nbsp;create&nbsp;&nbsp;\
&nbsp;&nbsp;&nbsp;--name=’EPEL&nbsp;7&nbsp;-&nbsp;x86_64’&nbsp;\
&nbsp;&nbsp;&nbsp;--organization-id&nbsp;1&nbsp;\
&nbsp;&nbsp;&nbsp;--product=’Extra&nbsp;Packages&nbsp;for&nbsp;Enterprise&nbsp;Linux’&nbsp;\
&nbsp;&nbsp;&nbsp;--content-type=’yum’&nbsp;\
&nbsp;&nbsp;&nbsp;--download-policy&nbsp;"on_demand"&nbsp;\
&nbsp;&nbsp;&nbsp;--publish-via-http=true&nbsp;\
&nbsp;&nbsp;&nbsp;--url=https://dl.fedoraproject.org/pub/epel/7/x86_64/&nbsp;\
&nbsp;&nbsp;&nbsp;--gpg-key="GPG&nbsp;EPEL&nbsp;7"
Кроме этого надо добавить ключи, репозитории для продуктов “Oracle Enterprise Linux 7”, “Puppet Client for RHEL/CentOS 7”.
[[Image:1_home_eugene_Documents_Foreman_katello_foreman_products.pngImage2.png|top|alt="PIC"]]
Рис.&nbsp;2: Продукты Katello
===== Синхронизация репозиториев =====
После создания нескольких репозиториев их необходимо синхронизировать:
<nowiki>#</nowiki>&nbsp;hammer&nbsp;repository&nbsp;list&nbsp;
...&nbsp;
1&nbsp;|&nbsp;EPEL&nbsp;7&nbsp;-&nbsp;x86_64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;EPEL&nbsp;7&nbsp;-&nbsp;x86_64&nbsp;
6&nbsp;|&nbsp;OL7_Addons&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Oracle&nbsp;Enterprise&nbsp;Linux&nbsp;7&nbsp;
3&nbsp;|&nbsp;OL7_Latest&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Oracle&nbsp;Enterprise&nbsp;Linux&nbsp;7&nbsp;
5&nbsp;|&nbsp;OL7_Optional_Latest&nbsp;|&nbsp;Oracle&nbsp;Enterprise&nbsp;Linux&nbsp;7&nbsp;
4&nbsp;|&nbsp;OL7_UEKR5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Oracle&nbsp;Enterprise&nbsp;Linux&nbsp;7&nbsp;
2&nbsp;|&nbsp;puppet_pc1_x86_64&nbsp;&nbsp;&nbsp;|&nbsp;Puppet&nbsp;Client&nbsp;for&nbsp;RHEL/CentOS&nbsp;7&nbsp;...&nbsp;&nbsp;
<nowiki>#</nowiki>&nbsp;hammer&nbsp;product&nbsp;list&nbsp;--organization-id&nbsp;1&nbsp;
...&nbsp;
1&nbsp;|&nbsp;EPEL&nbsp;7&nbsp;-&nbsp;x86_64&nbsp;|&nbsp;Extra&nbsp;Packages&nbsp;for&nbsp;Enterprise&nbsp;Linux&nbsp;
4&nbsp;|&nbsp;Oracle&nbsp;Enterprise&nbsp;Linux&nbsp;7&nbsp;|&nbsp;Oracle&nbsp;Enterprise&nbsp;Linux&nbsp;7&nbsp;
2&nbsp;|&nbsp;Puppet&nbsp;Client&nbsp;for&nbsp;RHEL/CentOS&nbsp;7&nbsp;|&nbsp;Puppet&nbsp;client&nbsp;repository&nbsp;to&nbsp;use&nbsp;with&nbsp;RHEL&nbsp;?CentOS&nbsp;7&nbsp;
...&nbsp;&nbsp;
<nowiki>#</nowiki>&nbsp;for&nbsp;i&nbsp;in&nbsp;$(seq&nbsp;3&nbsp;6);&nbsp;do&nbsp;\
&nbsp;hammer&nbsp;repository&nbsp;synchronize&nbsp;\
&nbsp;--product&nbsp;"Oracle&nbsp;Enterprise&nbsp;Linux&nbsp;7"&nbsp;\
&nbsp;--id&nbsp;"$i";&nbsp;\
&nbsp;done
Синхронизацию можно осуществить также и через WEB-UI.
==== Livecycle ====
Создание:
<nowiki>#</nowiki>&nbsp;hammer&nbsp;lifecycle-environment&nbsp;create&nbsp;\
&nbsp;--name&nbsp;"Production"&nbsp;\
&nbsp;--description&nbsp;"Production"&nbsp;\
&nbsp;--prior&nbsp;"Library"&nbsp;--organization-id&nbsp;1
==== Content View ====
<nowiki>#</nowiki>&nbsp;hammer&nbsp;content-view&nbsp;create&nbsp;\
&nbsp;&nbsp;&nbsp;--name&nbsp;"OEL7_content"&nbsp;\
&nbsp;&nbsp;&nbsp;--description&nbsp;"Content&nbsp;view&nbsp;for&nbsp;OEL7"&nbsp;\
&nbsp;&nbsp;&nbsp;--organization-id&nbsp;1
===== Публикование “Content View” =====
<nowiki>#</nowiki>&nbsp;hammer&nbsp;content-view&nbsp;publish&nbsp;\
&nbsp;&nbsp;&nbsp;--name&nbsp;"OEL7_content"&nbsp;\
&nbsp;&nbsp;&nbsp;--description&nbsp;"Publishing&nbsp;repositories"
[[Image:2_home_eugene_Documents_Foreman_katello_foreman_content_view.pngImage3.png|top|alt="PIC"]]
Рис.&nbsp;3: Content View
==== Создание ключей активации ====
<nowiki>#</nowiki>&nbsp;hammer&nbsp;activation-key&nbsp;list&nbsp;--organization-id&nbsp;1&nbsp;
---|------|------------|-----------------------|&nbsp;
ID&nbsp;|&nbsp;NAME&nbsp;|&nbsp;HOST&nbsp;LIMIT&nbsp;|&nbsp;LIFECYCLE&nbsp;ENVIRONMENT&nbsp;|&nbsp;CONTENT&nbsp;VIEW&nbsp;
---|------|------------|-----------------------|&nbsp;
<nowiki>#</nowiki>&nbsp;hammer&nbsp;lifecycle-environment&nbsp;list&nbsp;
---|-------------|------------&nbsp;
ID&nbsp;|&nbsp;NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;PRIOR&nbsp;
---|-------------|------------&nbsp;
1&nbsp;&nbsp;|&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;
2&nbsp;&nbsp;|&nbsp;Production&nbsp;&nbsp;|&nbsp;Library&nbsp;
---|-------------|------------&nbsp;
<nowiki>#</nowiki>&nbsp;hammer&nbsp;content-view&nbsp;version&nbsp;list&nbsp;
...&nbsp;
2&nbsp;&nbsp;|&nbsp;OEL7_content&nbsp;1.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;1.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Library,Production&nbsp;
1&nbsp;&nbsp;|&nbsp;Default&nbsp;Organization&nbsp;View&nbsp;1.0&nbsp;|&nbsp;1.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;Library&nbsp;
...
Создадим ключ активации для “Content View - OEL7_content”:
<nowiki>#</nowiki>&nbsp;hammer&nbsp;activation-key&nbsp;create&nbsp;\
&nbsp;&nbsp;&nbsp;--name&nbsp;"OEL7-key"&nbsp;\
&nbsp;&nbsp;&nbsp;--description&nbsp;"Key&nbsp;to&nbsp;use&nbsp;with&nbsp;OEL7"&nbsp;\
&nbsp;&nbsp;&nbsp;--lifecycle-environment&nbsp;"Library"&nbsp;\
&nbsp;&nbsp;&nbsp;--content-view&nbsp;"OEL7_content"&nbsp;\
&nbsp;&nbsp;&nbsp;--unlimited-hosts&nbsp;\
&nbsp;&nbsp;&nbsp;--organization-id&nbsp;1&nbsp;
Activation&nbsp;key&nbsp;created.
Все подписки можно увидеть через WEB-UI:
[[Image:3_home_eugene_Documents_Foreman_katello_foreman_subscripion.pngImage4.png|top|alt="PIC"]]
Рис.&nbsp;4: Subscriptions
=== Регистрация клиента на “Katello”-сервере ===
На стороне клиента надо проверить, что установлен “subscription-manager”:
<nowiki>#</nowiki>&nbsp;yum&nbsp;install&nbsp;subscription-manager
А также:
<nowiki>#</nowiki>&nbsp;yum&nbsp;install&nbsp;-y&nbsp;https://yum.theforeman.org/client/1.22/el7/x86_64/foreman-client-release.rpm&nbsp;
<nowiki>#</nowiki>&nbsp;curl&nbsp;--insecure&nbsp;--output&nbsp;katello-ca-consumer-latest.noarch.rpm&nbsp;https://foreman.habital.lv/pub/katello-ca-consumer-latest.noarch.rpm&nbsp;
<nowiki>#</nowiki>&nbsp;yum&nbsp;localinstall&nbsp;katello-ca-consumer-latest.noarch.rpm&nbsp;
<nowiki>#</nowiki>&nbsp;yum&nbsp;install&nbsp;katello-agent
[[Image:4_home_eugene_Documents_Foreman_katello_foreman_host_registration.pngImage5.png|top|alt="PIC"]]
Рис.&nbsp;5: Katello Content Host Registration
Если используется виртуализация на основе “VmWare”, “Hyper-V”, “Xen”, “VDSM” или “RHEVM”, то надо установить на гостевые узлы пакет “virt-who” и его настроить (см. [https://access.redhat.com/labsinfo/virtwhoconfig https://access.redhat.com/labsinfo/virtwhoconfig]). В связи с тем, что система “Katello” устанавливалась на VirtualBox, настройка пакета “virt-who” не проводилась.
После успешной регистрации “Katello”-сервера и гостевых узлов эти узлы можно сразу увидеть в “Content Hosts”:
[[Image:5_home_eugene_Documents_Foreman_katello_foreman_content_hosts.pngImage6.png|top|alt="PIC"]]
Рис.&nbsp;6: Content Hosts
=== Модули для “Puppetserver” ===
На сайте [https://forge.puppet.com/ https://forge.puppet.com/] можно найти готовые модули для puppetserver.
==== Модуль “ntp” ====
Для проверки работы модулей можно с вышеуказанного сайта выбрать модуль ‘ntp” и инсталлировать его:
<nowiki>#</nowiki>&nbsp;puppet&nbsp;module&nbsp;install&nbsp;puppetlabs-ntp&nbsp;--version&nbsp;8.0.0&nbsp;Notice:&nbsp;Preparing&nbsp;to&nbsp;install&nbsp;into&nbsp;/etc/puppetlabs/code/environments/production/modules&nbsp;...&nbsp;Notice:&nbsp;Downloading&nbsp;from&nbsp;https://forgeapi.puppet.com&nbsp;...&nbsp;Notice:&nbsp;Installing&nbsp;--&nbsp;do&nbsp;not&nbsp;interrupt&nbsp;...&nbsp;/etc/puppetlabs/code/environments/production/modules&nbsp;
|--&nbsp;puppetlabs-ntp&nbsp;(v8.0.0)&nbsp;&nbsp;&nbsp;&nbsp;
|--&nbsp;puppetlabs-stdlib&nbsp;(v6.0.0)
Изменим содержимое файла “site.pp” на следующее:
class&nbsp;{&nbsp;’ntp’:&nbsp;&nbsp;&nbsp;servers&nbsp;&nbsp;&nbsp;
<nowiki>=></nowiki>&nbsp;[&nbsp;’0.pool.ntp,org’,&nbsp;’1.pool.ntp.org’&nbsp;],
&nbsp;&nbsp;&nbsp;restrict&nbsp;&nbsp;
<nowiki>=></nowiki>&nbsp;[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
’default&nbsp;ignore’,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;’-6&nbsp;default&nbsp;ignore’,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;’127.0.0.1’,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;’-6&nbsp;::1’,
&nbsp;&nbsp;&nbsp;&nbsp;],&nbsp;}
&nbsp;&nbsp;
include&nbsp;ntp
и на хосте с “puppet-агентом” принудительно перечитаем “pp-файл”:
<nowiki>#</nowiki>&nbsp;puppet&nbsp;agent&nbsp;-t После добавления модуля следует перечитать содержимое (рис.7, 8):
[[Image:6_home_eugene_Documents_Foreman_katello_foreman_puppet_envs.pngImage7.png|top|alt="PIC"]]
Рис.&nbsp;7: Puppet environments
[[Image:7_home_eugene_Documents_Foreman_katello_foreman_puppet_envs_update.pngImage8.png|top|alt="PIC"]]
Рис.&nbsp;8: Puppet change
==== Удаление модуля ====
Для начала надо проверить список установленных модулей:
<nowiki>#</nowiki>&nbsp;puppet&nbsp;module&nbsp;list&nbsp;/etc/puppetlabs/code/environments/production/modules&nbsp;|---&nbsp;puppetlabs-apache&nbsp;(v5.0.0)&nbsp;|---&nbsp;puppetlabs-concat&nbsp;(v6.1.0)&nbsp;
|---&nbsp;puppetlabs-ntp&nbsp;(v8.0.0)&nbsp;
|---&nbsp;puppetlabs-stdlib&nbsp;(v6.0.0)&nbsp;
|---&nbsp;puppetlabs-translate&nbsp;(v2.0.0)&nbsp;
/etc/puppetlabs/code/environments/common&nbsp;(no&nbsp;modules&nbsp;installed)&nbsp;
/etc/puppetlabs/code/modules&nbsp;(no&nbsp;modules&nbsp;installed)&nbsp;
/opt/puppetlabs/puppet/modules&nbsp;(no&nbsp;modules&nbsp;installed)&nbsp;
/usr/share/puppet/modules&nbsp;(no&nbsp;modules&nbsp;installed)&nbsp;
<nowiki>#</nowiki>&nbsp;puppet&nbsp;module&nbsp;uninstall&nbsp;puppetlabs-ntp&nbsp;Notice:&nbsp;Preparing&nbsp;to&nbsp;uninstall&nbsp;’puppetlabs-ntp’&nbsp;...&nbsp;Removed&nbsp;’puppetlabs-ntp’&nbsp;(v8.0.0)&nbsp;from&nbsp;/etc/puppetlabs/code/environments/production/modules
=== Установка плагина “Remote Execution” ===
Для возможности удалённого выполнения команд надо добавить плагин “Remote Execution”. Он может устанавливаться как при исходной инсталляции, так и после.
<nowiki>#</nowiki>&nbsp;foreman-installer&nbsp;\
&nbsp;--enable-foreman-plugin-remote-execution&nbsp;\
&nbsp;--enable-foreman-proxy-plugin-remote-execution-ssh&nbsp;Preparing&nbsp;installation&nbsp;Done&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Success!&nbsp;&nbsp;&nbsp;
<nowiki>*</nowiki>&nbsp;Katello&nbsp;is&nbsp;running&nbsp;at&nbsp;https://foreman.habital.lv&nbsp;&nbsp;&nbsp;
<nowiki>*</nowiki>&nbsp;To&nbsp;install&nbsp;an&nbsp;additional&nbsp;Foreman&nbsp;proxy&nbsp;on&nbsp;separate&nbsp;machine&nbsp;continue&nbsp;by&nbsp;running:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreman-proxy-certs-generate&nbsp;--foreman-proxy-fqdn&nbsp;"$FOREMAN_PROXY"&nbsp;--certs-tar&nbsp;"/root/$FOREMAN_PROXY-certs.tar"&nbsp;&nbsp;&nbsp;The&nbsp;full&nbsp;log&nbsp;is&nbsp;at&nbsp;/var/log/foreman-installer/katello.log
==== Настройка ключей SSH ====
На сервере надо создать пару ключей “SSH”:
<nowiki>#</nowiki>&nbsp;cd&nbsp;/usr/share/foreman-proxy/.ssh&nbsp;
<nowiki>#</nowiki>&nbsp;sudo&nbsp;-u&nbsp;foreman-proxy&nbsp;ssh-keygen&nbsp;\
&nbsp;-f&nbsp;~foreman-proxy/.ssh/id_rsa_foreman_proxy&nbsp;-N&nbsp;’’
При наличии уже имеющихся ключей их надо будт обновить. В случае, если включен “SELinux”, надо выполнить команду:
<nowiki>#</nowiki>&nbsp;restorecon&nbsp;-RvF&nbsp;~foreman-proxy/.ssh
После чего выполнить рестарт “httpd”, “foreman-tasks” и “foreman-proxy”, а также скопировать публичный ключ на удалённые хосты:
<nowiki>#</nowiki>&nbsp;ssh-copy-id&nbsp;-i&nbsp;~foreman-proxy/.ssh/id_rsa_foreman_proxy.pub&nbsp;\&nbsp;root@remotehost.habital.lv
Затем следует проверить на “Katello”-сервере в WEB-UI, что добавлены “Dynflow” и “SSH”:
[[Image:8_home_eugene_Documents_Foreman_katello_foreman_smartproxies.pngImage9.png|top|alt="PIC"]]
Рис.&nbsp;9: SmartProxies
[[#fn1x0-bk|1 ]]Для пробы системы “Katello” использовалась виртуализация VirtualBox. Под систему было выделено 12ГБ ОЗУ и 2 виртуальных процессора.

Revision as of 20:53, 10 September 2019

В данной статье описывается установка и начальные настройки сервера управления пакетами Katello на базе OEL7. Сервис "Katello" включает в себя управление конфигурациями "puppet", обнаружение и развертывание узлов "foreman", управление репозиториями "pulp", управление жизненным циклом "katello" и управление подписками "candlepin". Полную статью можно прочитать по следующей ссылке "http://wiki.habital.lv/images/Katello_foreman_oel7.pdf".


Инсталляция “Katello Foreman” на сервер OEL 7

3 сентября 2019 г.


Создание сервера

  • Операционная система - OEL 71.
  • Необходимое требование к монтированию каталога “/tmp” - не должно быть опции “noexec”.

Firewall

Необходимо, чтобы были открыты следующие порты:

Порт Протокол Назначение
80 TCP HTTP, used for provisioning purposes
443 TCP HTTPS, used for web access and api communication
5647 TCP qdrouterd - used for client and Smart Proxy actions
8140 TCP Puppet agent to Puppet master connections
9090 TCP HTTPS - used for communication
with the Smart Proxy


Таблица 1: Открытые порты для “Katello”


Открытие портов:

# firewall-cmd --get-active-zones public 
# firewall-cmd \
 --zone=public \
 --add-port="53/udp" --add-port="53/tcp" \
 --add-port="67/udp" --add-port="69/udp" \
 --add-port="80/tcp" --add-port="443/tcp" \
 --add-port="5000/tcp" --add-port="5647/tcp" \
 --add-port="8000/tcp" --add-port="8140/tcp" \
 --add-port="8443/tcp" --add-port="9090/tcp" \
 --permanent 
# firewall-cmd --reload

Инсталляция пакетов

В состав дистрибутива “OEL 7” не входит пакет “subscribe-manager”, который надо устанавливать отдельно:

# wget https://copr.fedoraproject.org/coprs/dgoodwin/subscription-manager/repo/epel-7/dgoodwin-subscription-manager-epel-7.repo -O /etc/yum.repos.d/dgoodwin-subscription-manager-epel-7.repo

Кроме того, если установлены следующие пакеты:

  • rhn-check
  • rhn-client-tools
  • rhn-setup
  • rhn-setup-gnome
  • rhnlib
  • rhnsd
  • yum-rhn-plugin

то их надо удалить.

Установка необходимых репозиториев.

# yum -y localinstall https://fedorapeople.org/groups/katello/releases/yum/3.12/katello/el7/x86_64/katello-repos-latest.rpm 
# yum -y localinstall https://yum.theforeman.org/releases/1.22/el7/x86_64/foreman-release.rpm 
# yum -y localinstall https://yum.puppet.com/puppet6-release-el-7.noarch.rpm 
# yum -y localinstall https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 

Инсталляция “Katello”

Внимание: перед установкой необходимо обратить внимание на воможность установки с дополнительными флагами.

# yum -y install foreman-release-scl 
# yum -y install katello 
# foreman-installer --scenario katello \
   --foreman-initial-organization="Example" \
   --foreman-initial-location="Latvia" \
   --foreman-initial-admin-username=admin \
   --foreman-initial-admin-password="Passw0rd" 
Installing             Done                                               [100%]   Success!   
* Katello is running at https://foreman.bank.baltikums.com   
* To install an additional Foreman proxy on separate machine continue by running:
       foreman-proxy-certs-generate --foreman-proxy-fqdn "$FOREMAN_PROXY" --certs-tar "/root/$FOREMAN_PROXY-certs.tar"  
 The full log is at /var/log/foreman-installer/katello.log yum install -y -q rh-mongodb34-syspaths finished successfully! 

Смена пароля

При необходимости можно сменить административный пароль:

# foreman-rake permissions:reset 
/usr/share/foreman/lib/foreman.rb:8: warning: already initialized constant Foreman::UUID_REGEXP 
/usr/share/foreman/lib/foreman.rb:8: warning: previous definition of UUID_REGEXP was here 
Reset to user: admin, password: HfWLyceWA5bdRon3 

Если была произведена смена пароля, то в файле “/root/.hammer/cli.modules.d/foreman.yml” также необходимо изменить пароль.

Добавление доменов

# hammer domain create --name habital.lv 

Добавление подсетей

# hammer domain list 
---|------------------- 
ID | NAME 
---|------------------- 
1  | habital.lv 
---|------------------- 
# hammer subnet create \
   --organizations "Example" \
   --locations "Latvia" \
   --name "VirtualBox Net" \
   --network "10.0.3.0" \
   --mask "255.255.255.0" \
   --network-type "IPv4" \
   --domain-ids "1" 

Добавление продуктов

Создание нового продукта
# hammer organization list 
# hammer product create \
   --name=’Extra Packages for Enterprise Linux’ \
   --organization-id 1 \
   --description ’Extra Packages for Enterprise Linux’ 
Добавление GPG-ключей
# hammer organization list 
# wget -q https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7 -O ~/RPM-GPG-KEY-EPEL-7  
# hammer gpg create \
   --key ~/RPM-GPG-KEY-EPEL-7 \
   --name ’GPG EPEL 7’ \
   --organization-id 1 

File:0 home eugene Documents Foreman katello foreman content cred.pngImage1.png

Рис. 1: Content Credentials

Добавление EPEL 7-репозитория
# hammer organization list 
# hammer gpg list --organization-id 1 
# hammer repository create  \
   --name=’EPEL 7 - x86_64’ \
   --organization-id 1 \
   --product=’Extra Packages for Enterprise Linux’ \
   --content-type=’yum’ \
   --download-policy "on_demand" \
   --publish-via-http=true \
   --url=https://dl.fedoraproject.org/pub/epel/7/x86_64/ \
   --gpg-key="GPG EPEL 7"

Кроме этого надо добавить ключи, репозитории для продуктов “Oracle Enterprise Linux 7”, “Puppet Client for RHEL/CentOS 7”.

File:1 home eugene Documents Foreman katello foreman products.pngImage2.png

Рис. 2: Продукты Katello


Синхронизация репозиториев

После создания нескольких репозиториев их необходимо синхронизировать:

# hammer repository list 
... 
1 | EPEL 7 - x86_64     | EPEL 7 - x86_64 
6 | OL7_Addons          | Oracle Enterprise Linux 7 
3 | OL7_Latest          | Oracle Enterprise Linux 7 
5 | OL7_Optional_Latest | Oracle Enterprise Linux 7 
4 | OL7_UEKR5           | Oracle Enterprise Linux 7 
2 | puppet_pc1_x86_64   | Puppet Client for RHEL/CentOS 7 ...  
# hammer product list --organization-id 1 
... 
1 | EPEL 7 - x86_64 | Extra Packages for Enterprise Linux 
4 | Oracle Enterprise Linux 7 | Oracle Enterprise Linux 7 
2 | Puppet Client for RHEL/CentOS 7 | Puppet client repository to use with RHEL ?CentOS 7 
...  
# for i in $(seq 3 6); do \
 hammer repository synchronize \
 --product "Oracle Enterprise Linux 7" \
 --id "$i"; \
 done

Синхронизацию можно осуществить также и через WEB-UI.

Livecycle

Создание:

# hammer lifecycle-environment create \
 --name "Production" \
 --description "Production" \
 --prior "Library" --organization-id 1 

Content View

# hammer content-view create \
   --name "OEL7_content" \
   --description "Content view for OEL7" \
   --organization-id 1 
Публикование “Content View”
# hammer content-view publish \
   --name "OEL7_content" \
   --description "Publishing repositories" 

File:2 home eugene Documents Foreman katello foreman content view.pngImage3.png

Рис. 3: Content View

Создание ключей активации

# hammer activation-key list --organization-id 1 
---|------|------------|-----------------------| 
ID | NAME | HOST LIMIT | LIFECYCLE ENVIRONMENT | CONTENT VIEW 
---|------|------------|-----------------------| 
# hammer lifecycle-environment list 
---|-------------|------------ 
ID | NAME        | PRIOR 
---|-------------|------------ 
1  | Library     | 
2  | Production  | Library 
---|-------------|------------ 
# hammer content-view version list 
... 
2  | OEL7_content 1.0              | 1.0     | Library,Production 
1  | Default Organization View 1.0 | 1.0     | Library 
...

Создадим ключ активации для “Content View - OEL7_content”:

# hammer activation-key create \
   --name "OEL7-key" \
   --description "Key to use with OEL7" \
   --lifecycle-environment "Library" \
   --content-view "OEL7_content" \
   --unlimited-hosts \
   --organization-id 1 
Activation key created.

Все подписки можно увидеть через WEB-UI:


File:3 home eugene Documents Foreman katello foreman subscripion.pngImage4.png

Рис. 4: Subscriptions

Регистрация клиента на “Katello”-сервере

На стороне клиента надо проверить, что установлен “subscription-manager”:

# yum install subscription-manager

А также:

# yum install -y https://yum.theforeman.org/client/1.22/el7/x86_64/foreman-client-release.rpm 
# curl --insecure --output katello-ca-consumer-latest.noarch.rpm https://foreman.habital.lv/pub/katello-ca-consumer-latest.noarch.rpm 
# yum localinstall katello-ca-consumer-latest.noarch.rpm 
# yum install katello-agent 

File:4 home eugene Documents Foreman katello foreman host registration.pngImage5.png

Рис. 5: Katello Content Host Registration


Если используется виртуализация на основе “VmWare”, “Hyper-V”, “Xen”, “VDSM” или “RHEVM”, то надо установить на гостевые узлы пакет “virt-who” и его настроить (см. https://access.redhat.com/labsinfo/virtwhoconfig). В связи с тем, что система “Katello” устанавливалась на VirtualBox, настройка пакета “virt-who” не проводилась.

После успешной регистрации “Katello”-сервера и гостевых узлов эти узлы можно сразу увидеть в “Content Hosts”:


File:5 home eugene Documents Foreman katello foreman content hosts.pngImage6.png

Рис. 6: Content Hosts


Модули для “Puppetserver”

На сайте https://forge.puppet.com/ можно найти готовые модули для puppetserver.

Модуль “ntp”

Для проверки работы модулей можно с вышеуказанного сайта выбрать модуль ‘ntp” и инсталлировать его:

# puppet module install puppetlabs-ntp --version 8.0.0 Notice: Preparing to install into /etc/puppetlabs/code/environments/production/modules ... Notice: Downloading from https://forgeapi.puppet.com ... Notice: Installing -- do not interrupt ... /etc/puppetlabs/code/environments/production/modules 
|-- puppetlabs-ntp (v8.0.0)    
|-- puppetlabs-stdlib (v6.0.0)

Изменим содержимое файла “site.pp” на следующее:

class { ’ntp’:   servers   
=> [ ’0.pool.ntp,org’, ’1.pool.ntp.org’ ],
   restrict  
=> [     
’default ignore’,     ’-6 default ignore’,
     ’127.0.0.1’,
     ’-6 ::1’,
    ], }
  
include ntp

и на хосте с “puppet-агентом” принудительно перечитаем “pp-файл”:

# puppet agent -t После добавления модуля следует перечитать содержимое (рис.7, 8): 


File:6 home eugene Documents Foreman katello foreman puppet envs.pngImage7.png

Рис. 7: Puppet environments


File:7 home eugene Documents Foreman katello foreman puppet envs update.pngImage8.png

Рис. 8: Puppet change

Удаление модуля

Для начала надо проверить список установленных модулей:

# puppet module list /etc/puppetlabs/code/environments/production/modules |--- puppetlabs-apache (v5.0.0) |--- puppetlabs-concat (v6.1.0) 
|--- puppetlabs-ntp (v8.0.0) 
|--- puppetlabs-stdlib (v6.0.0) 
|--- puppetlabs-translate (v2.0.0) 
/etc/puppetlabs/code/environments/common (no modules installed) 
/etc/puppetlabs/code/modules (no modules installed) 
/opt/puppetlabs/puppet/modules (no modules installed) 
/usr/share/puppet/modules (no modules installed) 
# puppet module uninstall puppetlabs-ntp Notice: Preparing to uninstall ’puppetlabs-ntp’ ... Removed ’puppetlabs-ntp’ (v8.0.0) from /etc/puppetlabs/code/environments/production/modules 

Установка плагина “Remote Execution”

Для возможности удалённого выполнения команд надо добавить плагин “Remote Execution”. Он может устанавливаться как при исходной инсталляции, так и после.

# foreman-installer \
 --enable-foreman-plugin-remote-execution \
 --enable-foreman-proxy-plugin-remote-execution-ssh Preparing installation Done                                              Success!   
* Katello is running at https://foreman.habital.lv   
* To install an additional Foreman proxy on separate machine continue by running:       foreman-proxy-certs-generate --foreman-proxy-fqdn "$FOREMAN_PROXY" --certs-tar "/root/$FOREMAN_PROXY-certs.tar"   The full log is at /var/log/foreman-installer/katello.log 

Настройка ключей SSH

На сервере надо создать пару ключей “SSH”:

# cd /usr/share/foreman-proxy/.ssh 
# sudo -u foreman-proxy ssh-keygen \
 -f ~foreman-proxy/.ssh/id_rsa_foreman_proxy -N ’’

При наличии уже имеющихся ключей их надо будт обновить. В случае, если включен “SELinux”, надо выполнить команду:

# restorecon -RvF ~foreman-proxy/.ssh 

После чего выполнить рестарт “httpd”, “foreman-tasks” и “foreman-proxy”, а также скопировать публичный ключ на удалённые хосты:

# ssh-copy-id -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy.pub \ root@remotehost.habital.lv

Затем следует проверить на “Katello”-сервере в WEB-UI, что добавлены “Dynflow” и “SSH”:


File:8 home eugene Documents Foreman katello foreman smartproxies.pngImage9.png

Рис. 9: SmartProxies


1 Для пробы системы “Katello” использовалась виртуализация VirtualBox. Под систему было выделено 12ГБ ОЗУ и 2 виртуальных процессора.