kolla-ansible部署openstack
1、简介
2、环境准备
| 主机名 | 网卡名/类型 | ip地址 |
|---|---|---|
| openstack01 | ens33 nat ens36 nat |
ens33 192.168.50.40 |
| openstack02 | ens33 nat ens36 nat |
ens33 192.168.50.41 |
| openstack03 | ens33 nat ens36 nat |
ens33 192.168.50.42 |
3、部署
1、基础环境准备(所有节点配置)
[root@localhost ~]# hostnamectl set-hostname openstack01
[root@localhost ~]# bash
# 在部署节点上添加所有节点的hosts
192.168.50.40 openstack01
192.168.50.41 openstack02
192.168.50.42 openstack03# 非部署节点只需要添加自己的主机名解析即可,如下为openstack02的配置
192.168.50.41 openstack02
[root@openstack01 ~]# ssh-keygen
[root@openstack01 ~]# ssh-copy-id openstack01
[root@openstack01 ~]# ssh-copy-id openstack02
[root@openstack01 ~]# ssh-copy-id openstack03
[root@openstack01 ~]# systemctl disable --now firewalld
[root@openstack01 ~]# setenforce 0
[root@openstack01 ~]# sed -i 's/SELINUX=/SELINUX=disabled/g' /etc/selinux/config
我使用的是欧拉,这一步可以不做,其他的linux需要安装epel源
[root@openstack01 ~]# yum install epel-release -y
因为kolla-ansible是将各个组件部署在容器内的,所以需要安装docker
[root@openstack01 ~]# dnf install -y yum-utils device-mapper-persistent-data lvm2 -y
[root@openstack01 ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
[root@openstack01 ~]# yum install docker-ce -y
如果是欧拉系统,这里就直接yum install docker -y就可以了,欧拉的源自带了docker
2、部署kolla-ansible
1、安装相关的依赖
需要在每个节点上执行
dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux -y
2、部署kolla-ansible
启用python虚拟环境
虚拟机本地有python版本,启动了一个虚拟环境后,在这个里面安装对应的python版本,跟宿主机的就没有任何的关联
[root@openstack01 ~]# python3 -m venv .venv/kolla
[root@openstack01 ~]# source ~/.venv/kolla/bin/activate
后续所以的操作在这个虚拟环境中执行,不会污染宿主机
安装kolla-ansible
# pip下载地址改为清华源,下载速度回非常的快
(kolla) [root@openstack01 ~]# pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple# 更新pip,保持最新的
(kolla) [root@openstack01 ~]# pip3 install -U pip# 安装指定的版本的ansible-core,koll-ansible对ansible版本要求非常的严格
(kolla) [root@openstack01 ~]# pip3 install 'ansible-core>=2.15,<2.16.99'# 安装kolla-ansible 主工具
(kolla) [root@openstack01 ~]# pip3 install kolla-ansible# 安装galaxy依赖,因为运行需要很多的ansible角色,会自动的下载所有必须的ansible角色
(kolla) [root@openstack01 ~]# ansible-galaxy collection install git+https://opendev.org/openstack/ansible-collection-kolla,stable/2024.2
下载kolla-ansible源码
(kolla) [root@openstack01 ~]# git clone https://github.com/openstack/kolla-ansible.git
(kolla) [root@openstack01 kolla-ansible]# git branch -a
* masterremotes/origin/HEAD -> origin/masterremotes/origin/masterremotes/origin/stable/2024.2remotes/origin/stable/2025.1remotes/origin/stable/2025.2remotes/origin/unmaintained/2024.1
(kolla) [root@openstack01 kolla-ansible]# git checkout stable/2024.2
Branch 'stable/2024.2' set up to track remote branch 'stable/2024.2' from 'origin'.
Switched to a new branch 'stable/2024.2'
生成配置文件
(kolla) [root@openstack01 kolla-ansible]# mkdir /etc/kolla
(kolla) [root@openstack01 kolla-ansible]# cd
(kolla) [root@openstack01 ~]# cp kolla-ansible/etc/kolla/* /etc/kolla/
(kolla) [root@openstack01 ~]# cp kolla-ansible/ansible/inventory/multinode /etc/kolla# globals全局配置文件,告诉怎么安装opensatck
(kolla) [root@openstack01 ~]# ls /etc/kolla/
globals.yml multinode passwords.yml# multinode 主机清单# passwords.yml 保存 OpenStack 所有组件的密码、密钥、令牌
修改主机清单文件
(kolla) [root@openstack01 ~]# vim /etc/kolla/multinode
[control]
openstack01
openstack02
openstack03[network]
openstack01
openstack02
openstack03[compute]
openstack01
openstack02
openstack03[monitoring]
openstack01[storage]
openstack01
openstack02
openstack03
修改globals.yml文件
(kolla) [root@openstack01 kolla]# grep -Ev "^$|#" globals.yml
---
workaround_ansible_issue_8743: yes
node_config: "/etc/kolla"
kolla_base_distro: "rocky"
openstack_release: "2024.2"
node_custom_config: "{{ node_config }}/config"
kolla_internal_vip_address: "192.168.50.40"
docker_registry: quay.nju.edu.cn
network_interface: "ens33"
neutron_external_interface: "ens36"
neutron_plugin_agent: "openvswitch"
enable_openstack_core: "yes"
enable_hacluster: "no"
enable_haproxy: "no"
enable_keepalived: "{{ enable_haproxy | bool }}"
enable_keystone: "{{ enable_openstack_core | bool }}"
enable_mariadb: "yes"
enable_memcached: "yes"
enable_neutron: "{{ enable_openstack_core | bool }}"
enable_nova: "{{ enable_openstack_core | bool }}"
enable_rabbitmq: "{{ 'yes' if om_rpc_transport == 'rabbit' or om_notify_transport == 'rabbit' else 'no' }}"
enable_cinder: "no"
cinder_volume_group: "cinder-volumes"
nova_compute_virt_type: "kvm"
选项补充
填充密码文件
# 会将这个文件的权限改成只有root能访问
(kolla) [root@openstack01 kolla]# kolla-genpwd
WARNING: Passwords file "/etc/kolla/passwords.yml" is world-readable. The permissions will be changed.
3、配置所有节点python依赖
kolla-ansible部署openstack,在所有openstack节点上需要部署相应的python依赖包。这些依赖包可以从部署节点上获得:
(kolla) [root@openstack01 ~]# pip3 freeze > /tmp/requirements.txt
需要删除这个文件的2行,其他节点不需要安装ansible,kolla-ansible
ansible-core==2.15.12
kolla-ansible==18.0.0
(kolla) [root@openstack01 ~]# scp /tmp/requirements.txt openstack02:/tmp
(kolla) [root@openstack01 ~]# scp /tmp/requirements.txt openstack03:/tmp
需要说明的是,这些包需要在所有节点安装,包括控制节点。且不可以安装在python虚拟环境中:
# 退出虚拟环境
(kolla) [root@openstack01 ~]# deactivate [root@openstack01 ~]# pip3 install -r /tmp/requirements.txt
[root@openstack02 ~]# pip3 install -r /tmp/requirements.txt
[root@openstack03 ~]# pip3 install -r /tmp/requirements.txt
4、执行koll-ansible部署
问题
安装集合的时候报错
vi /root/.venv/kolla/share/kolla-ansible/requirements.yml
修改版本为2024.2