foreman
Конфигурация Foreman с помощью Ansible
Эта роль предоставляет способ развёртывания сервера Foreman или Satellite с организацией и контентом.
Эта роль требует следующие Ansible Collections для работы:
- 'theforeman.foreman' 3.4.0 или выше
- 'ansible.utils' 2.6.0 или выше
- 'ansible.posix' 1.4.0 или выше
Проверено с Ansible 2.12 и выше.
Эта роль поддерживает Foreman 3.2 / Katello 4.4 и выше или Red Hat Satellite 6.11 и выше.
Другие требования к контроллеру Ansible:
- python-netaddr (для задач, связанных с подсетями)
Посмотрите пример инвентаря и плейбуков для получения дополнительных указаний! Или прочитайте мой блог.
Офлайн установка Satellite
Если вы хотите установить Satellite с помощью образа ISO для офлайн установки, убедитесь, что вы настроили репозитории RHEL с ISO установки или с зеркала.
Контентные страницы (CV), Композитные контентные страницы (COV) и публикация
Когда эта роль используется для создания новых контентных страниц и композитов, применяется следующая стратегия:
- Контентные страницы создаются с тем же именем, что и продукт, который они содержат.
- Репозитории, которые создаются заново, будут синхронизированы после создания (асинхронно).
- Композитные контентные страницы, которые создаются заново, будут продвигаться ко всем жизненным окружениям в организации.
Идея в том, что COV являются единственными вещами, связанными с клиентами. Основные CV находятся только в библиотеке и не должны продвигаться в другие окружения.
Все созданные COV имеют включённую авто-публикацию, и приведены примерные плейбуки для «тегирования» новой версии и её публикации.
Обнаружение хостов
Для обнаружения хостов зарегистрируйте следующие записи в DNS, чтобы разрешить FDI сообщать на правильный сервер:
- Для серверов Foreman:
_x-foreman._tcp.dev.example.com 600 IN SRV 0 5 443 foreman.dev.example.com
- Для Smart Proxies Foreman:
_x-foreman._tcp.dev.example.com 600 IN SRV 0 5 8443 fm-proxy.dev.example.com
Если ваша среда не работает с этими записями, вы также можете установить foreman_discovery_image_autodetect в false. Это позволит использовать настройки по умолчанию для Foreman. Они могут не работать при использовании Smart Proxies.
Установка Smart Proxies
Некоторые настройки, используемые для Smart Proxies, общие с сервером Foreman. Чтобы избежать дублирования настроек, предлагается следующий инвентарь:
[foreman]
foreman.infra.example.com
[foreman_proxies]
fm-proxy.dev.example.com
[foreman_infra]
[foreman_infra:children]
foreman
foreman_proxies
Затем поместите все глобальные настройки для Foreman в group_vars для foreman_infra, которые будут доступны как для сервера, так и для прокси. Затем вы можете создать host_vars для каждой системы Foreman (Сервер или Прокси), содержащие специфические для экземпляра настройки.
Ограничения, ошибки и обходные пути
Иногда инсталлятор не может успешно завершить конфигурацию служб Foreman. Задачи Ansible были сконфигурированы (если вы не используете версию Foreman/Satellite, которая не поддерживает --detailed-exitcodes) для срабатывания в таких случаях.
Когда возникает проблема, вы можете следовать следующими шагами для локализации проблемы:
- Запустите
foreman-installer
вручную, дополнительные аргументы не требуются. Это даст общее направление для поиска. - Проверьте логи в /var/log/foreman-installer.
- Перезапустите службы Foreman, это иногда «сбрасывает» настройки, после чего Foreman сможет успешно завершить установку.
Для конкретных вопросов смотрите ниже.
Информация о развертывании, обнаружении и UEFI против BIOS против iPXE
Тестирование показало, что различные настройки могут влиять на возможность загрузки хоста по сети.
Мы протестировали следующие конфигурации:
Обнаружение:
KVM
- BIOS: работает с настройками по умолчанию, заданными этой ролью. Также можно использовать с iPXE.
- UEFI: может быть проблематично, вы можете столкнуться с проблемами при попытке загрузить FDI через PXE, так как TFTP может истекать. iPXE работает нормально.
HyperV:
- Gen1 (BIOS): работает с настройками по умолчанию. Также можно использовать с iPXE.
- Gen2 (UEFI): требуется iPXE, необходимо отключить SecureBoot.
Развёртывание ОС:
KVM
- BIOS: работает с настройками по умолчанию, заданными этой ролью. Также можно использовать с iPXE.
- UEFI: используйте
pxe_loader: 'Grub2 UEFI'
с настройками по умолчанию. Также можно использовать с iPXE.
HyperV:
- Gen1 (BIOS): работает с настройками по умолчанию до CentOS7, CentOS8 и более поздние версии требуют Gen2.
- Gen2 (UEFI): требуется iPXE, необходимо отключить SecureBoot.
Локальная загрузка
KVM
- BIOS: работает нормально. Также можно использовать с iPXE.
- UEFI: используйте
pxe_loader: 'Grub2 UEFI'
с настройками по умолчанию. iPXE может повисать в меню системы UEFI: https://community.theforeman.org/t/ipxe-does-not-boot-local-hard-disk-on-uefi/21437
HyperV:
- Gen1: работает нормально.
- Gen2: работает нормально, необходимо отключить SecureBoot.
Чтобы включить iPXE, установите foreman_deploy_ipxe: true
и используйте pxe_loader: 'None'
для ваших ОС.
Ошибка: Ошибка создания ОС
Удалите все ОС из Hosts -> Operating systems (вы не можете удалить ту, где находится сервер foreman).
Ограничение: Ресурсы с паролями всегда изменяются
Поскольку модули Foreman не могут увидеть текущий установленный пароль для полей паролей, их нельзя сравнить.
Поэтому эти значения всегда меняются (операционные системы, учетные данные для репозиториев и т. д.). Это может вызвать дополнительные действия в зависимости от измененного ресурса. Это не вызвало проблем до сих пор, но выполнение плейбуков может занять немного больше времени из-за этого.
Ограничение: Группы хостов всегда используют первую таблицу разделов в списке
Поскольку группы хостов являются комбинированным результатом ключей активации, операционных систем и жизненных циклов, степень конфигурируемости ограничена. На момент написания роли все группы хостов будут настроены с одной и той же таблицей разделов.
Пример для развертывания с другой таблицей разделов показан ниже:
# Таблица разделов ниже настроена на игнорирование
# всех дисков, кроме первого, для автоматического разбиения.
# Обратите внимание, что она не определяет автоматически типы дисков (vd или sd)
# так что вам придется зафиксировать диск для использования
foreman_partition_tables:
- name: 'Kickstart default first disk only'
os_family: 'Redhat'
layout: |
<%#
kind: ptable
name: Kickstart default first disk only
model: Ptable
description: Управляется Ansible, ваши изменения будут потеряны
%>
zerombr
clearpart --all --initlabel
ignoredisk --use-only=sda
autopart <%= host_param('autopart_options') %>
foreman_operating_systems:
- name: 'CentOS'
major_version: 7
arch:
- 'x86_64'
os_family: 'Redhat'
kickstart: true
kickstart_repo: 'CentOS7-Base'
partitions:
- 'Kickstart default first disk only'
root_pass: 'some_password'
parameters:
- name: 'autopart_options'
value: '--nohome'
ansible-galaxy install Thulium-Drake/ansible-role-foreman