thulium_drake.foreman
Ansible配置Foreman
此角色提供了一种为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离线安装
如果您希望通过离线安装ISO安装Satellite,请确保已配置来自安装ISO或镜像的RHEL仓库。
内容视图(CV)、复合内容视图(COV)和发布
当此角色用于创建新的内容视图和复合视图时,将应用以下策略:
- 内容视图的名称与其包含的产品名称相同
- 新创建的仓库将在创建后进行同步(异步)
- 新创建的复合内容视图将推广到组织中的所有生命周期环境
这样做的目的是,COV是与客户端相关的唯一内容。基础CV仅存在于库中,不应推广到其他环境。
所有创建的COV都启用了自动发布,并提供了标记新版本和发布的示例剧本。
主机发现
对于主机发现,在DNS中注册以下记录,以便FDI能够报告给正确的服务器:
- 对于Foreman服务器:
_x-foreman._tcp.dev.example.com 600 IN SRV 0 5 443 foreman.dev.example.com
- 对于Foreman智能代理:
_x-foreman._tcp.dev.example.com 600 IN SRV 0 5 8443 fm-proxy.dev.example.com
如果您的环境无法使用这些记录,您也可以将foreman_discovery_image_autodetect设置为false。这将使用Foreman的默认设置,但在使用智能代理时可能会出现问题。
安装智能代理
某些用于智能代理的设置与Foreman服务器共享。为了避免重复设置,建议使用以下库存:
[foreman]
foreman.infra.example.com
[foreman_proxies]
fm-proxy.dev.example.com
[foreman_infra]
[foreman_infra:children]
foreman
foreman_proxies
然后将所有Foreman的全局设置放入foreman_infra的group_vars中,这样服务器和代理都可以使用。然后可以为每个Foreman系统(服务器或代理)创建host_vars,包含实例特定的设置。
限制、错误和解决方法
有时安装程序无法成功完成Foreman服务的配置。除非您运行的Foreman/Satellite版本不支持--detailed-exitcodes,否则已配置Ansible任务来处理这种情况。
当发生问题时,您可以按照以下步骤确定问题所在:
- 手动运行
foreman-installer
,无需参数。这将提供一般的排查方向。 - 检查/var/log/foreman-installer中的日志。
- 重启Foreman服务,有时这将“重置”项,使Foreman能够成功完成安装程序。
有关特定问题,请参见以下内容。
部署、发现和UEFI与BIOS与iPXE的信息
测试显示,某些设置可能会影响主机是否能从网络启动。
我们测试了以下设置:
发现:
KVM
- BIOS:使用此角色配置的默认设置正常工作。也可以与iPXE一起使用。
- UEFI:有点不稳定,您可能会遇到一些尝试从PXE加载FDI时TFTP超时的问题。iPXE正常工作。
HyperV:
- Gen1(BIOS):使用默认配置正常工作。也可以与iPXE一起使用。
- Gen2(UEFI):需要iPXE,必须禁用SecureBoot。
OS部署:
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'
为您的操作系统。
错误:创建操作系统时出错
从主机 -> 操作系统中删除所有操作系统(您无法删除其中的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'