Bootstrapping Servers¶
Kolla-ansible 提供了在部署容器之前启动主机配置的支持,通过 bootstrap-servers 子命令实现。这包括对以下的支持
/etc/hosts 的自定义
创建用户和组
Kolla 配置目录
软件包的安装和删除
Docker 引擎的安装和配置
禁用防火墙
创建 Python 虚拟环境
Apparmor 的配置
SELinux 的配置
NTP 守护程序的配置
所有启动支持都由 baremetal Ansible 角色提供。
运行命令¶
执行启动的基本命令是
kolla-ansible bootstrap-servers -i INVENTORY
可能需要进一步的选项,如以下部分所述。
初始启动注意事项¶
启动的本质意味着 Ansible 在初始启动期间执行的环境可能与启动完成后看到的环境不同。例如
可能尚未创建
kolla_user用户帐户。如果通常将其用作执行 Kolla Ansible 的ansible_user,则必须使用不同的用户帐户进行启动。可能不存在 Python 虚拟环境。如果通常将 virtualenv 用作执行 Kolla Ansible 的
ansible_python_interpreter,则必须使用系统 Python 解释器进行启动。
可以通过 -e 参数传递 Kolla Ansible 中的这些变量,以覆盖库存默认值
kolla-ansible bootstrap-servers -i INVENTORY -e ansible_user=<bootstrap user> -e ansible_python_interpreter=/usr/bin/python
后续启动注意事项¶
可以对已经启动的云执行启动过程,例如应用 Kolla Ansible 新版本中的配置。在这种情况下,应考虑进一步的注意事项。
Docker 引擎软件包可能会更新。这将导致 Docker 引擎重新启动,以及所有正在运行的容器。有三种主要方法可以避免所有控制平面服务同时重新启动。
第一种选择是使用 --limit 命令行参数按批次将命令应用于主机,确保集群服务(例如 MariaDB)始终存在法定人数。
kolla-ansible bootstrap-servers -i INVENTORY --limit controller0,compute[0-1]
kolla-ansible bootstrap-servers -i INVENTORY --limit controller1,compute[2-3]
kolla-ansible bootstrap-servers -i INVENTORY --limit controller2,compute[4-5]
第二种选择是按批次对主机执行单个 playbook
kolla-ansible bootstrap-servers -i INVENTORY -e kolla_serial=30%
最后一种选择是使用 Docker 的 live-restore 配置选项来避免在重新启动 Docker 引擎时重新启动容器。但是,已经有报告称使用此选项存在问题,因此请自行承担风险。
请确保已测试导致 Docker 引擎更新的任何操作,尤其是在从旧版 Docker 软件包迁移到 Docker Community Edition 时。有关详细信息,请参阅 软件包仓库。
/etc/hosts 的自定义¶
这是可选的,由 customize_etc_hosts 启用,默认情况下为 true。
确保
localhost位于/etc/hosts中将每个主机的 API 接口的 IP 添加到
/etc/hosts中。
创建用户和组¶
这是可选的,由 create_kolla_user 启用,默认情况下为 true。
确保存在一个名为由变量
kolla_group定义的组,默认值为kolla。确保存在一个名为由变量
kolla_user定义的用户,默认值为kolla。用户的基本组由kolla_group定义。该用户被添加到sudo组。为
kolla_user授权 SSH 公钥。该密钥由kolla_ssh_key映射变量的public_key值定义,通常在passwords.yml中定义。如果将变量
create_kolla_user_sudoers设置为 true,则将为kolla_user配置 sudoers 配置文件,授予无密码 sudo 权限。
Kolla 配置目录¶
Kolla ansible 服务配置写入到主机中的目录由 node_config_directory 定义,默认值为 /etc/kolla/。将创建此目录。如果设置了 create_kolla_user,则目录的所有者和组将分别设置为 kolla_user 和 kolla_group。
软件包的安装和删除¶
为安装和删除定义了软件包列表。在 Debian 系列系统中,这些由 debian_pkg_install 和 ubuntu_pkg_removals 分别定义。在 Red Hat 系列系统中,这些由 redhat_pkg_install 和 redhat_pkg_removals 分别定义。
Docker 引擎的安装和配置¶
Docker 引擎是 Kolla Ansible 的关键依赖项,并提供了各种配置选项。
软件包仓库¶
如果设置了 enable_docker_repo 标志,则将配置 Docker 软件包的软件包仓库。Kolla Ansible 使用来自 https://download.docker.com 的“社区版”软件包。
各种其他配置选项以 docker_(apt|yum)_ 开头。通常不需要更改这些选项。
配置¶
变量 docker_storage_driver 是可选的。如果设置,它将定义用于 Docker 的 存储驱动程序。
变量 docker_runtime_directory 是可选的。如果设置,它将定义 Docker 的运行时(data-root)目录。
变量 docker_registry,默认情况下未设置,定义 Docker 注册表的地址。如果未设置该变量,将使用 Quay.io。
变量 docker_registry_insecure,默认值为 false,定义是否将 docker_registry 配置为不安全的注册表。不安全的注册表允许使用损坏的证书链和没有 TLS 的 HTTP,但在生产环境中强烈不建议这样做,除非在非常特殊的情况下。有关更多讨论,请参阅 Docker 官方文档中的 不安全注册表。此外,请注意这将禁用 Docker 注册表身份验证。
变量 docker_log_max_file,默认值为 5,定义每个容器要保留的最大日志文件数。变量 docker_log_max_size,默认值为 50m,定义每个容器轮换日志文件的最大大小。
变量 docker_http_proxy、docker_https_proxy 和 docker_no_proxy 可用于配置 Docker 引擎以使用 http/https 代理连接到互联网。
可以将 Docker 引擎的其他选项传递到 docker_custom_config 变量中。它将存储在 daemon.json 配置文件中。示例
{
"experimental": false
}
启用/禁用防火墙¶
Kolla Ansible 支持主机防火墙的配置。
目前仅支持 Firewalld。
在 Debian 系列系统中,需要事先安装 Firewalld。
在 Red Hat 系列系统中,firewalld 应该默认安装。
要启用系统防火墙的配置,请将 disable_firewall 设置为 false 并将 enable_external_api_firewalld 设置为 true。
有关更多信息,请参阅 Kolla 安全
创建 Python 虚拟环境¶
这是可选的,通过将 virtualenv 设置为创建 Python 虚拟环境的路径来启用。默认情况下,不使用虚拟环境。如果设置了 virtualenv_site_packages(默认值为 true),则虚拟环境将继承全局 site-packages 目录中的软件包。这通常需要 yum 和 apt 等在 PyPI 上不可用的模块。有关更多信息,请参阅 目标主机。
Apparmor 的配置¶
在 Ubuntu 系统上,将删除 libvirtd Apparmor 配置文件。
SELinux 的配置¶
在 Red Hat 系列系统中,如果设置了 change_selinux(默认值为 true),则 SELinux 状态将设置为 selinux_state(默认值为 permissive)。有关更多信息,请参阅 Kolla 安全。