Katello Foreman на OEL7
В данной статье описывается установка и начальные настройки сервера управления пакетами 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
Рис. 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 виртуальных процессора.