系统要求
单机部署最低配置:
- 2张网卡
- 8G内存
- 40G硬盘空间
主机系统:
- CentOS Stream 9
- Debian Bullseye (11)
- openEuler 22.03 LTS
- Rocky Linux 9- Ubuntu Jammy (22.04)
官方不再支持CentOS 7作为主机系统,我这里使用的是Rocky Linux 9.1(最小化安装)
#1. 安装依赖
#1.1 安装基础依赖
dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux
#1.2 安装Ansible额外需要的包
官方文档中没有说明,实际部署过程中,没有这两个包会无法使用pip安装的ansible
dnf install python3-resolvelib sshpass
#1.3 设置Python-venv虚拟环境
为了防止与系统的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
#1.4 安装Ansible
Kolla-ansible需要ansible 5版本,这里需要指定版本安装
pip install 'ansible>=4,<6'
#2. 安装Kolla-ansible
#2.1 安装本体
pip install git+https://opendev.org/openstack/kolla-ansible@stable/zed
#2.2 获取Kolla配置文件
创建配置文件夹
mkdir /etc/kolla
复制global.yml与password.yml到配置文件夹
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
#2.3 获取Ansible清单文件
复制all-in-one与multinode两个清单文件,分别对应了单机部署与多节点部署
cp /path/to/venv/share/kolla-ansible/ansible/inventory/* .
#3. 安装Ansible Galaxy依赖
kolla-ansible install-deps
#4. 配置Ansible
单机部署时,可以跳过这一步
编辑/etc/ansible/ansible.cfg,如果没有则需要先创建,将下面的内容添加到配置文件中
[defaults] host_key_checking=False pipelining=True forks=100
#5. 准备初始化配置
#5.1 修改hosts
单机部署时,可以跳过这一步
在部署机的hosts中添加需要部署的主机的主机名,后续会自动同步到所有节点 编辑/etc/hosts文件,我这里准备部署3台控制节点与3台计算节点 (共用)
10.0.0.10 control01.openstack.instack.cloud control01 10.0.0.20 control02.openstack.instack.cloud control02 10.0.0.21 control03.openstack.instack.cloud control03
#5.2 准备清单文件
- 单机部署时,使用all-in-one清单文件- 多节点部署时,使用multinode清单文件
单机部署时,可以不用修改all-in-one清单文件
下面是我的multinode清单文件的开头部分,供参考
[all] control01 control02 control03 [control] # 指定root密码、管理网卡 control01 # ansible_ssh_pass="root" network_interface="ens192" control02 # ansible_ssh_pass="root" network_interface="ens192" control03 # ansible_ssh_pass="root" network_interface="ens192" [network:children] # 可在组名后添加:children来对组进行嵌套 compute [compute] # 指定root密码、管理网卡、外部网卡 control [monitoring:children] control [deployment] localhost ansible_connection=local
详细的配置规则见 Ansible文档(opens new window)
配置完成后,使用下面的命令测试Ansible的连通性
ansible -i multinode all -m ping
#5.3 生成密码
kolla-genpwd
密码存储在/etc/kolla/passwords.yml中
#5.4 配置 global.yml
镜像选择
Kolla可以选择多种镜像版本:
- CentOS Stream (centos)- Debian (debian)- Rocky (rocky)- Ubuntu (ubuntu) 官方推荐新安装的使用rocky或ubuntu,这里使用和主机相同的rocky发行版
提示
默认不用修改
kolla_base_distro: "rocky"
镜像仓库
国内可能访问quay.io比较慢,可以指定国内的quay.io源
docker_registry: "quay.nju.edu.cn"
自建仓库
docker_registry: "hub.instack.cloud"
网络
管理网络的网卡,也用于主机之间的通信
network_interface: "eth0"
连接外部网络的网卡,需要一个开启的,没有配置IP的网卡
neutron_external_interface: "eth1"
用于管理的浮动IP,由keepalived提供高可用性,必须是管理网络中没有被使用的地址
kolla_internal_vip_address: "10.0.0.250"
监控
enable_prometheus
中心日志
enable_central_logging: "yes" enable_venus: "yes"
global.yml中所有的选项,都可以在清单文件中为每个主机单独配置。上面的multinode文件中,指定了每台主机的管理网卡与外部网卡。
#6. 部署
我这里采用多节点部署,使用的是multinode清单文件,单机部署请使用all-in-one清单文件
引导服务器
kolla-ansible -i ./multinode bootstrap-servers
部署前检查
kolla-ansible -i ./multinode prechecks
开始部署
kolla-ansible -i ./multinode deploy
#7. 使用OpenStack
#7.1 命令行(OpenStack CLI)
安装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了
#7.2 网页(Horizon)
浏览器中访问kolla_internal_vip_address,输入账号密码即可
账号密码可在openrc文件中查看