Kolla-Ansible 部署 OpenStack本文档基于 Kolla-Ansible 使用 Docker 容器方式部署 OpenStack,适用于 Ubuntu 或 CentOS,适合测试与小规模部署。
0. 架构与组件简介Kolla-Ansible 将各 OpenStack 服务打包为 Docker 镜像,通过 Ansible 编排部署。所有服务以容器形式运行,与宿主机隔离。
部署架构层级说明Ansible编排引擎,执行 bootstrap、prechecks、deploy、post-deployDocker容器 runtime,承载各 OpenStack 服务Kolla 镜像官方预构建镜像(Keystone、Nova、Glance、Neutron、Horizon 等)主要服务(容器化)服务说明Keystone身份认证Nova计算 API 与调度Glance镜像服务Neutron网络服务Cinder块存储HorizonWeb 管理界面MariaDB元数据存储RabbitMQ消息队列局限与适用场景方面说明规模容器化但非 K8s,多节点编排能力有限,更适合测试与小规模部署资源各服务独立容器,内存、磁盘占用相对较高部署耗时首次部署需拉取大量镜像,通常需 30–60 分钟升级大版本升级需重新部署,回滚成本较高依赖强依赖 Docker 与宿主机,宿主机故障影响整体可用性1. 前置条件项目要求操作系统Ubuntu 22.04 / 24.04 或 CentOS Stream 9硬件8GB+ 内存,40GB+ 磁盘(建议 150GB+),2 块网卡(单网卡可单机 All-in-One)网络可访问互联网及 Docker 镜像仓库权限root 或 sudo2. 环境准备2.1 安装 DockerUbuntu:
1
2
3
4
sudo apt update
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
CentOS Stream 9:
1
2
3
4
5
sudo dnf install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
2.2 安装 Python 与 Kolla-Ansible 依赖Ubuntu:
1
sudo apt install -y python3-dev python3-pip python3-venv libffi-dev gcc libssl-dev
CentOS:
1
sudo dnf install -y python3-pip python3-devel libffi-devel gcc openssl-devel
2.3 安装 Ansible 与 Kolla-Ansible 1
2
sudo pip3 install -U pip
sudo pip3 install 'ansible-core>=2.14' kolla-ansible
或使用虚拟环境(推荐):
1
2
3
4
python3 -m venv /opt/kolla-venv
source /opt/kolla-venv/bin/activate
pip install -U pip
pip install 'ansible-core>=2.14' kolla-ansible
3. 配置 Kolla-Ansible3.1 创建配置目录 1
2
sudo mkdir -p /etc/kolla
cd /etc/kolla
3.2 生成配置文件 1
2
3
4
5
6
# 安装依赖并复制示例配置
sudo kolla-ansible install-deps
# 若 /etc/kolla 下无配置,从示例复制
sudo cp -r /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/
sudo cp /usr/share/kolla-ansible/ansible/inventory/* /etc/kolla/
3.3 编辑 globals.yml关键配置示例(按实际网卡名调整):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
---
openstack_release: "caracal" # 或 zed、antelope,视 kolla-ansible 版本
kolla_base_distro: "ubuntu" # CentOS 用 "centos"
kolla_install_type: "binary"
# 单机 All-in-One
network_interface: "eth0" # 管理网卡
neutron_external_interface: "eth1" # 外网网卡;单网卡时与 network_interface 相同
enable_horizon: "yes"
enable_neutron: "yes"
enable_cinder: "yes"
kolla_internal_vip_address: "192.168.1.230" # 本机 IP 或 VIP
3.4 配置 inventory(单机 All-in-One)编辑 /etc/kolla/ansible/inventory/all-in-one,若无此文件则使用 multinode。单机时将各节点均设为 localhost:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[control]
localhost ansible_connection=local
[network]
localhost ansible_connection=local
[compute]
localhost ansible_connection=local
[monitoring]
localhost ansible_connection=local
[storage]
localhost ansible_connection=local
3.5 生成密码 1
2
cd /etc/kolla
sudo kolla-genpwd
密码写入 passwords.yml,管理员密码为 keystone_admin_password。
4. 部署步骤 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
cd /etc/kolla
# 指定 inventory(all-in-one 或 multinode,按实际路径)
INVENTORY="ansible/inventory/all-in-one"
# 若无 all-in-one,使用:INVENTORY="ansible/inventory/multinode"
# 1. 检查系统要求
sudo kolla-ansible -i $INVENTORY bootstrap-servers
# 2. 预检查
sudo kolla-ansible -i $INVENTORY prechecks
# 3. 部署(约 30–60 分钟)
sudo kolla-ansible -i $INVENTORY deploy
# 4. 生成 admin-openrc
sudo kolla-ansible -i $INVENTORY post-deploy
5. 安装后项目说明Horizonhttp://<本机IP> 或 http://<本机IP>:80管理员密码sudo grep keystone_admin_password /etc/kolla/passwords.yml加载凭证source /etc/kolla/admin-openrc.sh验证openstack service list、openstack image list容器状态docker ps6. 初始化:规格与网络若 openstack flavor list 或 openstack network list 为空,需手动创建。
7. 常见问题7.1 镜像拉取慢或超时配置 Docker 镜像加速或代理;或提前拉取 Kolla 镜像:
1
sudo kolla-ansible -i ansible/inventory/all-in-one pull
7.2 网卡名不匹配globals.yml 中 network_interface、neutron_external_interface 需与本机实际网卡名一致。可用 ip link 查看。
7.3 端口冲突确保 80、3306、5672、5000、8774、9292、9696 等端口未被占用:
1
ss -tulnp | grep -E ':80|:3306|:5672|:5000'
7.4 部署失败查看 Ansible 输出中的具体错误;或检查容器日志:
1
2
docker ps -a
docker logs <容器名>