Глава 9. Внесение исправлений при помощи Katello

В Главе 8, Управление репозиторием предприятия при помощи Pulp, мы изучили пакет программного обеспечения Pulp и то как он сам по себе приводит к автоматизации, возобновляемости, управляемым изменениям в некоторых настройках предприятия. В этой главе мы выполним на основании этого построение, рассматривая продукт с названием Katello, дополняющим Pulp и сам по себе приводящий не просто к внесению исправлений, но и к законченному управлению инфратсруктурой.

Katello является движимым GUI инструментарием, которые предоставляет современные решения для управления имеющейся корпоративной средой и во многих случаях может считаться преемником продукта Spacewalk, с которым многие уже знакомы. Мы рассмотрим зачем вам выбирать для этой цели Katello и затем продолжим практическими примерами того как собрать некий сервер Katello и осуществлять внесение изменений.

В частности, в этой главе будут рассмотрены следующие вопросы:

  • Введение в Katello

  • Установка сервера Katello

  • Внесение изменений при помощи Katello

Технические требования

минимальными требованиями для осуществления всех практических примеров из этой главы яляется отдельный сервер CentOS с примерно 80ГБ выделенного дискового пространтсва, 2 ядра ЦПУ (виртуальных или физических) и 8 ГБ оперативной памяти. Хотя в этой главе мы будем рассматривать только некое подмножество свойств Katell, следует отметить, что Foremann, в частности (который устанавливается под katello) способен действовать в качестве сервера DHCP, сервера DNS и хоста загрузки PXE, а раз так, при неверных настройках может создавать проблемы при своём развёртывании в промышленных сетевых средах.

По этой причине вам рекомендуется выполнять все упражнения в некой изолированной сетевой среде, пригодной для тестирования. Когда приводится код Ansible, он был разработан и проверен в Ansible 2.8. Для проверок внесения исправлений из Katello вам потребуется некая виртуальная машина CentOS 7.

Все обсуждаемые в этой книге примеры доступны в GitHub.

Введение в Katello

Katello в действительности не является неким отдельным изолированным прдуктом, а вместо этого союзом нескольких продуктов управления инфраструктурой с открытым исходным кодом в одном, образующем единое целое решении управления инфраструктурой. В то время как Pulp исключительно сосредоточен на эффективности, контроллируемом хранении пакетов (и прочего важного содержимого для управления инфраструктурой), Katello совместно привносит следующее:

  • Foreman: Это продукт с открытым исходным кодом, разработанный для обработки собственно предоставления и настроек как физических, так и виртуальных серверов. Foreman включает в себя богатый GUI на веб- основе, API RESTful, а также CLI с названием Hammer, предоставляющие богатые и разнообразные средства управления. Он также предоставляет интеграцию с различными инструментами автоматизации, такими как Puppet, а в последнее время также и с Ansible.

  • Katello: Katello на практике непкий подключаемый модуль для Foreman и он предоставляет дополнительные свойства, такие как богатый контроль версиями содержимого (гораздо больший чем Pulp в отдельности) и управление подписками.

  • Candlepin: Предоставляет управление подпиской программного обеспечения, в частности, интеграцию с такими средами как модель RHSM (Red Hat Subscription Management). Хотя и имеется возможность зеркалировать репозитории Red Hat в Pulp, этот процесс громоздкий и вы рискуете нарушать лицензионные соглашения, так как нет накакой видимости общего числа систем, которыми вы управляете или их взаимодействия с вашими подписками Red Hat.

  • Pulp: Это во многом то же самое программное обеспечение Pulp, которое описывалось в нашей последней главе, теперь интегрированное в полнофункциональный проект.

  • Capsule: Некая служба посредника (прокси) для распространения содержимого и контроля за обновлениями по некой географически разбросанной инфраструктуре, в то время как сопроводение осуществляется с единой консоли управления.

