如何部署OpenStack
安装OpenStack
1. 使用oos工具安装
oos(openEuler OpenStack SIG)是OpenStack SIG提供的命令行工具。
安装oos工具,使用纳管的方式部署OpenStack环境,版本22.03-lts-sp2。
若提示无该版本,可在oos工具安装路径(oos/commands/environment/constants.py:OE_OS_RELEASE)添加该版本。该问题已修复,发布版本暂未更新。
安装oos工具
pip install openstack-sig-tool
创建oos环境
1
2
3sshpass在`oos env create`过程中被使用,用于配置对目标主机的免密访问
dnf install sshpass
oos env manage -r 22.03-lts-sp2 -i TARGET_MACHINE_IP -p TARGET_MACHINE_PASSWD -n test-oos替换TARGET_MACHINE_IP为目标机ip (使用ifconfig查看,如eth0的ip)、TARGET_MACHINE_PASSWD为目标机密码,即登陆当前环境的密码。
部署OpenStack
1> 对于禁止密码登陆的机器,需要手动注入公匙
(oos/etc/key_pair/id_rsa.pub)
到~/.ssh/authorized_keys中,否则下面的命令会报错2> 安装cinder时需要有对应的磁盘/dev/vdb
3> 其他安装可参考流程/usr/local/etc/oos/playbooks/entry.yaml
1
oos env setup test-oos -r wallaby
安装完毕后可使用如下命令创建虚拟机
1
2
3
4
5
6openstack flavor create --disk 1 --vcpus 2 --ram 1024 --id 1 --public my-flavor
wget http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-aarch64-disk.img -O cirros-0.5.2.img
openstack image create --disk-format qcow2 --container-format bare --file ./cirros-0.5.2.img --public my-image -c id -f value
openstack network create --external --share public-network --provider-network-type flat --provider-physical-network provider --default -c id -f value
openstack subnet create --network public-network --allocation-pool start=10.100.100.189,end=10.100.100.239 --dns-nameserver 100.125.128.250 --gateway 10.100.100.1 --subnet-range 10.100.100.0/24 public-subnet
openstack server create --flavor my-flavor --image my-image --network public-network --password root my-server1
openstack server list
创建虚拟机后通过openstack server list命令查询虚拟机信息,回显会打印虚拟机id和ip
可使用virsh console或ssh 命令连接虚拟机
2. 使用devstack安装
使用devstack部署OpenStack,干净的环境大概率不会报错
安装步骤如下(master分支)
安装前准备
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28cd /opt/
git clone https://opendev.org/openstack/devstack.git
/opt/devstack/tools/create-stack-user.sh
chown -R stack:stack /opt/devstack
chmod -R 755 /opt/devstack
chmod -R 755 /opt/stack
切换stack用户
su stack
确保stack用户的PATH环境变量包含了`/usr/sbin`
PATH=$PATH:/usr/sbin
新增配置文件
vi /opt/devstack/local.conf
[[local|localrc]]
DATABASE_PASSWORD=root
RABBIT_PASSWORD=root
SERVICE_PASSWORD=root
ADMIN_PASSWORD=root
OVN_BUILD_FROM_SOURCE=True
arm环境增加如下配置
[[post-config|$NOVA_CONF]]
[libvirt]
cpu_mode=custom
cpu_model=cortex-a72devstack的master分支要求libvirt版本大于7.0
arm环境安装软件包edk2时缺少arm配置,建议使用下面的yum源安装libvirt和edk2相关软件包
https://eur.openeuler.openatom.cn/coprs/g/sig-openstack/Libvirt-7.X/repo/openeuler-22.03_LTS/group_sig-openstack-Libvirt-7.X-openeuler-22.03_LTS.repo部署OpenStack
进入/opt/devstack目录,执行./stack.sh,等待部署完成
日志
devstack将日志生成到文件需要在部署前在local.conf中添加配置
未配置日志内容可使用systemd的方法查看日志,如查看nova-compute
服务的日志,服务名称可在/etc/systemd/system目录下查看,
其名称携带devstack@前缀,如下图所示
systemd日志查看命令举例如下:
1
journalctl --unit devstack@n-cpu.service
systemd调试方法
注:退出调试重启systemd服务时,一定要删除断点
nova-compute调试举例如下:1> 在对应的安装目录文件设置断点
import pdb;pdb.set_trace()2> 停止systemd服务
systemctl stop devstack@n-cpu.service3> 执行启动服务
查看对应服务,在终端1执行该命令
4> 调试
在终端2执行OpenStack创建服务命令,代码会停止在断点处
另外,对于uwsgi这种服务,可能需要加上--honour-stdin才能调试,
可使用uwsgi --help查看参数含义