Kayobe 配置

本节介绍 Kayobe 的配置。作为一个基于 Ansible 的项目,Kayobe 主要使用 YAML 文件进行配置。

配置位置

Kayobe 配置默认位于 Ansible 控制主机上的 /etc/kayobe。可以通过设置环境变量 KAYOBE_CONFIG_PATH 来覆盖此位置,以避免修改系统配置目录。 同样,Ansible 控制主机上的 kolla 配置默认位于 /etc/kolla,可以通过 KOLLA_CONFIG_PATH 进行覆盖。

配置目录布局

Kayobe 配置目录包含 Ansible extra-vars 文件和 Ansible 库存。目录结构的示例如下

extra-vars1.yml
extra-vars2.yml
inventory/
    group_vars/
        group1-vars
        group2-vars
    groups
    host_vars/
        host1-vars
        host2-vars
    hosts

配置模式

Ansible 的变量优先级规则 有详细的文档,并提供了一种机制,我们可以将其用于提供站点本地化和 OpenStack 的自定义,以及一些合理的默认值。对于全局配置选项,Kayobe 通常使用以下模式

  • <kayobe repo>/ansible/inventory/group_vars/all/* 中,all 组的库存组变量设置 全局默认值。不应修改这些文件。

  • <kayobe repo>/ansible/inventory/group_vars/<group>/* 中,其他组的库存组变量设置 某些主机子集的默认值。不应修改这些文件。

  • ${KAYOBE_CONFIG_PATH}/*.yml 中的 extra-vars 文件设置 全局变量的自定义值,应使用它们来应用全局站点本地化和自定义。默认情况下,这些变量会被注释掉。

此外,可以使用库存组或主机变量文件在 ${KAYOBE_CONFIG_PATH}/inventory/group_vars/*${KAYOBE_CONFIG_PATH}/inventory/host_vars/* 中,分别按组或按主机设置变量。需要注意的是,extra-vars 文件中设置的变量优先于主机变量。

配置 Kayobe

kayobe-config git 仓库包含 Kayobe 配置目录结构和未修改的配置文件。可以使用此仓库作为版本控制 Kayobe 配置的机制。随着 Kayobe 的更新,应合并配置以合并任何上游更改和本地修改。

或者,可以将基线 Kayobe 配置从 Kayobe 仓库的检出复制到 Kayobe 配置路径

$ mkdir -p ${KAYOBE_CONFIG_PATH:-/etc/kayobe/}
$ cp -r etc/kayobe/* ${KAYOBE_CONFIG_PATH:-/etc/kayobe/}

到位后,应手动检查并根据需要配置每个 YAML 和库存文件。

库存

库存应包含以下主机

Ansible 控制主机

这应该是 localhost。

种子 hypervisor

如果正在配置种子 VM,则应存在一个主机用于将运行 VM 的 hypervisor,并且应该是 seed-hypervisor 组的成员。

Seed

无论 Kayobe 以 VM 的形式配置还是由外部管理,种子主机都应存在于 seed 组中。

如果计划发现控制平面硬件,则云主机和裸机计算主机不需要存在于库存中,尽管可能仍然需要组的条目。

使用具有多个服务器角色和自定义服务放置在这些服务器上的高级控制平面在 控制平面服务放置 中介绍。

站点本地化和自定义

站点本地化和自定义使用 Ansible extra-vars 文件在 ${KAYOBE_CONFIG_PATH}/*.yml 中应用。

Ansible 配置

Ansible 配置在 Ansible 文档 中有详细描述。除了标准位置外,Kayobe 还支持在 Kayobe 配置中使用位于 ${KAYOBE_CONFIG_PATH}/ansible.cfg 的 Ansible 配置文件。请注意,如果指定了 ANSIBLE_CONFIG 环境变量,则它优先于此文件。

密钥加密

Kayobe 支持使用 Ansible vault 加密其配置中的敏感信息。应使用 ansible-vault 工具来管理需要加密的单个文件。可以加密任何配置文件。由于加密会使使用 Kayobe 变得困难,因此建议遵循 最佳实践,添加一层间接性,并仅在必要时使用加密。

数据文件位置

Kayobe 需要知道如何找到其 python 包中不包含的任何文件;这包括其 Ansible playbook 和它在运行时操作所需的任何其他文件。这些文件统称为“数据文件”。

Kayobe 将尝试自动检测其数据文件位置。但是,如果您将 kayobe 安装到非标准位置,则此自动检测可能会失败。可以使用环境变量手动覆盖路径:KAYOBE_DATA_FILES_PATH。应将其设置为具有以下结构的路径

requirements.yml
ansible/
    roles/
        ...
    ...

其中 ansible 是源检出中的 ansible 目录,... 是该目录中包含的任何文件和子目录的省略表示。