搜索

第 4 章 执行 overcloud 采用

download PDF

overcloud 采用涉及以下任务:

  • 在每个堆栈上,将网络和主机调配配置导出到 overcloud。
  • 定义新容器和其他兼容性配置。

4.1. 运行 overcloud 升级准备

升级需要运行 openstack overcloud upgrade prepare 命令,该命令执行以下任务:

  • 将 overcloud 计划更新至 OpenStack Platform 17.1
  • 为升级准备节点

流程

  1. stack 用户身份登录 undercloud 主机。
  2. 查找 stackrc undercloud 凭证文件:

    $ source ~/stackrc
  3. 验证 undercloud 升级过程中导出的以下文件是否包含 overcloud 升级的预期配置。您可以在 ~/overcloud-deploy 目录中找到以下文件:

    • tripleo-<stack>-passwords.yaml
    • tripleo-<stack>-network-data.yaml
    • tripleo-<stack>-virtual-ips.yaml
    • tripleo-<stack>-baremetal-deployment.yaml

      注意

      如果在 undercloud 升级后没有生成这些文件,请联系红帽支持。

  4. 在主堆栈上,将 password .yaml 文件复制到 ~/overcloud-deploy/$(<stack>) 目录。在环境中的每个堆栈中重复此步骤:

    $ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-passwords.yaml ~/overcloud-deploy/<stack>/<stack>-passwords.yaml
    • <stack> 替换为您的堆栈的名称。
  5. 在主堆栈上,将 network-data.yaml 文件复制到 stack 用户的主目录并部署网络。在环境中的每个堆栈中重复此步骤:

    $ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-network-data.yaml ~/
    $ mkdir ~/overcloud_adopt
    $ openstack overcloud network provision --debug \
    --output /home/stack/overcloud_adopt/generated-networks-deployed.yaml tripleo-<stack>-network-data.yaml

    有关更多信息,请参阅使用 director 安装和管理 Red Hat OpenStack Platform 中的置备和部署 overcloud

  6. 在主堆栈上,将 virtual-ips.yaml 文件复制到 stack 用户的主目录,并置备网络 VIP。在环境中的每个堆栈中重复此步骤:

    $ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-virtual-ips.yaml ~/
    $ openstack overcloud network vip provision --debug \
    --stack <stack> --output \
    /home/stack/overcloud_adopt/generated-vip-deployed.yaml tripleo-<stack>-virtual-ips.yaml
  7. 在主堆栈上,将 baremetal-deployment.yaml 文件复制到 stack 用户的主目录,并置备 overcloud 节点。在环境中的每个堆栈中重复此步骤:

    $ cp ~/overcloud-deploy/<stack>/tripleo-<stack>-baremetal-deployment.yaml ~/
    $ openstack overcloud node provision --debug --stack <stack> \
    --output /home/stack/overcloud_adopt/baremetal-deployment.yaml \
    tripleo-<stack>-baremetal-deployment.yaml
  8. 完成以下步骤以准备容器:

    1. 备份用于 undercloud 升级的 containers-prepare-parameter.yaml 文件:

      $ cp containers-prepare-parameter.yaml \
      containers-prepare-parameter.yaml.orig
    2. 在运行脚本以更新 containers-prepare-parameter.yaml 文件前,定义以下环境变量:

      • NAMESPACE: UBI9 镜像的命名空间。例如,NAMESPACE='"namespace":"example.redhat.com:5002",'
      • EL8_NAMESPACE :UBI8 镜像的命名空间。
      • NEUTRON_DRIVER :要使用的驱动程序,并确定要使用的 OpenStack Networking (neutron)容器。设置为用于部署原始堆栈的容器类型。例如,设置为 NEUTRON_DRIVER='"neutron_driver":"ovn",' 以使用基于 OVN 的容器。
      • EL8_TAGS: UBI8 镜像的标签,例如 EL8_TAGS='"tag":"rhel_8_rhosp17.1",'
      • EL9_TAGS: UBI9 镜像的标签,例如 EL9_TAGS='"tag":"rhel_9_rhosp17.1",'
      • CONTROL_PLANE_ROLES :使用 --role 选项的 control plane 角色列表,如 --role ControllerOpenstack, --role Database, --role Messaging, --role Networker, --role CephStorage。要查看环境中的 control plane 角色列表,请运行以下命令:

        $ sudo awk '/tripleo_role_name/ {print "--role " $2}' \
        /var/lib/mistral/$STACK/tripleo-ansible-inventory.yaml \
        | grep -vi compute
      • COMPUTE_ROLES :使用 --role 选项的 Compute 角色列表,如 --Compute-1。要查看环境中的 Compute 角色列表,请运行以下命令:

        $ sudo awk '/tripleo_role_name/ {print "--role " $2}' \
        /var/lib/mistral/$STACK/tripleo-ansible-inventory.yaml \
        | grep -i compute
      • CEPH_TAGS :如果您部署 Red Hat Ceph Storage,请指定 Red Hat Ceph Storage 5 容器镜像。例如:" ceph_tag":"5-404"
    3. 运行以下脚本以更新 containers-prepare-parameter.yaml 文件:

      $ python3 /usr/share/openstack-tripleo-heat-templates/tools/multi-rhel-container-image-prepare.py \
           ${COMPUTE_ROLES} \
           ${CONTROL_PLANE_ROLES} \
           --enable-multi-rhel \
           --excludes collectd \
           --excludes nova-libvirt \
           --minor-override "{${EL8_TAGS}${EL8_NAMESPACE}${CEPH_TAGS}${NEUTRON_DRIVER}\"no_tag\":\"not_used\"}" \
           --major-override "{${EL9_TAGS}${NAMESPACE}${CEPH_TAGS}${NEUTRON_DRIVER}\"no_tag\":\"not_used\"}" \
           --output-env-file \
          /home/stack/containers-prepare-parameter.yaml
  9. 如果使用 Red Hat Ceph Storage,请创建一个名为 ceph_params.yaml 的文件,并包含以下内容:

    parameter_defaults:
      CephSpecFqdn: true
      CephConfigPath: "/etc/ceph"
      CephAnsibleRepo: "rhceph-5-tools-for-rhel-8-x86_64-rpms"
      DeployedCeph: true
    注意

    如果您的 Red Hat Ceph Storage 部署包含短名称,您必须将 CephSpecFqdn 参数设置为 false。如果设置为 true,则清单会生成一个短名称和域名,从而导致 Red Hat Ceph Storage 升级失败。

  10. 在 templates 目录中创建一个名为 upgrade-environment.yaml 的环境文件,并包含以下内容:

    parameter_defaults:
      ExtraConfig:
        nova::workarounds::disable_compute_service_check_for_ffu: true
      DnsServers: ["<dns_servers>"]
        DockerInsecureRegistryAddress: <undercloud_FQDN>
      UpgradeInitCommand: |
        sudo subscription-manager repos --disable=*
          if $( grep -q  9.2  /etc/os-release )
          then
            sudo subscription-manager repos --enable=rhel-9-for-x86_64-baseos-eus-rpms --enable=rhel-9-for-x86_64-appstream-eus-rpms --enable=rhel-9-for-x86_64-highavailability-eus-rpms --enable=openstack-17.1-for-rhel-9-x86_64-rpms --enable=fast-datapath-for-rhel-9-x86_64-rpms
            sudo podman ps | grep -q ceph && subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms
            sudo subscription-manager release --set=9.2
          else
            sudo subscription-manager repos --enable=rhel-8-for-x86_64-baseos-tus-rpms --enable=rhel-8-for-x86_64-appstream-tus-rpms --enable=rhel-8-for-x86_64-highavailability-tus-rpms --enable=openstack-17.1-for-rhel-8-x86_64-rpms --enable=fast-datapath-for-rhel-8-x86_64-rpms
            sudo podman ps | grep -q ceph && subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms
            sudo subscription-manager release --set=8.4
          fi
    
          if $(sudo podman ps | grep -q ceph )
          then
            sudo dnf -y install cephadm
          fi
    • <dns_servers> 替换为 DNS 服务器 IP 地址的逗号分隔列表,例如 ["10.0.0.36", "10.0.0.37"]
    • <undercloud_FQDN > 替换为 undercloud 主机的完全限定域名(FQDN),例如 "undercloud-0.ctlplane.redhat.local:8787"

      有关您可以在环境文件中配置的升级参数的更多信息,请参阅升级 参数

  11. 在 undercloud 上,在 templates 目录中创建一个名为 overcloud_upgrade_prepare.sh 的文件。您必须为环境中的每个堆栈创建此文件。此文件包含 overcloud 部署文件的原始内容,以及与您的环境相关的环境文件。例如:

    #!/bin/bash
    openstack overcloud upgrade prepare --yes \
      --timeout 460 \
      --templates /usr/share/openstack-tripleo-heat-templates \
      --ntp-server 192.168.24.1 \
      --stack <stack> \
      -r /home/stack/roles_data.yaml \
      -e /home/stack/templates/internal.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/services/neutron-ovs.yaml \
      -e /home/stack/templates/network/network-environment.yaml \
      -e /home/stack/templates/inject-trust-anchor.yaml \
      -e /home/stack/templates/hostnames.yml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \
      -e /home/stack/templates/nodes_data.yaml \
      -e /home/stack/templates/debug.yaml \
      -e /home/stack/templates/firstboot.yaml \
      -e /home/stack/templates/upgrades-environment.yaml \
      -e /home/stack/overcloud-params.yaml \
      -e /home/stack/overcloud-deploy/overcloud/overcloud-network-environment.yaml \
      -e /home/stack/overcloud_adopt/baremetal-deployment.yaml \
      -e /home/stack/overcloud_adopt/generated-networks-deployed.yaml \
      -e /home/stack/overcloud_adopt/generated-vip-deployed.yaml \
      -e /usr/share/openstack-tripleo-heat-templates/environments/nova-hw-machine-type-upgrade.yaml \
      -e /home/stack/skip_rhel_release.yaml \
      -e ~/containers-prepare-parameter.yaml
    1. 在原始 network-environment.yaml 文件中(/home/stack/templates/network/network-environment.yaml),删除所有指向 OS::TripleO::*::Net::SoftwareConfig 的 resource_registry 资源。
    2. overcloud_upgrade_prepare.sh 文件中,包含与您的环境相关的以下选项:

      • 环境文件 (upgrades-environment.yaml) 带有特定于升级的参数 (-e)。
      • 包含新容器镜像位置(-e)的环境文件(containers-prepare-parameter.yaml)。在大多数情况下,这是 undercloud 使用的环境文件。
      • 环境文件(skip_rhel_release.yaml),带有发行版本参数(-e)。
      • 与您的部署相关的任何自定义配置文件(-e)。
      • 如果适用,使用 --roles-file 的自定义角色(roles_data)文件。
      • 对于 Ceph 部署,环境文件(ceph_params.yaml)以及 Ceph 参数(-e)。
      • 在 overcloud 采用过程中生成的文件(network-deployed.yaml,vip-deployed.yaml,baremetal-deployment.yaml) (-e)。
      • 如果适用,带有您的 IPA 服务(-e)的环境文件(ipa-environment.yaml)。
      • 如果使用自定义堆栈名称,请使用 --stack 选项传递名称。

        注意

        您必须在模板中包含 nova-hw-machine-type-upgrade.yaml 文件,直到所有 RHEL 8 Compute 节点都升级到环境中的 RHEL 9。如果排除了此文件,则 /var/log/containers/nova 目录中的 nova_compute.log 中会出现一个错误。将所有 RHEL 8 Compute 节点升级到 RHEL 9 后,您可以从配置中删除此文件并更新堆栈。

    3. 如果您在要升级的部署中通过 NFS 启用共享文件系统服务(manila),则必须在 overcloud_upgrade_prepare.sh 脚本文件末尾指定额外的环境文件。您必须在脚本末尾添加环境文件,因为它会覆盖之前在脚本中指定的另一个环境文件:

      -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/manila-cephfsganesha-config.yaml
  12. 为环境中的每个堆栈运行升级准备命令:

    $ source stackrc
    $ chmod 755 /home/stack/overcloud_upgrade_prepare.sh
    $ sh /home/stack/overcloud_upgrade_prepare.sh
  13. 等待升级准备完成。
  14. 下载容器镜像:

    $ openstack overcloud external-upgrade run --stack <stack> --tags container_image_prepare
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.