官网:https://docs.openstack.org/kolla-ansible/
Rocky9.3镜像下载(阿里):https://mirrors.aliyun.com/rockylinux/9.3/isos/x86_64/?spm=a2c6h.25603864.0.0.692838fbDEQI1Q
Quick Start手册:https://docs.openstack.org/kolla-ansible/zed/user/quickstart.html
kolla container网址:https://quay.io/organization/openstack.kolla
官方代码仓库:https://opendev.org/openstack/kolla-ansible/src/branch/unmaintained/zed
从五月开始,Zed
版不再是stable
状态,转而变成unmaintained
状态,因此在跟随Quck Start
手册时,需要修改部分内容才能正常操作。
Kolla-Ansible是一个用于部署OpenStack云服务的Ansible项目。它允许你在物理服务器或虚拟机上使用Docker容器来部署和管理OpenStack服务。Kolla-Ansible的目标是提供一个生产级别的容器化解决方案,用于部署和操作OpenStack云。
以Kolla-Ansible的关键特点:
容器化:
Kolla-Ansible使用Docker作为容器运行时环境,将每个OpenStack服务封装在单独的容器中。这有助于隔离服务,简化部署和管理。
生产就绪:
Kolla-Ansible旨在为OpenStack提供一个稳定和可靠的部署方式,适用于生产环境。
易于部署:
Kolla-Ansible通过Ansible playbooks自动化部署过程,使得部署OpenStack变得更加简单和快捷。
高度可定制:
尽管Kolla-Ansible开箱即用,它也提供了完整的灵活性和可定制性,允许经验丰富的运维人员根据需要调整配置。
社区驱动:
作为一个开源项目,Kolla-Ansible由一个活跃的社区开发和维护,该社区致力于不断改进和扩展其功能。
支持多种OpenStack服务:
Kolla-Ansible支持部署一系列OpenStack服务,包括计算(Nova)、块存储(Cinder)、对象存储(Swift)等。
基础设施组件:
除了OpenStack服务,Kolla-Ansible还能够部署支持云操作所需的基础设施组件,如数据库、消息队列、网络等。
文档齐全:
Kolla-Ansible有详细的文档,帮助用户了解如何开始使用、部署OpenStack服务以及如何维护和扩展云环境。
从我上篇文章 关于openEuler22.03LTS SP3尝试kolla安装容器版openstack(随手记) 可以看到,虽然在kolla官网上写的支持操作系统多达五个,但实际上真正适合新手的只有Rocky、Debain、Ubuntu。CentOS和openEuler实际上并不适合搭建,需要解决的问题太多了(无image、playbook不支持等等)。
LinuxOS Version
Rocky Linux 9
Debian Bullseye
Ubuntu 22.04
2 network interfaces
8GB main memory
40GB disk space
需要开启CPU虚拟化
LinuxOS : Rocky Linux 9
Numbers of Nics : 2
Nic1 IP Address1 : 192.168.100.201/24 # 管理平面
Nic2 IP Address2 : 192.168.100.202/24 # External平面
VIP Address : 192.168.100.200/24 #不用提前设置,后续在文件中指定,这个IP需要未被使用
Memory Size : 8G
Disk Size : 60G
dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux vim net-tools bash-completion
bash
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
getenforce
systemctl disable firewalld.service --now
python3 -m venv /path/to/venv
source /path/to/venv/bin/activate
pip install -U pip
Kolla Ansible requires at least Ansible 4 and supports up to 5.
pip install 'ansible>=4,<6'
这里需要注意,官网给到的命令是
pip install git+https://opendev.org/openstack/kolla-ansible@stable/zed
,但是五月份的时候,官网已经暂停维护zed版本,并将zed的branch重命名为unmaintained
,所以需要修改git的路径。
pip install git+https://opendev.org/openstack/kolla-ansible@unmaintained/zed
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
cp /path/to/venv/share/kolla-ansible/ansible/inventory/* .
Inventory File 是一个 Ansible 的清单
单节点对应 all-in-one 文件
多节点对应 multinode 文件
原文:
An inventory is an Ansible file where we specify hosts and the groups that they belong to. We can use this to define node roles and access credentials.
Kolla Ansible comes with all-in-one and multinode example inventory files. The difference between them is that the former is ready for deploying single node OpenStack on localhost. If you need to use separate host or more than one node, edit multinode inventory
需要注意一下,如果安装all-in-one版本,需要在all-in-one文件中的首行添加
localhost ansible_python_interpreter=python
vim all-in-one 文件首行添加以下内容 localhost ansible_python_interpreter=python
这里同样需要注意路径的问题,如上文一样的原因,但这里需要进入到虚拟目录下,对拉取的文件中
requirements.yml
进行修改
vim /path/to/venv/share/kolla-ansible/requirements.yml
---
collections:
- name: https://opendev.org/openstack/ansible-collection-kolla
type: git
version: unmaintained/zed #修改此行,原本为stable,修改为unmaintained
#安装galaxy
kolla-ansible install-deps
生成密码文件/etc/kolla/passwords.yml
生成随机密码, 也可以指定密码内容
kolla-genpwd
vim /etc/kolla/passwords.yml
#主要修改登陆密码
keystone_admin_password: Admin@123
部署前, /etc/kolla 下只有俩文件:
密码文件—— /etc/kolla/passwords.yml
主配置文件—— /etc/kolla/globals.yml,
global.yml定义了将如何安装 OpenStack, 并在后续流程中, 传递给 Kolla-Ansible的参数
初步安装,仅需要修改四行即可,即使用的镜像
、Nic1
、Nic2
、浮动IP
vim /etc/kolla/globals.yml
# 对以下行取消注释
# User has to specify images that are going to be used for our deployment.
kolla_base_distro: "rocky"
# 取消注释,设置管理类型网络接口
# This is the default interface for multiple management-type networks.
network_interface: "ens160"
# 取消注释,设置External网络接口
neutron_external_interface: "ens224"
# 取消注释,并设置浮动IP
kolla_internal_vip_address: "192.168.100.159"
#本次实验使用all-in-one部署,其实负载均衡本身是无意义的
若是安装多节点,仅需修改all-in-one为multinode
kolla-ansible -i ./all-in-one bootstrap-servers
这里会报错:
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ModuleNotFoundError: No module named 'selinux'
,但并不影响后续执行。
-vvv可以打印执行playbook时的所有操作
kolla-ansible -i ./all-in-one prechecks -vvv
kolla-ansible -i ./multinode deploy -vvv
使用VIP
即可登录web端openstack
账户名:Admin
密码:password.yml中keystone_admin_password所设置的密码