Kolla-Ansible 部署 OpenStack

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 <容器名>