单机部署最低配置:
主机系统:
官方不再支持CentOS 7作为主机系统,我这里使用的是Rocky Linux 9.1(最小化安装)
dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux
官方文档中没有说明,实际部署过程中,没有这两个包会无法使用pip安装的ansible
dnf install python3-resolvelib sshpass
为了防止与系统的python环境冲突,这里使用虚拟环境安装ansible与kolla-ansible
/path/to/venv
是虚拟环境的目录,可以自己指定
创建虚拟环境
python3 -m venv /path/to/venv
进入虚拟环境
source /path/to/venv/bin/activate
在虚拟环境中输入
deactivate
命令,即可退出虚拟环境
更换pip国内源,更新pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U pip
Kolla-ansible需要ansible 5版本,这里需要指定版本安装
pip install 'ansible>=4,<6'
pip install git+https://opendev.org/openstack/kolla-ansible@stable/zed
创建配置文件夹
mkdir /etc/kolla
复制global.yml
与password.yml
到配置文件夹
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
复制all-in-one
与multinode
两个清单文件,分别对应了单机部署与多节点部署
cp /path/to/venv/share/kolla-ansible/ansible/inventory/* .
kolla-ansible install-deps
单机部署时,可以跳过这一步
编辑/etc/ansible/ansible.cfg
,如果没有则需要先创建,将下面的内容添加到配置文件中
[defaults]
host_key_checking=False
pipelining=True
forks=100
单机部署时,可以跳过这一步
在部署机的hosts中添加需要部署的主机的主机名,后续会自动同步到所有节点
编辑/etc/hosts
文件,我这里准备部署1台控制节点与2台计算节点
10.0.8.121 kolla-control
10.0.8.122 kolla-compute1
10.0.8.123 kolla-compute2
all-in-one
清单文件multinode
清单文件单机部署时,可以不用修改
all-in-one
清单文件
下面是我的multinode
清单文件的开头部分,供参考
[control]
# 指定root密码、管理网卡
kolla-control ansible_ssh_pass="***" network_interface="ens192"
[network:children]
# 可在组名后添加:children来对组进行嵌套
compute
[compute]
# 指定root密码、管理网卡、外部网卡
kolla-compute1 ansible_ssh_pass="***" network_interface="ens192" neutron_external_interface="ens224"
kolla-compute2 ansible_ssh_pass="***" network_interface="ens192" neutron_external_interface="ens224"
[monitoring:children]
control
详细的配置规则见 Ansible文档
配置完成后,使用下面的命令测试Ansible的连通性
ansible -i multinode all -m ping
kolla-genpwd
密码存储在
/etc/kolla/passwords.yml
中
镜像选择
Kolla可以选择多种镜像版本:
官方推荐新安装的使用rocky或ubuntu,这里使用和主机相同的rocky发行版
kolla_base_distro: "rocky"
镜像仓库
国内可能访问quay.io比较慢,可以指定国内的quay.io源
docker_registry: "quay.nju.edu.cn"
网络
管理网络的网卡,也用于主机之间的通信
network_interface: "eth0"
连接外部网络的网卡,需要一个开启的,没有配置IP的网卡
neutron_external_interface: "eth1"
用于管理的浮动IP,由keepalived提供高可用性,必须是管理网络中没有被使用的地址
kolla_internal_vip_address: "10.0.8.250"
global.yml
中所有的选项,都可以在清单文件中为每个主机单独配置。上面的multinode
文件中,指定了每台主机的管理网卡与外部网卡。
我这里采用多节点部署,使用的是multinode
清单文件,单机部署请使用all-in-one
清单文件
引导服务器
kolla-ansible -i ./multinode bootstrap-servers
部署前检查
kolla-ansible -i ./multinode prechecks
开始部署
kolla-ansible -i ./multinode deploy
安装CLI客户端
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/zed
生成openrc文件
kolla-ansible post-deploy
使用openrc文件
. /etc/kolla/admin-openrc.sh
接下来就可以使用OpenStack CLI了
浏览器中访问kolla_internal_vip_address
,输入账号密码即可
账号密码可在openrc文件中查看