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)

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

关于项目

CentOS 7/8 and Fedora PXE Boot Server Role

安装
ansible-galaxy install mariuszczyz.centos_pxe
许可证
Unknown
下载
117
拥有者