Применение Katello, следовательно, предоставляет определённые преимущества над использованием Pulp в отдельности, причём даже когда вы применяете его исключительно для управления исправлениями (как мы это изучим в данной главе, в разделе Внесение исправлений при помощи Katello, богатые веб GUI, CLI и API сами по себе приводят к интеграции с системами предприятия. Помимо этого, Katello (а более конкретно, Foremann, коьторый его поддерживает) предоставляет множество прочих преимуществ, таких как наличие способности динамически загружать через PXE серверы и контролировать как системы контейнеров, так и системы виртуализации, а также даже способен выступать в качестве серверов DNS и DHCP для вашей сетевой среды. На самом деле, будет справедливо сказать, что комбинация Katello/ Foremann предназначения для того чтобы пребывать в самом сердце вашей сетевой среды, хотя она и будет выполнять лишь те функции, которые вы у неё запросите, а пэтому те, у кого уже имеются инфраструктуры DNS и DHCP не должны опасаться.

Стоит также отметить что Katello также снабжён тесной интеграцией с инструментарием автоматизации Puppet. Собственно первонаяальный проект спонсировался Red Hat, а до того как они приобрели Ansible, Red Hat и Puppet обладали стратегическим альянсом, что приводило к тому что он стал чрезвычайно вовлечённым в сам проект Katello (который доступен на коммерческой основе в качестве Red Hat Satellite 6). Совершив приобретение Ansible, в то время как интеграция с Puppet всё ещё сохранеяется в Katello, поддержка интеграции с Ansible, в особенности через Ansible Tower/ AWX быстро развивалась и теперь целиком от самого пользователя зависит какой именно инструментарий автоматизации он пожелает применять.

На данном этапе заслуживает достойным упоминания почтенный программный инструментарий Spacewalk. Spacewalk это исходящая версия с открытым исходным кодом для Red Hat Satellite 5 и она всё ещё активно разрабатывается и сопровождается. Существует огромная степень совпадений между этими двумя системами с точки зрения функциональности на верхнем уровне; тем не менее, Katello/ Satellite 6 это полное переосмысление данной платформы, а потому между ними не существует чёткого пути обновления. Принимая во внимание то, что вклад Red Hat в программу Spaceworks, скорее всего, снизится, когда они откажутся от своего продукта Satellite 5, мы сосредоточимся в данной книге на Katello.

На самом деле, было бы справедливым сказать, что Katello заслуживает отдельной собственной книги, настолько богат набор его свойствю Нашей целью в данной главе является простое повышение осведомлённости о самой платформе Katello и демонстрация того насколько она сама по себе подходит к исправлениям в некой корпоративной среде. Многие дополнительные свойства, такие как PXE загрузка серверов, требуют понимания тех концепций, которые мы уже рассматривали в данной книге, а следовательно, имеется надежда, что в раз уж вы выберите Katello или Satellite 6 в качестве платформы управления своей инфраструктурой, тогда вы будете способны опираться на предоставляемую данной книгой основу и изучать дополнительные ресурсы, которые помогут вам и дальше.

Давайте начнём с практического рассмотрения в своём следующем разделе того как устанавливать простейший обособленный сервер Katello с тем чтобу у нас появилась возможность его более полного изучения.

Установка сервера Katello

Эта книга является практическим руководством, а потому без лишних слов давайте начнём и настроем свой собственный сервер Katello. Наряду с уже обсуждавшимися преимуществами Katello, ещё одним является собственно упаковка данного продукта. Когда мы настраивали свой сервер Pulp, имелось множество отдельных компонентов, для которых нам приходилось принимать решения (например RabbitMQ или Qpid), а затем выполнялась дополнительная настройка (скажем, транспорт SSL для MongoDB). У Katello даже больше движущих частей, чем у Pulp (раз Pulp рассматривается просто как компонент платформы Katello), а, следовательно, его установка вручную будет большой и сложной задачей.

К счастью, Katello предоставляет некую систему установки, которая снабжает вас поднятой и рабочей системой всего лишь при помощи нескольких команд, которые мы изучим в своём следующем разделе данной главы.

Подготовка к установке Katello

Katello, как и Pulp (на момент написания этих строк) устанавливается только в вариантах Enterprise Linux 7 - а потому вновь мы будем применять самую стабильную версию CentOS 7. Необходимые для Katello требования изменяются время от времени, по мере роста самого продукта и всегда будет не лишним для себя просмотреть документацию по установке прежде чем продолжить. На момент написания этих строк самым последним стабильным выпуском была версия 3.12, а документацию по установке можно было отыскать здесь. Теперь давайте продолжим следующими шагами:

  1. Как и прежде, самое большое внимание мы уделим тому что у нас выделено достаточное дисковое пространство и также, как для обособленной установки Pulp, мы должны убедиться что у нас имеется достатоно выделенного дискового пространства в /var/lib/pulp и /var/lib/mongodb для всех дистрибутивов Linux, которые мы пожелаем зеркалировать. И снова, как и для случая с Pulp, они должны быть отдельными от тома root чтобы обеспечивать, что в случае переполнения не помрёт весь сервер целиком.

  2. После настройки файловой системы, нашим первым этапом является установка необходимых репозиториев с тем, чтобы можно было выгружать все необходимые для установки пакеты - это потребует настройки нескольких внешних репозиториев, которые предоставляют пакеты, не включаемые по умолчанию в CentOS 7. Приводимые далее команды настраивают репозитори и для Katello, Foreman, Puppet 6, а также сам репозиторий EPEL прежде чем на самом деле устанавливать дерево пакетов выпуска Foremann:

    
    $ 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
    $ yum -y install foreman-release-scl
    		
  3. В этом месте рекомендуется привнести вашу базовую систему в целиком современное состояние:

    
    $ yum -y update
    		
  4. Окончательный шаг перед реальной инсталляцией состоит в установке самого пакета Katello и его зависимостей:

    
    $ yum -y install katello
    		
  5. Начиная с данного момента все задачи установки выполняются при помощи команд foreman-installer - имеется гигантское изобилие параметров, которые можно предписывать, а для большинства из них, если вам требуется изменить своё решение, вы можете запускать этот установщик снова с другими флагами и он осуществит такие изменения без какой бы то ни было утраты данных. Для просмотра всех возможных вариантов исполните такую команду:

    
    $ foreman-installer --scenario katello --help
    		
  6. Для сборки нашего демонстрационного сервера установленных по умолчанию значений будет более чем достаточно - тем не менее, если вы изучили имеющиеся параметры, вы могли обнаружить, многие потребуется определять в неких настройках предприятия. Например, сертификаты SSL могут задаваться в момент установки (вместо того чтобы полагаться на самостоятельно подписываемые, которые будут выработаны в противном случае), устанавливаются секретные коды для лежащего в основе транспорта, и так далее. Настоятельно рекомендуется просмотреть получаемый от предыдущих команд вывод самостоятельно при установке неких промышленных настроек. На данный момент мы вызовем такую команду установки чтобы инициировать необходимую инсталляцию:

    
    $ foreman-installer --scenario katello --foreman-initial-admin-password=password --foreman-initial-location='London' --foreman-initial-organization='HandsOn'
    		

    Скорее всего, это простейший из доступных вариантов установки для сервера Katello и он отлично послужит нашим примерам из данной книги. Тем не менее, в некой Промышленной среде, я настоятельно рекомендую чтобы вы изучили более изощрённые свойства установки чтобы обеспечить соответствие сервера вашим требованиям, в особенности, когда принимаются во внимание безопасность и доступность. Это оставляется вам в качестве упражнения для исследования.

    [Совет]Совет

    Обратите внимание, что в данном сценарии наш установщик проверяет определённые предварительные требования, в том числе что необходимые прямой и обратный поиск DNS для разрешения имён нашего сервера Katello корректны и что машина обладает доступными 8 ГБ ОЗУ. Когда эти предварительные требования не выполнены, данный установщик отклонит дальнейшее выполнение.

  7. При условии, что все предыдущие требования выполнены, установка Katello должна завершиться, а после её окончания вам должен предстать экран, аналогичный показанному ниже снимку экрана с подробными сведениями о входе в систему, а также прочей информацией, такой как то, как настраивать сервер посредника (прокси) для другой сетевой среды, если он требуется:

     

    Рисунок 9-1



  8. Единственной не выполняемой установщиком задачей является нстройка локального межсетевого экрана в самой машине CentOS 7. К счастью, в составе Katello существует определение службы FirewallD, которое охватывает все службы, которые скорее всего потребуются - он получил своё название от коммерческого продукта Red Hat Satellite 6 и может быть включён с помощью таких команд от имени root:

    
    $ firewall-cmd --permanent --zone=public --add-service=RH-Satellite-6
    $ firewall-cmd --reload
    		
  9. После завершения этих шагов станет возможной загрузка веб интерфейса Katello и регистрация с отображенными сведениями:

     

    Рисунок 9-2



Технически говоря, Katello это модуль, который располагается поверх Foremann и предоставляет важные свойства, с которыми мы и будем работать позднее в этой главе - например, некий веб UI для системы управления репозиториями Pulp также устанавливается за сценой. Следовательно, выделяется фирменный стиль самого кода Foreman и вы обнаружите, что это название часто встречается. После входа в систему, вам должна быть представлена страница панели инструментов по умолчанию, и мы сможем приступить к настройке некоторых репозиториев для целей правки, которые мы начнём обсуждать в своём следующем разделе.

Внесение исправлений при помощи Katello

Поскольку Katello строится вокруг уже изучавшихся нами технологий, таких как Pulp, он несёт с собой те же самые ограничения, которые мы уже видели в отношении пакетов DEB. Например, хотя репозитории пакетов DEB могут запросто собираться в Katello, причём даже с импортом надлежащих общедоступных ключей GPG, получаемые в результате общедоступные репозитории не снабжаются какими бы то ни было файлами InRelease или Release.gpg, а потому обязаны быть доверенными в неявном виде для всех применяющих их хостов. Аналогично, хотя и имеется доступной полная инфраструктура управления подписками для хостов на основе RPM, состоящая из инструментария subscription-manager и собственно агента Потребителя Pulp , опять же, для хостов DEB нет таких эквивалентов, а потому их следует настраивать вручную.

Хотя и будет возможной настройка хостов на основании RPM с применеием полностью встроенных технологий, аналоги на основе DEB придётся настраивать с помощью Ansible, в точности как и для Pulp, а учитывая важность универсальности по предприятиям, предлагается настройка всех серверов аналогичным образом вместо того чтобы применять два противопоставляемых решений для различных видов хостов.

Одним из основных привносимых Katello преимуществ по сравнению с Pulp, помимо веб интерфейса пользователя, является его понятие сред жизненного цикла. Данное свойство предполагает, что большая часть дел будут для различных целей отделять технологии сред. К примеру, ваше предприятие для разработок будет обладать средой Development, а также для проверок пакетов технологических новинок, далее некую среду Testing для проверки выпусков и, наконец, среду Production, в которой присутствуют наиболее стабильных сборок и запуска служб для потребителей и клиентов.

Теперь давайте изучим практические примеры сборок репозиториев в Katello для целей внесения исправлений.

Исправление при помощи Katello на основе RPM

Давайте рассмотрим применение Katello для построения репозиториев под нашу систему CentOS 7 по множеству сред жизненного цикла. Поскольку Katello поддерживает удостоверение RPM на основании ключей, наша первая задача состоит в установке необходимого ключа GPG для соответствующих RPM. Его копия свободно выгружается из проекта CentOS и может быть найден для большинства систем CentOS 7 в /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7:

  1. Для добавления этого общедоступного ключа в katello переместитесь в панели меню к Content | Content Credentials. Затем кликните по Create Content Credential:

     

    Рисунок 9-3



  2. Предоставьте этому ключу подходящее название и либо загрузите этот ключ, либо скопируйте и вставьте его содержимое в имеющийся на данном экране блок текста. По завершению кликните Save:

     

    Рисунок 9-4



  3. Затем мы создадим в Katello некий продукт, который является логической группировкой репозиториев, а это невероятно полезно для создания управляемых масштабных конфигураций. Для примера нашего случая, мы будем выполнять зеркалирование только репозитория ОС CentOS 7, но когда вы приступите к зеркалированию необходимых обновлений и прочих связанных с ними репозиториев, может оказаться существенным группировать их воедино под отдельным продуктом. Переместитесь в панели меню к Content | Products и затем кликните по кнопке Create Product:

     

    Рисунок 9-5



  4. Теперь задайте определение этого продукта на верхнем уровне - для некого простого зеркала репозитория CentOS нам просто требуется создать Name и Label и привязать тот ключ GPG, который мы загрузили ранее. Для исходящих репозиториев имеются различные выарианты SSL, которые снабжены удостоверением SSL двумя путями. Обратите внимание, что все продукты могут выполнять синхронизацию в соответствии с неким Sync Plan (по существу, расписанием) - тем не менее, для данного примера мы просто осуществим синхронизацию вручную. Ваш экран после завершения должен выглядеть аналогично приводимому ниже снимку экрана:

     

    Рисунок 9-6



  5. По окончанию определения вашего продукта на верхнем уровне, мы теперь можем создать под ним свой собственный репозиторий Cent OS, кликнув по имеющейся кнопке New Repository:

     

    Рисунок 9-7



  6. В предоставленном экране запоните подробности данного репозитория. Настройте поле Type на значение yum и введите URL своего исходящего репозитория в надлежащем поле (он аналогичен значению параметра --feed при использовании Pulp из командной строки):

     

    Рисунок 9-8



  7. Отмотав вниз тот же самый экран, убедитесь что отмечено Publish via HTTP и ассоцииорванн загруженный ранее ключ GPG, как это отображено на снимке экрана ниже:

     

    Рисунок 9-9



  8. Для данного примера мы немедленно пхнём синхронизацию этого репозитория, поместив напротив него в таблице галочку, а затем кликнув по кнопке Sync Now, как это отображается на снимке экрана далее:

     

    Рисунок 9-10



  9. Немедленно начинается в фоновом режиме необходимая синхронизация - вы всегда можете проверить её процесс (а также запускать последующие синхронизации вручную), перемещаясь к странице Content | Sync Status:

     

    Рисунок 9-11



  10. По завершению данного процесса синхронизации, давайте создадим какие- то среды жизненного цикла.

    [Замечание]Замечание

    Обратите внимание, что вы можете обладать разрозненными продуктами и отдельными репозиториями в них, причём среды жизненного цикла глобальны и применяются к ним всем. В контексте предприятия это существенно, поскольку скорее всего вы будете иметь среды Development, Test и Production вне зависимости применяемых вами лежащих в основе технологий.

    В панели меню перейдите к Content | Lifecycle Environments Paths, а потом кликните по соответствующей кнопке Create Environment Path:

     

    Рисунок 9-12



  11. Создайте некую изначальную среду с названием Development следуя инструкциям приводимого ниже снимка экрана. Вам должен быть представлен экран, подобный показанному далее:

     

    Рисунок 9-13



  12. Теперь мы добавим среды Testing и Production чтобы наш пример предприятия обладал логическим потоком сквозь эти три среды. Кликните по кнопке Add New Environment и затем дабавьте по очереди каждую из них, убедившись что они обладают верными настройками Prior Environment для сопровождения верной последовательности. Приводимый далее снимок экрана отображает пример создания окружения Productiont, в качестве шага, следующего за Testing:

     

    Рисунок 9-14



  13. Окончательно настройка должна выглядеть подобно такому снимку экрана:

     

    Рисунок 9-15



По завершению нашего процесса синхронизации и создания нами сред, мы способны продолжить завершающую часть нашей настройки репозитория RPM - Content Views. В Katello некое представление содержимого это определяемое пользователем слияние различных форм содержимого, которые могут поглощаться, снабжаться контролем версий и распределяться на определённую среду. Лучше всего это пояснить конкретным примером.

Когда мы применяли Pulp сам по себе, мы создали некий репозиторий с названием centos7-07aug19. Когда мы пожелали выполнить проверку какого- то обновления днём спустя, мы далее создали какой- то второй репозиторий с названием centos7-08aug19. Хотя это и работало, и мы показали как Pulp выполняет дедупликацию пакетов и сберегает дисковое пространство при аккуратной публикации по отдельности обособленных репозиториев, вы быстро сможете найти этот механизм управления содержимым становящимся громоздким, в особенности в масштабах предприятия, с многочисленными представляющими ценность для управления средами и какими- то месяцами (или годами).

Именно здесь на помощь приходят Content Views (Представления содержимого). Хотя у нас и имеются здесь репозитории ОС CentOS 7, допустим, что мы осуществили зеркалирование одного из обновлений. Обладая Content Views, нам не требуется создавать некий новый продукт или репозиторий для проверки наших обновлений. Вместо этого надлежащий рабочий поток на неком верхнем уровне выглядит так:

  1. Создайте некий продукт и надлежащий репозиторий и осуществите синхронизацию (скажем, на 7 августа 2019).

  2. Создайте какое- то представление содержимого созданного на предыдущем шаге репозитория.

  3. Опубликуйте это представление содержимого за 7 августа 2019 - это создаст некий снимок с номером версии в данном репозитории для данной даты (например, версию 1.0).

  4. Предложите это представление содержимого для своей среды Development. Выполните проверку, а удовлетворившись ею, предложите его для тестирования. Повторите данный этап до достижения Production. Это всё может производиться асинхронно последующим этапам.

  5. 8 августа выполните другую синхронизацию для того репозитория, который мы создали на шаге 1 (если бы у вас имелась автоматически выполняющаяся по ночам синхронизация в соответствии с Sync Plan, она бы уже была у вас на утро 8-го).

  6. Опубликуйте соответствующее представление содержимого за 8 августа 2019 вслед за выполнением синхронизации. Это создаст версию +1 надлежащего репозитория для этой даты (например, версию 2.0).

  7. Теперь, на данном шаге, у вас в канале CentOS 7 имеются снимки на обе даты, 7 и 8 августа. Тем не менее, все серверы будут продолжать выполнять обновления из канала за 7 августа.

  8. Предложите своей среде Development версию 2.0. Все машины из среды Development теперь получают (без каких бы то ни было необходимых для них настроек) соответствующий снимок репозитория за 8 августа.

  9. Ваши среды Testing и Production, которым не предлагается данная версия, всё ещё будут получать пакеты из снимка за 7 августа.

Таким образом, Katello осуществляет упрощение управления множеством версий (снимков) репозиториев для различных сред, в качестве бонуса добавляя то, что соответствующая конфигурация для каждого из хостов всегда остаётся одной и той же, избавляя от потребности активной доставки сведений о новом репозитории через Ansible, как мы это делали в случае м Pulp.

Давайте проследуем этими шагами по некому примеру своей предыдущей демонстрации среды Katello:

  1. Прежде всего создвайте новое представление содержимого для нашего предыдущего процесса.

  2. Перейдите в Content | Content Views и кликните по соответствующей кнопке Create New View:

     

    Рисунок 9-16



  3. Для наших целей новое представление содержимого потребует лишь Name и Label, как это отбражено на снимке экрана ниже:

     

    Рисунок 9-17



  4. После того как вы кликните по кнопке Save, перейдите к закладке Yum Content внутри своего нового представления содержимого и убедитесь что выбрана необходимая вложенная закладка Add. Пометьте галочкой тот репозиторий, который вы желаете добавить в своё представление содержимого (в нашем образце демонстрации мы имеем только один репозиторий CentOS 7, пэтому выберите его) и кликните по кнопке Add Repositories:

     

    Рисунок 9-18



  5. Теперь проследуйте в закладку Versions и кликните по кнопке Publish New Version. Это создаст предполагаемую версию за 7 августа, которую мы обсуждали ранее. Обратите внимание на операции Publish и Promote, требующие большого количества ввода/ вывода и того что они будут очень медленными, в особенности при медленных механически создаваемых в основе массивах хранения. Хотя и нет никаких требований для производительности ввода/ вывода ни для Katello, ни для Red Hat Satelitte 6, они лучше выполняются на хранилищах на флеш- памяти или, когда они не доступны, на быстрых шпиндельных хранилищах, которые не используются совместно с прочими устройствами. Приводимый далее снимок экрана отображает наджатие кнопки Publish New Version для представления содержимого CentOS7-CV:

     

    Рисунок 9-19



  6. Сама операция Publish является асинхронной и в данном экране вы можете отслеживать её выполнение, хотя если вы и покините его, она всё ещё продолжит своё завершение. Вы можете наблюдать, что она автоматически пронумеруется в Version 1.0 - именно так выглядела нумерация на момент написания данных строк, причём была автоматической и вам не предлагалось никаких вариантов нумерации версий. Тем не менее, вы можете добавить замечания для каждой из публикуемых версий, что может быть невероятно полезным при отслеживания того что собой представляет какая версия и зачем она была создана. Настоятельно рекомендуем их делать. Приводимый ниже снимок экрана отображает продвижение предложения нашей среды Version 1.0:

     

    Рисунок 9-20



  7. По завершению операции Publish, наша кнопка Promote (на предыдущем снимке отображаемая серой) снова станет активной. Вы обратите внимание, что эта версия автоматически будет опубликована в среде Library- в это окружение всегда автоматически предлагается самая последняя версия всех представлений содержимого.

  8. Для имитации обсуждавшегося нами ранее снимка на 8 августа, давайте осуществим вторую публикацию этого представления содержимого. Это воспроизведёт среду Version 2.0, которая далее может быть предложена в вашей среде Development через клик по кнопке Promote и выбор требуемой среды. Приводимый далее снимок экрана отображает две версии, причём Version 1.0 доступна только в среде Production, а версия Version 2.0 доступна в среде Development (а также в автоматически собираемой Library). Обратите внимание на то, что для среды Testing мы не предлагали никаких версий, а потому для машин из окружения Testing не доступны никакие пакеты. Вам следует выполнять продвижение для всех сред, которым требуются пакеты - приводимый ниже снимок экрана отображает две имеющиесы опубликованные нами версии и то, какие среды ассоциируются с какими версиями:

     

    Рисунок 9-21



  9. На следующем снимке экрана для справки приводится соответствующий процесс продвижения - именно таким образом мы предлагаем своей среде Production назначение Version 2.0:

     

    Рисунок 9-22



Единственным остающимся здесь кусочком общей мозаики является настройка ваших клиентов на получение пакетов с данного сервера Katello. В данном случае мы выполним это простой интеграцией вручную, поскольку этот метод является общим как для пакетов на основе DEB-, таки и для RPM- пакетов, а следовательно поддерживает универсальный подход для всего предприятия. Тот процесс распространения пакетов RPM из Katello, который использует инструментарий subscription-manager и агента Katello хорошо документирован и оставляется вам в качестве упражнения.

[Совет]Совет

Хорошим местом для начала является официальная документация Ключей активации Katello.

Для применения того содержимого, что мы опубликовали в данном примере, машинам из среды Development следовало бы обладать файлом репозитория с содержимым, подобным такому:


[centos-os]
name=CentOS-os
baseurl=http://katello.example.com/pulp/repos/HandsOn/Development/CentOS7-CV/custom/CentOS7/CentOS7-os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 	   

Ваш базовый URL, естественно, будет иным - по крайней мере, имя вашего хоста Katello будет отличаться. Публикуемые и продвигаемые в Katello репозитории на основе RPM обычно доступны по такому пути:


http://KATELLOHOSTNAME/pulp/repos/ORGNAME/LIFECYCLENAME/CONTENTVIEWNAME/custom/PRODUCT/REPO
 	   

Здесь у нас имеется следующее:

  • KATELLOHOSTNAME: Это имя хоста вашего сервера Katello (либо ближайшего Capsule/Proxy, когда вы применяете их)

  • ORGNAME: Название той организации, в которой обитает ваше Content View - мы определили своё как HandsOn в процессе данной установки.

  • LIFECYCLENAME: Соответствующее название Lifecycle Environment, к примеру, Development

  • CONTENTVIEWNAME: то название, которым вы снабдили своё Content View

  • PRODUCT: Название, которое вы присвоили своему Product

  • REPO: То название, которое вы дали для своего репозитория внутри данного Product

Это превращает данный URL в полностю предсказуемый и просто развёртываемый в целевых машинах с помощью Ansible, в точности как мы это делали в своей предыдущей главе в отношении Pulp. Обратите внимание на то, что доступ к репозиториям из Katello через HTTPS потребует надлежащей настройки сертификатов SSL для подтверждения удостоверения, что выходит за рамки данной главы - вместо этого мы просто пользуемся HTTP.

Поскольку названия сред жизненного цикла остаются неизменными, вне зависимости от того как мы осущестляем синхронизацию, публикацию или продвижение некой среды, значение URL репозитория, как это показано ранее, остаётся неизменным, а следовательно нам никогда не требуется выполнять настройку работы клиента, даже когда публикуется некий новый снимок репозитория. Это существенное преимущество относительно Pulp, где нам прихлжилось выполнять активную доставку некой новой конфигурации при помощи Ansibleпри каждом создании некой новой версии.

После того как была создана показанным ранее способом новая конфигурация, вы можете вносить исправления в свои системы обычным способом. Это можно делать так:

  • Вручную при помощи таких команд как yum update для каждой машины

  • Централизованно при помощи некого плейбука Ansible

  • Из соответствующего интерфейса пользователя Katello, когда в ваших целевых машинах установлен необходимый пакет katello-agent

Принимая во внимание разнообразие природы этих доступных инструментов, мы бы не хотели вдавваться в их подробности в данной главе, а вместо этого оставляем вам в качестве самостоятельного упражнения. Опыт учит нас, что централизованное развёртывание при помощи Ansible является наиболее надёжным способом, но мы поощряем вас к экспериментам и поиску пути, который лучше всего подходит именно вам.

Это завершает наш краткий тур по внесению исправлений на основе RPM при помощи Katello, хотя мы и надеемся, что он показал вам достаточно чтобы дать вам ощущение того что это может представлять ценность для вашего предприятия. В своём следующем разделе мы рассмотрим данный процесс внесения исправлений при помощи Katello в системы на базе DEB.

Исправление при помощи Katello на основе DEB

Внесение посредством Katello исправлений в системы на основе DEB, подобные Ubuntu во многом аналогично процессу с RPM, с сохранением некоторых изменений в применяемом GUI и с ограничениями относительно подписывания пакетов, обсуждавшихся ранее в этой главе, в разделе Внесение исправлений при помощи Katello. Давайте быстро теперь пройдёмся по примеру для сервера Ubuntu 18.04:

  1. Для начала создадим некий новый продукт своего репозитория пакетов Ubuntu:

     

    Рисунок 9-23



    Важно здесь постулировать, что импорт установленного общедоступного ключа подписи Ubuntu не оказывает влияния на публикуемый репозиторий, а потому может быть определён или игнорирован по вашему предпочтению. Получаемый в результате репозиторий не будет обладать файлом подписи Release, а потому должен рассматриваться как имеющий довер ие в неявном виде.

  2. После того как наш продукт сохранён, создайте новый репозиторий внутри него для помещения необходимых пакетов - создание такого зеркала пакетов требует тех же самых параметров, которые мы применяли в командной строке для Pulp, как это отображается на приводимом далее снимке экрана:

     

    Рисунок 9-24



    Выполните синхронизацию вновь созданного репозитория, как и ранее, и убедитесь что она осуществилась успешно, перед тем как продолжить созданием необходимого представления содержимого.

  3. После этого создайте обособленное представление содержимого для нашего содержимого Ubuntu - приводимый далее снимок экрана показывает прогресс создания представления содержимого:

     

    Рисунок 9-25



  4. На этот раз перейдите в закладку Apt Repositories и выберите подходящие репозитории Ubuntu - и опять, для нашего простого примера в данном случае, имеется лишь один и наш следующий снимок экрана отображает этот процесс для нашего единственного репозитория Ubuntu 18.04 base, добавляемого к созданному представлению содержимого Ubuntu1804-CV:

     

    Рисунок 9-26



  5. Начиная с этого момента наше новое представление содержимого опубликовано и представлено в точности как это выполнялось и для его собрата на основании RPM. Получаемый в результате репозиторий снова доступен по предсказуемому URL, на этот раз в соответствии с таким шаблоном:

    
    http://KATELLOHOSTNAME/pulp/deb/ORGNAME/LIFECYCLENAME/CONTENTVIEWNAME/custom/PRODUCT/REPO
     	   

Как вы можете видеть, он почти идентичен соответствующему примеру для основанного на RPM шаблона, причём с сохранением начального пути. Некая подходящая точка входа для /etc/apt/sources.list с установлением соответсвия только что созданному нами в данном примере представлению содержимого может выглядеть примерно так:


deb [trusted=yes] http://katello.example.com/pulp/deb/HandsOn/Development/Ubuntu1804-CV/custom/Ubuntu_18_04_Server/Ubuntu_18_04_base/ bionic main
 	   

Как и ранее, этот URL остаётся постоянным вне зависимости от того когда мы осуществляем синхронизацию, публикацию или представление данного представления содержимого, а потому от него требуется лишь одноразового развёртывания в целевых системах чтобы обеспечить приём ими пакетов от установленного сервера Katello. И опять, вы можете выполнять такое внесение изменений вручную посредством команд apt update и apt upgrade в сових оконечных системах, либо централизованно посредством Ansible.

[Замечание]Замечание

Обратите внимание, что на момент написания данных строк не существует накакого пакета katello-agent для систем на основании Debian/ Ubuntu.

В этой главе мы едва коснулись вего того, что способен выполнять Katello, на даже этот пример демонстрирует насколько он эффективен для управления внесением корпоративных изменений. Настоятельно рекомендуется изучить этот вопрос подробнее, чтобы определять отвечает ли он более широким потребностям вашей инфраструктуры.

Следует подчеркнуть, что в данной главе мы на самом деле лишь прикоснулись к тому что может выполнять Katello - однако мы надеемся что выполненная нами работа достаточно снабдит вас для того чтобы принимать обоснованное решение о том, следует ли продолжать с этой невероятно мощной и универсальной платформой в качестве части вашей архитектуры Linux.

Выводы

В действительности Katello представляет собой объединение нескольких невероятно мощных инструментов управления инфраструктурой с открытым исходным кодом, включая Pulp, который мы уже изучали. Он невероятно хорошо справляется с управлением внесения исправлений в установках инфраструктуры, предлагая многочисленные преимущества над обособленной установкой Pulp и способен обрабатывать большинство сборок и задач сопровождения с единой панели - больше чем мы имели ранее для покрываемого пространства!

В этой главе вы получили понимание того чем на практике является сам проект Katello и из каких компонентов он составляется. Далее вы изучили как осуществлять обособленную установку Katello для целей внесения исправлений, а заетем того, как собирать репозитории, подходящие для внесения исправлений в дистрибутивы Linux как на основании RPM, так и на базе DEB, а также основы интеграции этих двух операционных систем с представлениями содержимого Katello.

В своей следующей главе мы изучим как может действенно применяться Ansible в неком предприятии для управления пользователями.

Вопросы

  1. Зачем вы можете пожелать применять Katello вместо того, чтобы использовать продукт, подобный Pulp?

  2. Что представляет из себя Продукт в терминах Katello?

  3. Чем является в Katello представление содержимого?

  4. Способен ли Foreman (лежащий в основе Katello) содействовать PXE загрузке серверов голого железа?

  5. Как бы вы применяли среды жизненного цикла в Katello?

  6. В чём состоит основное отличие между операциями Publish и Promote в неком представлении содержимого?

  7. Когда вы можете пожелать выполнять некую операцию Promote предварительно опубликованного представления содержимого?

Последующее чтение

Для бо́льшего понимания Katello обратитесь, пожалуйста, к официальной документации Red Hat Satellite 6, ибо он представляет собой коммерческую версию Katello и для данной платформы обычно написана вся документация - тем не менее их свойства и структура меню почти идентичны.