kolla-ansible 部署 openstack
kolla-ansible 部署 openstack
什么是kolla-ansible
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服务以及如何维护和扩展云环境。
支持的系统
LinuxOS | Version |
---|---|
Rocky | Linux 9 |
Debian | Bullseye |
Ubuntu | 22.04 |
基础配置
用途 | 主机名 | 配置 |
---|---|---|
控制节点 | controller01 | 4C8G 硬盘:100G |
计算节点 | compute01 | 2C4G 硬盘:100G |
计算节点 | compute02 | 2C4G 硬盘:100G |
计算节点 | compute03 | 2C4G 硬盘:100G |
网卡配置
IP地址 | 网卡 | 网络类型 | 在OpenStack网络中的作用 |
---|---|---|---|
无(不能配置IP地址) | enp0s3 | 桥接 | 外部网络(external network),让neutron(Openstack 中的网络组件)的br-ex绑定使用,OpenStack中的虚拟机通过该网卡与外网通信 |
172.25.16.200/24 | enp0s8 | 共享宿主机网卡 | 用于虚拟机连接外网,下载资源 |
192.168.56.200/24 | enp0s9 | 仅主机 | OpenStack内部管理网络(Management network),Horizon web界面通过此网卡访问 |
安装流程
- 配置主机
- 安装 指定版本的ansible & kolla-ansible & ansible galaxy
- 修改 kolla-ansible global.yml主配置文件,并生成密码文件
- 安装部署
- 使用OpenStack
配置主机
- 关闭selinux与防火墙
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
getenforce
systemctl disable firewalld.service --now
- 配置网卡
nmcli c del enp0s3
nmcli c add type ethernet ifname enp0s3 con-name enp0s3 ipv4.method disabled ipv6.method disabled
nmcli c r enp0s3
nmcli c up enp0s3
- 配置主机名(所有主机配置)
hostnamectl set-hostname controller01
hostnamectl set-hostname compute01
hostnamectl set-hostname compute02
hostnamectl set-hostname compute03
cat >> /etc/hosts << EOF
192.168.56.200 controller01
192.168.56.201 compute01
192.168.56.202 compute02
192.168.56.203 compute03
EOF
- 下载基础包
dnf install -y python3-resolvelib sshpass libffi-devel gcc python3-libselinux git python3-devel openssl-devel vim net-tools bash-completion
- 配置无密钥访问
ssh-keygen
ssh-copy-id root@controller01
ssh-copy-id root@compute01
ssh-copy-id root@compute02
ssh-copy-id root@compute03
ansible、kolla-ansible、galaxy
- 创建虚拟环境
python3 -m venv /path/to/venv
source /path/to/venv/bin/activate
- 更新pip版本
pip install -U pip
- 安装指定版本ansible
pip install 'ansible>=4,<6'
- 配置ansible
mkdir -p /etc/ansible/
cat >> /etc/ansible/ansible.cfg << EOF
[defaults]
# 关闭首次连接服务器验证
host_key_checking = False
# 打开ssh pipelining加速
pipelining = True
# 并发进程数
forks=100
EOF
- 安装kolla-ansible
这里需要注意,官网给到的命令是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
- 拷贝配置文件和Inventory File文件
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 文件
-
修改清单
-
all-in-one
-
multinode
# 只要修改下面的内容就好了,剩下的不用改
[control]
# These hostname must be resolvable from your deployment host
controller01
# The above can also be specified as follows:
#control[01:03] ansible_user=kolla
# The network nodes are where your l3-agent and loadbalancers will run
# This can be the same as a host in the control group
[network]
controller01
[compute]
controller01
compute01
compute02
compute03
[monitoring]
controller01
# When compute nodes and control nodes use different interfaces,
# you need to comment out "api_interface" and other interfaces from the globals.yml
# and specify like below:
#compute01 neutron_external_interface=eth0 api_interface=em1 tunnel_interface=em1
[storage]
controller01
compute01
compute02
compute03
- 安装galaxy
kolla-ansible install-deps
- 生成密码文件
生成密码文件/etc/kolla/passwords.yml
生成随机密码, 也可以指定密码内容
kolla-genpwd
vim /etc/kolla/passwords.yml
#主要修改登陆密码
keystone_admin_password: Admin@123
- 修改global.yml
部署前, /etc/kolla 下只有俩文件:
密码文件—— /etc/kolla/passwords.yml
主配置文件—— /etc/kolla/globals.yml,
global.yml定义了将如何安装 OpenStack, 并在后续流程中, 传递给 Kolla-Ansible的参数
vim /etc/kolla/globals.yml
# 对以下行取消注释,并修改
# docker基础系统镜像默认,可以不取消注释,默认值就是这个
kolla_base_distro: "rocky"
# openstack版本默认,可以不取消注释,默认值就是这个
openstack_release: "zed"
# 管理接口ip,如果设置了高可用haproxy,此处为VIP(虚拟漂移IP),由keepalived提供高可用性,必须是管理网络中没有被使用的地址。如果不配置高可用,直接把enp0s9 IP写入
kolla_internal_vip_address: "192.168.56.200"
# 内部网络,管理网络的网卡,也用于主机之间的通信
network_interface: "enp0s9"
# 外部网络接口,连接外部网络的网卡,需要一个开启的,没有配置IP的网卡
neutron_external_interface: "enp0s3"
# 设置网络插件为openvswitch 默认
neutron_plugin_agent: "openvswitch"
# 关闭高可用haproxy,配合vip使用,不使用vip需要关闭这个
enable_haproxy: "no"
# 启用provider网络
enable_neutron_provider_networks: "yes"
# 设置虚拟化类型,这里为qemu,如果服务器支持硬件虚拟化请将此值改为kvm
nova_compute_virt_type: "kvm"
#存储部分,后端要ceph需另外配置
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
cinder_volume_group: "cinder-volumes"
# 检查配置
cat /etc/kolla/globals.yml|grep -v ^#|grep -v ^$
安装部署
- 使用kolla的引导服务器部署依赖项
多节点安装只是把all-in-one修改为multinode,但是multinode里内容需要提前修改
kolla-ansible -i ./all-in-one bootstrap-servers
- 提取拉取docker镜像
部署时候碰到部分组件重启失败问题,实际上只是镜像没拉下来
kolla-ansible -i ./all-in-one pull
- 部署前检查
kolla-ansible -i ./all-in-one prechecks -vvv
- 实际部署
kolla-ansible -i ./all-in-one deploy -vvv
部署完成可以通过对应的管理IP登录
使用OpenStack
- 配置命令行
# 安装客户端
pip install python-openstackclient python-glanceclient python-neutronclient
# 生成openrc文件
kolla-ansible post-deploy
# 使用openrc文件
source /etc/kolla/admin-openrc.sh
# 添加环境变量
echo source /path/to/venv/bin/activate >> ~/.bashrc
echo source /etc/kolla/admin-openrc.sh >> ~/.bashrc