准备部署主机

_images/installation-workflow-deploymenthost.png

在生产环境中安装 OpenStack 时,我们建议使用一个单独的部署主机,该主机包含 Ansible 并编排目标主机上的 OpenStack-Ansible (OSA) 安装。在测试环境中,我们建议使用其中一个基础设施目标主机作为部署主机。

要将目标主机用作部署主机,请在部署主机上按照 准备目标主机 中的步骤操作。

配置操作系统

安装操作系统

在部署主机上安装以下受支持的操作系统

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

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

配置 Ubuntu

安装其他软件包并配置网络时间协议 (NTP)。在开始之前,我们建议升级您的系统软件包和内核。

  1. 更新软件包源列表

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

    # apt dist-upgrade
    
  3. 重新启动主机。

  4. 如果操作系统安装期间未安装其他软件包,请安装它们

    # apt install build-essential git chrony openssh-server python3-dev sudo
    
  5. 配置 NTP 以与合适的时源同步。

配置 CentOS Stream / Rocky Linux

安装其他软件包并配置网络时间协议 (NTP)。在开始之前,我们建议升级您的系统软件包和内核。

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

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

    对于从版本 9 开始的 RHEL 发行版,禁用 SELinux 的推荐方法是通过 grubby 使用引导加载程序

    # grubby --update-kernel ALL --args selinux=0
    
  3. 重新启动主机。

  4. 如果操作系统安装期间未安装其他软件包,请安装它们

    # dnf install git chrony openssh-server python3-devel sudo
    # dnf group install "Development Tools"
    
  5. 配置 NTP 以与合适的时源同步并启动 chronyd

    # systemctl enable chronyd
    # systemctl start chronyd
    
  6. 在 CentOS Stream 和 Rocky Linux 上默认启用 firewalld 服务,并且其默认规则集会阻止 OpenStack 组件正常通信。停止 firewalld 服务并屏蔽它以防止其启动

    # systemctl stop firewalld
    # systemctl mask firewalld
    

配置 SSH 密钥

Ansible 使用带有公钥身份验证的 SSH 来连接部署主机和目标主机。为了减少 Ansible 操作期间的用户交互,请不要在密钥对中包含密码短语。但是,如果需要密码短语,请考虑使用 ssh-agentssh-add 命令在执行 Ansible 操作之前临时存储密码短语。

配置网络

如果部署服务器无法使用安全 Shell (SSH) 连接到容器,Ansible 部署将失败。

配置部署主机(执行 Ansible 的位置)位于与容器管理网络指定相同的 Layer 2 网络上。默认情况下,这是 br-mgmt 网络。此配置减少了由连接问题引起的失败率。

从以下示例范围中选择一个 IP 地址分配给部署主机

Container management: 172.29.236.0/22 (VLAN 10)

安装源代码和依赖项

安装部署主机的源代码和依赖项。

注意

如果您使用有限的连接进行安装,请在继续之前查看 使用有限的连接进行安装

  1. 将 OpenStack-Ansible Git 仓库的最新稳定版本克隆到 /opt/openstack-ansible 目录

    # git clone -b 32.0.0.0rc1 https://opendev.org/openstack/openstack-ansible /opt/openstack-ansible

    如果无法访问 opendev.org 来运行 git clone,可以使用 github.com 作为替代仓库

    # git clone -b 32.0.0.0rc1 https://github.com/openstack/openstack-ansible.git /opt/openstack-ansible
  2. 切换到 /opt/openstack-ansible 目录,并运行 Ansible 引导脚本

    # scripts/bootstrap-ansible.sh
    

使用 Alpine 配置 Docker

这是一种替代的部署主机配置实现,包括使用 Docker 容器作为部署主机。

这既不受支持,也没有在 CI 中进行测试,因此您应自行承担风险使用它。

在开始之前,我们建议升级您的 Docker 主机系统软件包和内核。

  1. 准备您的 OpenStack Ansible Dockerfile

    FROM alpine
    RUN apk add --no-cache bash build-base git python3-dev openssh-client openssh-keygen sudo py3-virtualenv iptables libffi-dev openssl-dev linux-headers coreutils curl
    RUN git clone -b 32.0.0.0rc1 https://git.openstack.org/openstack/openstack-ansible /opt/openstack-ansible
    WORKDIR /opt/openstack-ansible
    RUN /opt/openstack-ansible/scripts/bootstrap-ansible.sh
    ENTRYPOINT ["bash"]
  2. 构建并运行您的部署主机容器

    # docker build . -t openstack-ansible:32.0.0.0rc1
    # docker run -dit --name osa-deploy openstack-ansible:32.0.0.0rc1
    # docker exec -it osa-deploy bash
  3. 配置 NTP 以与 Docker 主机上的合适的时源同步。