主机环境
主机必须满足以下最低要求:
2 个网络接口(1个外网,1个内网)
8GB 主内存
40GB 磁盘空间
50GB的数据盘
操作系统:Ubuntu 22.04
Docker安装
# 安装必要的软件包以支持 HTTPS 传输、CA 证书、curl、gnupg-agent 和 software-properties-common
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 下载 Docker 的 GPG 密钥并保存到 /etc/apt/keyrings/docker.asc
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# 添加 Docker APT 仓库,使用 USTC 镜像源,并配置密钥
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新 APT 包索引以包含新添加的 Docker 仓库
sudo apt-get update
# 安装特定版本的 Docker CE、Docker CLI 和 containerd.io
sudo apt-get install docker-ce=5:24.0.9-1~ubuntu.22.04~jammy docker-ce-cli=5:24.0.9-1~ubuntu.22.04~jammy containerd.io
APT安装依赖
sudo apt update
sudo apt install git python3-dev libffi-dev gcc libssl-dev python3-venv libglib2.0-dev libdbus-1-dev python3-pip -y
创建一个Python虚拟环境进行部署
python3 -m venv /path/to/venv
source /path/to/venv/bin/activate
PIP源以及更新
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
pip install -U pip
安装 Kolla-ansible
# 安装特定版本的 ansible-core
pip install 'ansible-core==2.14.15'
# 安装 kolla-ansible 包
pip install kolla-ansible
# 从指定的 Git 仓库安装 kolla-ansible 的稳定分支
pip install git+https://opendev.org/openstack/kolla-ansible@stable/2023.2
# 创建 /etc/kolla 目录(如果不存在)
sudo mkdir -p /etc/kolla
# 更改 /etc/kolla 目录的所有者为当前用户
sudo chown $USER:$USER /etc/kolla
# 复制 kolla-ansible 的示例配置文件到 /etc/kolla 目录
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
# 复制 kolla-ansible 的 all-in-one 库存文件到当前目录
cp /path/to/venv/share/kolla-ansible/ansible/inventory/all-in-one ./
# 安装 kolla-ansible 所需的依赖项
kolla-ansible install-deps
# 生成 kolla 的密码文件
kolla-genpwd
配置globals.yml配置文件
vim /etc/kolla/globals.yml
kolla_base_distro: "ubuntu"
openstack_release: "2023.2"
kolla_internal_vip_address: "192.168.100.151"
network_interface: "ens32"
neutron_external_interface: "ens33"
enable_haproxy: "no"
enable_cinder: "yes"
enable_cinder_backup: "no"
enable_cinder_backend_lvm: "yes"
enable_neutron_provider_networks: "yes"
nova_compute_virt_type: "qemu"
将数据盘创建LVM管理
root@server:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 63.9M 1 loop /snap/core20/2318
loop1 7:1 0 63.7M 1 loop /snap/core20/2434
loop2 7:2 0 87M 1 loop /snap/lxd/29351
loop3 7:3 0 38.8M 1 loop /snap/snapd/21759
sda 8:0 0 45G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 512M 0 part /boot
└─sda3 8:3 0 44.5G 0 part /
sdb 8:16 0 50G 0 disk
sr0 11:0 1 2G 0 rom
# 查看当前系统上的所有块设备及其分区信息
pvcreate /dev/sdb
# 创建一个名为cinder-volumes的卷组(Volume Group),并将/dev/sdb添加到该卷组中
vgcreate cinder-volumes /dev/sdb
# 显示卷组cinder-volumes的详细信息
root@server:~# vgdisplay cinder-volumes
--- Volume group ---
VG Name cinder-volumes
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 1
Act PV 1
VG Size <50.00 GiB
PE Size 4.00 MiB
Total PE 12799
Alloc PE / Size 0 / 0
Free PE / Size 12799 / <50.00 GiB
VG UUID 13Rdff-9cVn-K73x-PKtB-TOMQ-PcKz-t0InUy
通过ansible部署openstack
# 拉取所有在配置文件中定义的 Docker 镜像
kolla-ansible pull -i ./all-in-one
# 引导目标主机,准备它们以运行 Kolla 容器
kolla-ansible bootstrap-servers -i ./all-in-one
# 运行一系列预检查任务,确保系统满足部署 OpenStack 的要求
kolla-ansible prechecks -i ./all-in-one
# 部署 OpenStack 到指定的目标主机
kolla-ansible deploy -i ./all-in-one
访问openstack dashboard打开浏览器输入内网IP
用户名是admin,密码都在opensearch_dashboards_password上
安装OpenStack命令行客户端:
# 安装python-openstackclient,并指定约束文件以匹配特定版本的OpenStack组件
pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/2023.2
# 运行kolla-ansible的post-deploy命令来完成OpenStack集群的后期部署任务
kolla-ansible post-deploy
# 将生成的admin用户凭据脚本复制到/root目录下,以便于管理
cp /etc/kolla/admin-openrc.sh /root/admin-openrc
# 加载admin用户的环境变量,使得openstack CLI工具能够使用这些凭证与OpenStack服务进行交互
source /root/admin-openrc
验证
(venv) root@kolla-all-in-one:~# source /path/to/venv/bin/activate
(venv) root@kolla-all-in-one:~# source admin-openrc
(venv) root@kolla-all-in-one:~# openstack hypervisor list
+--------------------------------------+---------------------+-----------------+-----------------+-------+
| ID | Hypervisor Hostname | Hypervisor Type | Host IP | State |
+--------------------------------------+---------------------+-----------------+-----------------+-------+
| 8799077d-bb3d-4766-8cdd-17d4de4bc952 | server | QEMU | 192.168.100.151 | up |
+--------------------------------------+---------------------+-----------------+-----------------+-------+