配置操作系统

本节描述了目标主机的操作系统安装和配置,以及部署 SSH 密钥和配置存储。

安装操作系统

在目标主机上安装以下受支持的操作系统之一

  • Ubuntu Server 24.04 (Noble Numbat) 64 位
  • Debian 12 (Bookworm) 64 位
  • Debian 13 (Trixie) 64 位
  • CentOS 10 Stream 64 位
  • Rocky Linux 10 64 位

配置至少一个网络接口以访问互联网或合适的本地仓库。

某些发行版会在 /etc/hosts 文件中添加一个多余的条目,该条目将实际主机名解析为另一个环回 IP 地址,例如 127.0.1.1。您必须注释掉或删除此条目,以防止名称解析问题。 不要删除 127.0.0.1 条目。 此步骤对于 metal 部署尤其重要。

使用短主机名而不是完全限定域名 (FQDN),以防止与 LXC 和 SSH 长度限制问题。

我们建议将 Secure Shell (SSH) 服务器软件包添加到目标主机上的安装中,这些主机没有本地(控制台)访问权限。

注意

我们还建议将您的区域设置为 en_US.UTF-8。其他区域可能有效,但未经测试或支持。

配置 Debian

  1. 更新软件包源列表

    # apt update
    
  2. 升级系统软件包和内核

    # apt dist-upgrade
    
  3. 安装其他软件包

    # apt install bridge-utils debootstrap ifenslave ifenslave-2.6 \
      lsof lvm2 openssh-server sudo tcpdump vlan python3
    
  4. 重新启动主机以激活更改并使用新内核。

配置 Ubuntu

  1. 更新软件包源列表

    # apt update
    
  2. 升级系统软件包和内核

    # apt dist-upgrade
    
  3. 安装其他软件包

    # apt install bridge-utils debootstrap openssh-server \
      tcpdump vlan python3
    
  4. 如果您的内核版本有内核额外软件包,请安装它

    # apt install linux-modules-extra-$(uname -r)
    
  5. 重新启动主机以激活更改并使用新内核。

配置 CentOS Stream / Rocky Linux

  1. 升级系统软件包和内核

    # dnf upgrade
    
  2. 禁用 SELinux。编辑 /etc/sysconfig/selinux,确保 SELINUX=enforcing 已更改为 SELINUX=disabled

    # 对于从版本 9 开始的 RHEL 发行版,推荐

    通过启动加载程序使用 grubby 禁用 SELinux 的方法

    # grubby --update-kernel ALL --args selinux=0
    

    注意

    由于缺乏该功能的维护者,OpenStack-Ansible 目前不支持 CentOS/RHEL 中启用的 SELinux。

  3. 禁用 firewalld 以实现组件的正常通信

    # systemctl stop firewalld
    # systemctl mask firewalld
    
  4. 安装其他软件包

    # dnf install iputils lsof openssh-server\
      sudo tcpdump python3
    
  5. (可选) 通过更改 sysctls 中的 printk 值来降低内核日志级别

    # echo "kernel.printk='4 1 7 4'" >> /etc/sysctl.conf
    
  6. 重新启动主机以激活更改并使用新内核。

配置 SSH 密钥

Ansible 使用 SSH 连接部署主机和目标主机。您可以使用 root 用户,也可以使用任何允许通过 Ansible become 提升权限的用户(例如将用户添加到 sudoers)。有关更多详细信息,请参阅 以非 root 身份运行

  1. 将部署主机上公钥文件的内容复制到每个目标主机上的 ~/.ssh/authorized_keys 文件中。

  2. 通过使用 SSH 从部署主机连接到目标主机来测试从部署主机到每个目标主机的公钥身份验证。如果可以连接并获得 shell 而无需身份验证,则表示它正在工作。SSH 提供一个无需询问密码的 shell。

有关如何生成 SSH 密钥对以及最佳实践的更多信息,请参阅 GitHub 关于生成 SSH 密钥的文档

配置存储

逻辑卷管理器 (LVM) 允许将单个设备拆分为多个逻辑卷,这些逻辑卷在操作系统中显示为物理存储设备。块存储 (cinder) 服务以及可选地运行 OpenStack 基础设施的 LXC 容器,可以选择使用 LVM 作为其数据存储。

注意

OpenStack-Ansible 会自动在节点上配置 LVM,并覆盖任何现有的 LVM 配置。如果您有自定义的 LVM 配置,请根据需要编辑生成的配置文件。

  1. 要使用可选的块存储 (cinder) 服务,请在存储主机上创建一个名为 cinder-volumes 的 LVM 卷组。在创建物理卷时指定 2048 的元数据大小。例如

    # pvcreate --metadatasize 2048 physical_volume_device_path
    # vgcreate cinder-volumes physical_volume_device_path
    
  2. 可选地,为容器文件系统创建一个名为 lxc 的 LVM 卷组,并在 user_variables.yml 中设置 lxc_container_backing_store: lvm,如果您想使用 LVM 的 LXC。如果 lxc 卷组不存在,则容器将默认安装在 /var/lib/lxc 下的文件系统上。