配置部署

_images/installation-workflow-configure-deployment.png

Ansible 引用了一些包含强制和可选配置指令的文件。在运行 Ansible playbook 之前,请修改这些文件以定义目标环境。配置任务包括

  • 目标主机网络,用于定义桥接接口和网络。

  • 要在其上安装软件的目标主机列表。

  • OpenStack Networking (neutron) 的虚拟和物理网络关系。

  • 所有服务的密码。

初始环境配置

OpenStack-Ansible (OSA) 依赖于各种文件,这些文件用于为 Ansible 构建清单。在部署主机上执行以下配置。

  1. /opt/openstack-ansible/etc/openstack_deploy 目录的内容复制到 /etc/openstack_deploy 目录。

    # cp -a /opt/openstack-ansible/etc/openstack_deploy /etc/openstack_deploy
    
  2. 切换到 /etc/openstack_deploy 目录。

  3. openstack_user_config.yml.example 文件复制到 openstack_user_config.yml

    # cp openstack_user_config.yml.example openstack_user_config.yml
    
  4. 查看 openstack_user_config.yml 文件并进行更改,以部署您的 OpenStack 环境。

    注意

    此文件包含大量注释,其中包含有关各种选项的详细信息。请参阅我们的 用户指南参考指南 以获取更多详细信息。

  5. 查看 user_variables.yml 文件以配置全局和角色特定的部署选项。该文件包含一些示例变量和注释,但您可以在每个角色的特定文档中获取完整的变量列表。

    注意

    一个重要的变量是 install_method,它配置了 OpenStack 服务的安装方法。服务可以从源代码(默认)或从发行版软件包部署。基于源代码的部署更接近于一个原生的 OpenStack 安装,并允许进行更多的调整和自定义。另一方面,基于发行版的部署通常提供一个经过发行版验证的软件包组合。但是,这意味着更新发布的频率较低且可能存在延迟。此外,此方法提供的部署自定义机会较少,并且仅受选定的服务支持。 install_method 变量在初始部署期间设置,并且 不应 更改它,因为 OpenStack-Ansible 无法从一种安装方法转换为另一种安装方法。因此,在做出决定之前,重要的是根据每种方法的优缺点来判断您的需求。

openstack_user_config.yml 文件中的配置定义了哪些主机运行 OpenStack-Ansible 部署的容器和服务。例如,列在 shared-infra_hosts 部分中的主机运行许多您的 OpenStack 环境所需的共享服务的容器。这些服务包括数据库、Memcached 和 RabbitMQ。其他几种主机类型包含其他类型的容器,所有这些都列在 openstack_user_config.yml 文件中。

一些服务,例如 glance、heat、horizon 和 nova-infra,未在示例文件中单独列出,因为它们包含在 os-infra 主机中。如果您想以特定方式扩展,可以指定 image-hosts 或 dashboard-hosts。

有关示例,请参阅我们的 用户指南

有关如何生成清单的信息,包括环境配置和变量优先级,请参阅我们的 参考指南 中的清单部分。

配置目标主机

修改 /etc/openstack_deploy/openstack_user_config.yml 文件以配置目标主机。

不要将相同的 IP 地址分配给不同的目标主机名。可能会出现意外结果。每个 IP 地址和主机名必须是一对匹配项。要在多个角色中使用相同的主机,例如基础设施和网络,请在每个部分中指定相同的主机名和 IP。

除非另有说明,否则将 *_IP_ADDRESS 替换为每个目标主机上 br-mgmt 容器管理桥的 IP 地址。

注意

如果通过与 br-mgmt 接口不同的网络进行 SSH 访问主机,请参阅 指南

  1. shared-infra_hosts 部分配置至少三个基础设施目标主机

    shared-infra_hosts:
      infra01:
        ip: INFRA01_IP_ADDRESS
      infra02:
        ip: INFRA02_IP_ADDRESS
      infra03:
        ip: INFRA03_IP_ADDRESS
      infra04: ...
    
  2. identity_hosts 部分配置至少一个 keystone 目标主机

    identity_hosts:
      infra01:
        ip: INFRA01_IP_ADDRESS
      infra02: ...
    
  3. 配置负责部署中网络相关角色的适当主机集

    network-infra_hosts:
      infra01:
        ip: INFRA01_IP_ADDRESS
      infra02: ...
    
    network-northd_hosts:
      infra01:
        ip: INFRA01_IP_ADDRESS
      infra02: ...
    

    在使用 OVN 部署 OpenStack 时,根据您的网络架构,正确配置 network-gateway_hosts 至关重要。有两种典型的场景

    场景 1:计算节点上的网关的 DVR

    network-gateway_hosts:
      compute01:
        ip: COMPUTE01_IP_ADDRESS
      compute02: ...
    

    场景 2:独立的网络节点

    network-gateway_hosts:
      network01:
        ip: NETWORK01_IP_ADDRESS
      network02: ...
    
  4. compute_hosts 部分配置至少一个计算目标主机

    compute_hosts:
      compute01:
        ip: COMPUTE01_IP_ADDRESS
      compute02: ...
    
  5. repo-infra_hosts 部分配置至少一个仓库目标主机

    repo-infra_hosts:
      infra01:
        ip: INFRA01_IP_ADDRESS
      infra02:
        ip: INFRA02_IP_ADDRESS
      infra03:
        ip: INFRA03_IP_ADDRESS
      infra04: ...
    

    仓库通常位于一个或多个基础设施主机上。

  6. 可选地在 storage_hosts 部分配置存储主机

    storage_hosts:
      storage01:
        ip: STORAGE01_IP_ADDRESS
      storage02: ...
    

    每个存储主机需要额外的配置来定义后端驱动程序。默认配置包括一个可选的存储主机。要不安装存储主机,请注释掉以 storage_hosts: 行开头的段落。

安装附加服务

要安装附加服务,etc/openstack_deploy/conf.d 中的文件提供了显示要使用的正确主机组的示例。要添加另一个服务,请添加主机组,分配主机到它,然后执行 playbook。

高级服务配置

OpenStack-Ansible 有许多选项可用于服务的先进配置。每个角色的文档提供了有关可用选项的信息。

重要提示

此步骤对于将 OpenStack-Ansible 定制化到您的需求至关重要,通常被新的部署者忽略。如果您想要定制的云,请查看每个角色的文档、用户指南和参考。

基础设施服务角色

OpenStack 服务角色

其他角色

配置服务凭据

/etc/openstack_deploy/user_secrets.yml 文件中配置每个服务的凭据。请考虑使用 Ansible Vault 功能来提高安全性,方法是加密包含凭据的任何文件。您可以使用 osa_ops.encrypt_secrets collection 来自动化简化密钥的加密和进一步管理过程。

调整这些文件的权限,以限制非特权用户对其的访问。

keystone_auth_admin_password 选项配置 OpenStack API 和 Dashboard 访问的 admin 租户密码。

我们建议使用 pw-token-gen.py 脚本为包含服务凭据的每个文件中的变量生成随机值

# cd /opt/openstack-ansible
# ./scripts/pw-token-gen.py --file /etc/openstack_deploy/user_secrets.yml

要重新生成现有密码,请添加 --regen 标志。

有关如何轮换密码的信息,请参阅 密码轮换 文档。