一.环境准备

本文以VMWare中创建的虚拟机为例

硬件规格备注
网卡1已分配内网IP,以ens33为例
网卡2不需要分配IP,以ens37为例
系统盘60G+用于安装系统及挂载存储
数据盘100G+初始不需要分区,后续操作用

二.开启ROOT远程登录

  1. 使用现有账号登录设置root密码:
sudo passwd root
  1. 修改sshd配置开启远程登录:
sed -i '/PermitRootLogin/d' /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
systemctl restart sshd

三.常用工具

工具名称用途
gparted带图形化界面的分区工具
fdisk命令行分区管理工具
net-tools网络工具(使用ifconfig需要安装此包)

四.安装OpenStack

注:本次安装基于OpenStack官方文档,并且对遇到的安装问题进行补充。
点击此处查看官方文档

1.基础工具安装

# 安装python工具等
apt install git python3-dev libffi-dev gcc libssl-dev -y

2.安装并创建虚拟环境

虚拟环境路径可自定义,本文以"/opt/openstack/venv"为例。

# 安装虚拟环境包
apt install python3-venv -y
# 创建虚拟环境
python3 -m venv /opt/openstack/venv

3.进入虚拟环境

source /opt/openstack/venv/bin/activate

注:后续操作都在虚拟环境下进行,如果要退出虚拟环境请使用一下命令

deactivate

4.升级pip并配置国内源

本地安装建议使用清华源,比阿里的源速度快N倍。

# pip3临时使用清华源更新pip
pip3 install -U pip -i https://pypi.tuna.tsinghua.edu.cn/simple
# pip设置清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

5.安装ansible

pip install 'ansible>=4,<6'

6.安装对应openstack版本的kolla-ansible

pip install git+https://opendev.org/openstack/kolla-ansible@stable/zed

7.创建配置文件目录并附加权限

sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla

8.复制配置文件

# 复制配置文件到配置文件目录
cp -r /opt/openstack/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

9.复制依赖文件到当前目录

cp /opt/openstack/venv/share/kolla-ansible/ansible/inventory/all-in-one .

10.安装ansible依赖

kolla-ansible install-deps

11.生成密码到/etc/kolla/passwords.yml文件中

注:要配置的密码有很多,可以手动编辑文件进行配置,也可以执行下面命令自动生成。

 kolla-genpwd

12.修改/etc/kolla/passwords.yml中登录密码

找到文件中key控制台登录密码的key:keystone_admin_password
或者直接使用命令替换

sed -i 's/^keystone_admin_password.*/keystone_admin_password: 自定义密码/' /etc/kolla/passwords.yml

13.修改/etc/kolla/globals.yml文件,配置并开启服务

# 基础配置:
kolla_base_distro:          系统配置,修改为ubuntu即可
openstack_release:          openstack版本,本文使用的zed
kolla_internal_vip_address: 用来访问web控制台,
							如果enable_haproxy为no则配置一个单独的IP,
							否则使用network_interface网卡分配的IP
network_interface:          内部网卡名称,本文是ens33
neutron_external_interface: 外部网卡名称,本文是ens37
# 服务组件配置:
enable_haproxy: "no" #高可用,如果为yes则kolla_internal_vip_address可以使用独立IP
enable_cinder: "yes" #块存储
enable_cinder_backup: "no"
enable_cinder_backend_lvm: "yes" #使用逻辑存储
enable_neutron_provider_networks: "yes" # 启用外部网络
nova_compute_virt_type: "qemu" # 虚拟化类型(物理机用kvm,VMWare使用qemu)
nova_console: "spice"

14.cinder存储配置

# a.查看存储节点的盘:
ansible -i all-in-one "storage*" -a "lsblk"
# b.格式化并且创建分区组
mkfs.ext4   /dev/sdb
pvcreate    /dev/sdb
vgcreate  cinder-volumes  /dev/sdb

15.预配置

# 基础环境安装,比如docker等
kolla-ansible -i ./all-in-one bootstrap-servers

16.环境检测

kolla-ansible -i ./all-in-one prechecks

注意:如果检测在Checking docker SDK报错找不到docker模块的话,修改all-in-one文件内容如下。

[deployment]
localhost       ansible_connection=local  ansible_python_interpreter="{{ ansible_playbook_python }}"

17.开始部署

kolla-ansible -i ./all-in-one deploy

18.安装客户端

pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/master

19.生成clouds.yaml文件

kolla-ansible post-deploy

20.访问web管理页面

http://kolla_internal_vip_address配置的ip/
用户名:admin
密码:/etc/kolla/passwords.yml中keystone_admin_password的密码

一.修改web管理页面端口

1.修改horizon端口并重启服务

cd /etc/kolla/horizon

vim horizon.conf
# 修改内容如下
Listen ip:80 => Listen ip:想要使用的端口
<VirtualHost ip:80> => <VirtualHost ip:想要使用的端口>
# 修改完后保存horizon.conf文件

vim local_settings
# 搜索80
/80
# 会看到如下节点
'http': {
        'name': 'HTTP',
        'ip_protocol': 'tcp',
        'from_port': '80',
        'to_port': '80',
    },
# 修改from_port和to_port为想要使用的端口
'http': {
        'name': 'HTTP',
        'ip_protocol': 'tcp',
        'from_port': '想要使用的端口',
        'to_port': '想要使用的端口',
    },
# 修改完保存local_settings文件

# docker重启horizon服务
docker stop  horizon
docker start horizon

2.修改haproxy代理的horizon端口并重启服务

cd /etc/kolla/haproxy/services.d/

vim horizon.cfg
# 修改horizon_front和horizon_back中的80为想要使用的端口

# docker重启haproxy服务
docker stop  haproxy
docker start haproxy

部署参考文章:

kolla部署all-in-one
自动化kolla-ansible部署ubuntu20.04+openstack-victoria单机
使用Kolla在阿里云搭建10节点高可用OpenStack集群
使用Kolla部署Stein版本OpenStack(含Ceph存储部分)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