本指南介绍了在 裸机服务器 或 虚拟机 上使用Kolla Ansible部署OpenStack的步骤说明。
主机必须满足以下最低要求:
关于支持的主机操作系统的细节,请参见matrix。
通常情况下,本节中使用系统软件包管理器的命令必须以root权限运行。
一般建议使用虚拟环境
来安装Kolla Ansible及其依赖项,以避免与系统包冲突。注意,这与使用虚拟环境进行远程执行是独立的,这在虚拟环境中有所描述。
Debian 或 Ubuntu,更新包的索引。
sudo apt update
安装Python构建依赖项:
对于CentOS,Rocky或openEuler,运行:
sudo dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux
Debian 或 Ubuntu,运行:
sudo apt install git python3-dev libffi-dev gcc libssl-dev
安装虚拟环境的依赖项。
对 CentOS,Rocky 或 openEuler,你不需要做任何事情。
对 Debian 或 Ubuntu,运行:
sudo apt install python3-venv
创建一个虚拟环境并激活它:
python3 -m venv /path/to/venv
source /path/to/venv/bin/activate
在运行任何依赖安装在其中的软件包的命令之前,应先激活虚拟环境。
确保安装了最新版本的pip:
pip install -U pip
Kolla Ansible至少需要Ansible 4,最高支持5:
pip install 'ansible>=4,<6'
使用pip安装kolla-ansible和它的依赖项。
如果是虚拟环境:
pip install git+https://opendev.org/openstack/kolla-ansible@|KOLLA_BRANCH_NAME|
如果不是虚拟环境:
sudo pip3 install git+https://opendev.org/openstack/kolla-ansible@|KOLLA_BRANCH_NAME|
创建 /etc/kolla 目录:
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla
复制 globals.yml 和 passwords.yml 到 /etc/kolla 目录:
如果是虚拟环境:
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
如果不是虚拟环境,则运行:
cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
复制 all-in-one 和 multinode 清单文件到当前的目录:
如果是虚拟环境:
cp /path/to/venv/share/kolla-ansible/ansible/inventory/* .
对于虚拟环境中的一体式方案,在清单的最开始添加以下内容:
localhost ansible_python_interpreter=python
如果不是虚拟环境,则运行:
cp /usr/local/share/kolla-ansible/ansible/inventory/* .
安装Ansible Galaxy的依赖(Yoga版本以上)。
kolla-ansible install-deps
为了获得最佳效果,Ansible的配置应该针对你的环境进行调整。例如,在Ansible配置文件/etc/ansible/ansible.cfg
中添加以下选项。
[defaults]
host_key_checking=False
pipelining=True
forks=100
下一步是准备清单文件。清单是一个Ansible文件,我们在其中指定主机和它们所属的组。用它来定义节点角色和访问凭证。
Kolla Ansible提供了all-in-one(一体机)
和multinode(多节点)
的示例清单文件。它们之间的区别在于,前者是为在本地主机上部署单节点OpenStack准备的。如果你需要使用单独的主机或一个以上的节点,请编辑多节点清单:
编辑 multinode 的第一部分,例如:
[control]
10.0.0.[10:12] ansible_user=ubuntu ansible_password=foobar ansible_become=true
# Ansible supports syntax like [10:12] - that means 10, 11 and 12.
# Become clause means "use sudo".
[network:children]
control
# when you specify group_name:children, it will use contents of group specified.
[compute]
10.0.0.[13:14] ansible_user=ubuntu ansible_password=foobar ansible_become=true
[monitoring]
10.0.0.10
# This group is for monitoring node.
# Fill it with one of the controllers' IP address or some others.
[storage:children]
compute
[deployment]
localhost ansible_connection=local become=true
# use localhost and sudo
检查清单的配置是否正确,运行:
ansible -i multinode all -m ping
注意
分布式的话可能没有预装Python。这将导致 ping 模块错误。要用Ansible快速安装Python,你可以运行:对于Debian或Ubuntu:ansible -i multinode all -m raw -a "apt -y install python3"
,而对于CentOS、Rocky或openEuler:ansible -i multinode all -m raw -a "dnf -y install python3"
。
在部署中使用的密码存储在/etc/kolla/passwords.yml
文件中。该文件中的所有密码都是空白的,必须手动或通过运行随机密码生成器来填写:
运行生成:
kolla-genpwd
globals.yml
是Kolla Ansible的主要配置文件。有几个选项是部署Kolla Ansible所需要的:
Image 选项
用户必须指定将用于部署的图像。在本指南中,将使用Quay.io
提供的构建的镜像。要了解更多关于构建机制的信息,请参考构建容器镜像。
Kolla 在容器中提供了多种 Linux 发行版的选择:
对于新手,我们推荐使用 Rocky Linux 9 或 Ubuntu 22.04。
kolla_base_distro: "rocky"
网络
Kolla Ansible需要设置一些网络选项,我们需要设置OpenStack使用的网络接口。
第一个要设置的接口是"network_interface"。这是多管理型网络的默认接口。
network_interface: "eth0"
第二个需要的接口是Neutron外部(或公共)网络专用的,可以是vlan或flat,取决于网络的创建方式。这个接口应该是激活的,没有IP地址。如果不是,实例将不能访问外部网络。
neutron_external_interface: "eth1"
要了解有关网络配置的更多信息,请参阅网络概述。
接下来我们需要为管理流量提供浮动IP。这个IP将由keepalived管理以提供高可用性,需要设置一个不使用
的地址。
kolla_internal_vip_address: "10.1.0.250"
启用附加服务
默认情况下,Kolla Ansible 提供裸金属计算套件,但它确实提供对大量附加服务的支持。要启用它们,请将 enable_*
设置为“yes”。例如,启用块存储服务:
enable_cinder: "yes"
多个 globals 文件
对于更精细的控制,现在可以使用多个 yml 文件来启用主的 globals.yml 文件中的任何选项。简单地说,在 /etc/kolla/
下创建一个名为 globals.d
的目录,并将所有相关的 *.yml
文件放在那里。 kolla-ansible 脚本会自动将所有这些作为参数添加到 ansible-playbook 命令中。
比如,如果操作员想要在初始部署之后的阶段启用 cinder 及其所有选项,而不篡改现有的 globals.yml 文件。 这可以通过使用一个单独的 cinder.yml 文件来实现,该文件位于 /etc/kolla/globals.d/
目录下,并在其中添加所有相关选项。
虚拟环境
建议使用一个虚拟环境在远程主机上执行任务,已经涵盖了虚拟环境。
配置完毕后,我们可以进入部署阶段。首先,我们需要设置基本的主机级依赖,如docker。
Kolla Ansible提供了一个playbook,它将以正确的版本安装所有需要的服务。
以下内容假设使用的是multinode清单。如果使用不同的清单,例如all-in-one
,请相应地替换-i
参数。
对于部署或评估,运行:
用kolla部署的依赖来引导服务器:
kolla-ansible bootstrap-servers -i ./multinode
对主机进行部署前检查:
kolla-ansible prechecks -i ./multinode
最后进行实际的 OpenStack 部署:
kolla-ansible deploy -i ./multinode
当本剧本完成时,OpenStack 应该启动、运行并正常运行! 如果执行过程中出现错误,请参考故障排除指南。
安装 OpenStack CLI 客户端:
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/|KOLLA_OPENSTACK_RELEASE|
OpenStack 需要一个clouds.yaml
文件,其中设置了管理员用户的凭据。要生成此文件:
运行:
kolla-ansible post-deploy -i ./multinode
该文件将在 /etc/kolla/clouds.yaml 中生成,您可以通过将其复制到 /etc/openstack
或 ~/.config/openstac
或设置 OS_CLIENT_CONFIG_FILE
环境变量来使用它。
根据您安装 Kolla Ansible 的方式,有一个脚本可以创建示例网络、镜像等。
警告
可以出于演示目的自由使用以下 init-runonce 脚本,但请注意,不必为了使用云而运行它。根据您的自定义设置,它可能不起作用,或者可能与您要创建的资源冲突。
运行:
如果使用虚拟环境:
/path/to/venv/share/kolla-ansible/init-runonce
不是虚拟环境:
/usr/local/share/kolla-ansible/init-runonce
(完)
https://quay.io/organization/openstack.kolla
https://docs.openstack.org/project-deploy-guide/kolla-ansible/zed/quickstart.html