mariuszczyz.centos_pxe
CentOS 7/8 和 Fedora PXE 启动无人值守操作系统安装与配置角色
此角色配置了一个本地 PXE 启动环境的基本框架,允许进行无人值守的 CentOS 7、CentOS 8、Fedora 31 等操作系统的安装(带自定义配置)。
它安装和配置以下内容:
安装 ISO 文件和本地 RPM 仓库
- 如果本地不存在安装 ISO 文件,将会下载并挂载。一旦挂载,其内容将用于生成一个本地 RPM 镜像,在安装过程中使用。该镜像也可以用于后续的额外 RPM 包安装。
TFTP 服务器和 PXE
- 我们需要这个来允许网络客户端通过 PXE 启动。
此角色预配置了 PXE 服务,具体如下:
- 从本地驱动器启动。不要安装任何内容
- 手动用图形界面安装 Fedora 31
- 手动用图形界面安装 CentOS 7
- 手动用图形界面安装 CentOS 8
- 基本无人值守 Fedora 31 文本模式 Kickstart 安装
- 基本无人值守 CentOS 7 文本模式 Kickstart 安装
- 基本无人值守 CentOS 8 文本模式 Kickstart 安装
它还安装了客户端正常启动所需的所有内核镜像。
Apache Web 服务器
- 经过极少的预配置后,将用于创建一个本地可访问的服务器生成的所有 RPM 包的目录列表。
本地镜像将模仿公开可用镜像的相同目录结构。
它们可以在本地访问: (用自己的地址替换 hostname.localdomain)
- http://hostname.localdomain/fedora31
- http://hostname.localdomain/centos7
- http://hostname.localdomain/centos8
Kickstart 文件
- 此角色从模板中部署 CentOS 7/8 和 Fedora 31 的无人值守安装 Anaconda Kickstart 文件。它们被放置在 Web 服务器根目录的 kickstart 目录中,所有客户端都可以访问。
额外说明
在 VirtualBox 或 KVM 中创建新虚拟机时,至少分配 2 GB 的 RAM 给访客。如果使用的内存少于这个,CentOS 安装过程很可能会失败。安装成功后,可以降低 RAM 的数量。
建议最终用户审查和自定义 Kickstart 配置模板。在当前形式下,它们非常简单。所有配置都假设以下内容:
- 自动分区与 LVM
- SELinux 关闭
- 防火墙关闭
- 软件选择最少
- 允许 root 登录
- 一个非 root 管理员用户
- DHCP 客户端网络配置
尽量减少使用 Anaconda 和 Kickstart 安装的操作,旨在依赖后期的配置自定义。
需求
Apache
需要标准的 Apache Web 服务器安装,以便 Kickstart 过程可以在本地访问安装包。
可以从 Galaxy 安装简单的 Apache 角色:
ansible-galaxy install mariuszczyz.centos_apache
DHCPd
需要有效的本地 DHCP 服务。
或者,可以使用此角色在 PXE 启动服务器上设置专门的 DHCP:CentOS & Fedora DHCP 服务器安装与配置 Ansible 角色。
操作系统安装 ISO 镜像
此角色假设操作系统安装 ISO 镜像位于 /isos/
。可以保持不变或在 defaults/main.yml
中进行更改。但是,必须在运行此角色之前下载 ISO 镜像。否则,它将无法访问所有需要的文件,以正确设置预启动环境。下载 ISO 的任务故意被排除在此角色之外。
Kickstart 文件
需要为 Kickstart 安装文件做的最小更改:
rootpw --iscrypted PASSWORD_HASH
- root 密码哈希
创建 Kickstart root 密码哈希的说明
在 CLI 上运行此命令:openssl passwd -6
可用的算法选项:
-6 基于 SHA512 的密码算法
-5 基于 SHA256 的密码算法
-apr1 基于 MD5 的密码算法,Apache 变体
-1 基于 MD5 的密码算法
-aixmd5 AIX 的基于 MD5 的密码算法
-crypt 标准 Unix 密码算法(默认)
它将提示输入密码并输出哈希:
注意:以下不是实际密码
Password:
Verifying - Password:
$6$gdGbs42fZoKUVwQH$eY2nId.oONxK9MneuM58Vg2NPEuftngWmwfK09YW4DQLs3Hcq5F5HEohDEcM.Ci3p8gQrVuygTfScim7MY6QI1
其余设置可以根据需要自定义,例如分区、时区、额外包等。
角色变量
变量 | 说明 | 示例 |
---|---|---|
ISOS_PATH | 存储本地 ISO 安装镜像的目录 | /isos |
NAME | 操作系统名称 | fedora31 |
ISO_LOCATION | ISO 镜像的完整路径 | /isos/CentOS-7-x86_64-Everything-1908.iso |
MOUNT_POINT | ISO 镜像在本地文件系统的挂载路径 | /var/www/centos7 |
KICKSTART_HASHED_ROOT_PASSWORD | Kickstart 哈希的 root 密码。使用 "pwkickstart" 或 "openssl passwd -6" 生成 | bEzYf1S49$yu |
NON_ROOT_USER_NAME | 新系统中要创建的非 root 管理员用户账户 | mariusz |
NON_ROOT_USER_PASSWORD | Kickstart 哈希的用户密码。使用 "pwkickstart" 或 "openssl passwd -6" 生成 | bEzYf1S49$yu |
TIMEZONE | 本地时区 | America/Chicago |
NTP_SERVERS | 网络时间服务器。可以是本地或公共。 | ntp.localdomain |
FEDORA_HOSTNAME | 新 Fedora 服务器的默认主机名 | fedora31.localdomain |
FEDORA_NETWORK_INSTALLATION_URL | Anaconda 获取 Fedora 包的地址 | http://mirror.steadfastnet.com/fedora/releases/31/Everything/x86_64/os/ |
CENTOS7_HOSTNAME | 新 CentOS 7 服务器的默认主机名 | centos7.localdomain |
CENTOS7_NETWORK_INSTALLATION_URL | Anaconda 获取 CentOS 包的地址 | http://192.168.1.109/centos7 |
CENTOS8_HOSTNAME | 新 CentOS 8 服务器的默认主机名 | centos8.localdomain |
CENTOS8_BASE_OS_URL | CentOS 8 BaseOS 包仓库 URL | http://mirror.steadfastnet.com/centos/8/BaseOS/x86_64/os/ |
CENTOS8_APPSTREAM_REPO_URL | CentOS 8 AppStream 包仓库 URL | http://mirror.steadfastnet.com/centos/8/AppStream/x86_64/kickstart/ |
依赖项
mariuszczyz.centos_apache
mariuszczyz.centos_dhcpd
可以使用 requirements.yml
从 Ansible Galaxy 安装依赖项:
# 从 Ansible Galaxy 安装
- src: mariuszczyz.centos_apache
- src: mariuszczyz.centos_dhcpd
例子 Playbook
手动
手动从 Ansible Galaxy 获取此角色:
ansible-galaxy install mariuszczyz.centos_pxe
非手动
Galaxy
或者通过 requirements.yml
从 Ansible Galaxy 引入此角色:
# requirements.yml
# 从 Ansible Galaxy 安装
- src: mariuszczyz.centos_pxe
Github 选项
# requirements.yml
# 从 Github 仓库安装
- src: https://www.github.com/mariuszczyz/centos_pxe
然后运行此命令以从 Ansible Galaxy 安装所有依赖项:
ansible-galaxy install -r requirements.yml
执行
如果想要单独运行此角色,创建一个新的文件:
playbook.yml
(可以随意命名)并填入以下内容:
- hosts: servers
user: YOUR USER
become: True
roles:
- { role: mariuszczyz.centos_pxe, tags: ['centos_pxe'] }
运行它:
ansible-playbook -i hosts playbook.yml
许可证
BSD
作者信息
作者:Mariusz Czyz
日期:12/2019
mariuszczyz.com