#打卡不停更#[图文并茂]packstack部署train版openstack(代码片段)

author author     2022-12-04     321

关键词:

Packstack部署openstack-train

介绍如何在centos7.9中使用packstack部署openstack-train。

首先需要安装一个最小化安装的centos7.9,按照你的网络环境配置好网络,然后重启。

这里我的环境是VMware虚拟机,ip是192.168.10.30.

首先我们需要关闭防火墙和NetworkManager

systemctl disable --now firewalld
systemctl disable --now NetworkManager
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config 
setenforce 0

由于NetworkManager的部分功能和openstack的neutron会发生冲突,这里我们最好把NetworkManager卸载掉,因为测试的时候发现NetworkManager有时候会自己启动。

#yum remove -y NetworkManager

然后我们需要设置一下需要的yum源

mv /etc/yum.repos.d/* /media
curl -o /etc/yum.repos.d/centos.repo https://mirrors.aliyun.com/repo/Centos-7.repo
cat <<EOF>>/etc/yum.repod.d/openstack-train.repo
[openstack-train]
name=openstack-train
baseurl=https://mirrors.aliyun.com/centos/7.9.2009/cloud/x86_64/openstack-train/
gpgcheck=0
enabled=1
[kvm-qemu]
name=kvm-qemu
baseurl=https://mirrors.aliyun.com/centos/7.9.2009/virt/x86_64/kvm-common/
gpgcheck=0
enabled=1
EOF

为了方便大家,我已经把命令都打好了,直接复制运行就可以了。

需要注意的是不要加入epel源,其中的一个模块,提供的版本高于openstack的需要,加上epel源会导致后面部署失败。这里也不建议进行软件包的升级。

接着需要改一下主机名,为什么呢,因为packstack部署完后,nova模块调度的时候,他那个查找的list里面会和localhost发生冲突,也就是找不到调度的主机,这里我们把主机名改一下就可以规避这个错误,不会发生后面创建实例的时候状态错误,当然这不是唯一的处理方法,不过我认为是简单一点的。

hostnamectl set-hostname packstack-allinone

主机名的话随便更改,只要不是原来的localhost就可以的。

做好这些之后,就可以重启一下,接下来需要安装packstack来进行部署。建议关机之后打个快照,如果后面出错了那么可以回到这个地方重来。

yum install -y openstack-packstack
#安装会比较慢,因为涉及的模块很多,大概安装需要五分钟左右。

最后就是使用packstack来进行需要的部署了,一般的allinone模式会比较简单,也叫做自动模式,就是使用packstack提供的建议选项来安装,在官网上提供的建议命令如下:

packstack --allinone

然后就是静静的等待,大概需要安装40分钟左右,需要说明的是,这样确实可以安装成功,但是如果你是用虚拟机做的实验的话,后面还需要改网络设置,因为openstack默认网络模式是vlan,这个模式需要一个真实的交换机来提供信号转发,否则你是无法进行通信的。

所以实际上我建议你在部署的时候就添加参数来对网络设置进行一个更改,也就是在部署时选择与现有的外部网络一起使用

#packstack --allinone --provision-demo=n --os-neutron-ovn-bridge-mapping=extnet:br-ex --os-neutron-ovn-bridge-interfaces=br-ex:eth0
#注意,这里的eth0指的是你的外部网络的的网卡名

在实际测试中,单网卡也是可以运作的,双网卡则是有需要的情况下使用。

当然,由于openstack已经默认使用ovn后端来运作网络,如果你希望使用ovs来作为网络的后端,你也可以使用以下网络

# packstack --allinone --os-neutron-l2-agent=openvswitch --os-neutron-ml2-mechanism-drivers=openvswitch --os-neutron-ml2-tenant-network-types=vxlan --os-neutron-ml2-type-drivers=vxlan,flat --provision-demo=n --os-neutron-ovs-bridge-mappings=extnet:br-ex --os-neutron-ovs-bridge-interfaces=br-ex:eth0

同样的,这里的eth0是指外部网络的网卡名,通常情况下,在centos7上是ens33,在centos8上是ens160。

当然我在实验的时候规定了我需要的外部网络和vxlan模式。你可以参照我的命令来进行部署。

#packstack --allione --provision-demo=n --os-neutron-ml2-tenant-network-types=vxlan --os-neutron-ml2-type-drivers=vxlan,flat --provision-demo=n --os-neutron-ovn-bridge-mappings=extnet:br-ex --os-neutron-ovn-bridge-interfaces=br-ex:eth0

还是需要注意,eth0需要你使用外部网络的网卡名来进行替代,在openstack的dashaboard页面进行网络设置时,Flat模式下外部网卡名是”extnet“,如果你需要使用其他名字,在上面的命令中替换extnet所在的字段即可。

使用命令开始packstack的部署,等待一段时间后,部署就会完成,如果出现什么意外报错的话,当然我发生过很多次了。这种情况下一般只能重来一遍,所以如果比较担心的小伙伴不用怕,前面是有一个快照的,大不了回到快照再进行这一步。

不过,如果网络没有问题呢,一切顺利的话,就会成功部署。

像下面这个样子,我把整个packstack部署的时候的输出打印在下面了。

我的实验环境是改过网卡名的,所以我的网卡就是eth0.

[root@packstack-allinone ~]# packstack --allinone --os-neutron-ml2-tenant-network-types=vxlan --os-neutron-ml2-type-drivers=vxlan,flat --provision-demo=n --os-neutron-ovn-bridge-mapping=extnet:br-ex --os-neutron-ovn-bridge-interfaces=br-ex:eth0
Welcome to the Packstack setup utility

The installation log file is available at: /var/tmp/packstack/20220929-212518-c9jFuf/openstack-setup.log

Installing:
Clean Up                                             [ DONE ]
Discovering ip protocol version                      [ DONE ]
Setting up ssh keys                                  [ DONE ]
Preparing servers                                    [ DONE ]
Pre installing Puppet and discovering hosts details [ DONE ]
Preparing pre-install entries                        [ DONE ]
Setting up CACERT                                    [ DONE ]
Preparing AMQP entries                               [ DONE ]
Preparing MariaDB entries                            [ DONE ]
Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]
Preparing Keystone entries                           [ DONE ]
Preparing Glance entries                             [ DONE ]
Checking if the Cinder server has a cinder-volumes vg[ DONE ]
Preparing Cinder entries                             [ DONE ]
Preparing Nova API entries                           [ DONE ]
Creating ssh keys for Nova migration                 [ DONE ]
Gathering ssh host keys for Nova migration           [ DONE ]
Preparing Nova Compute entries                       [ DONE ]
Preparing Nova Scheduler entries                     [ DONE ]
Preparing Nova VNC Proxy entries                     [ DONE ]
Preparing OpenStack Network-related Nova entries     [ DONE ]
Preparing Nova Common entries                        [ DONE ]
Preparing Neutron API entries                        [ DONE ]
Preparing Neutron L3 entries                         [ DONE ]
Preparing Neutron L2 Agent entries                   [ DONE ]
Preparing Neutron DHCP Agent entries                 [ DONE ]
Preparing Neutron Metering Agent entries             [ DONE ]
Checking if NetworkManager is enabled and running    [ DONE ]
Preparing OpenStack Client entries                   [ DONE ]
Preparing Horizon entries                            [ DONE ]
Preparing Swift builder entries                      [ DONE ]
Preparing Swift proxy entries                        [ DONE ]
Preparing Swift storage entries                      [ DONE ]
Preparing Gnocchi entries                            [ DONE ]
Preparing Redis entries                              [ DONE ]
Preparing Ceilometer entries                         [ DONE ]
Preparing Aodh entries                               [ DONE ]
Preparing Puppet manifests                           [ DONE ]
Copying Puppet modules and manifests                 [ DONE ]
Applying 192.168.10.30_controller.pp
192.168.10.30_controller.pp:                         [ DONE ]          
Applying 192.168.10.30_network.pp
192.168.10.30_network.pp:                            [ DONE ]       
Applying 192.168.10.30_compute.pp
192.168.10.30_compute.pp:                            [ DONE ]       
Applying Puppet manifests                            [ DONE ]
Finalizing                                           [ DONE ]

 **** Installation completed successfully ******

Additional information:
 * Parameter CONFIG_NEUTRON_L2_AGENT: You have chosen OVN Neutron backend. Note that this backend does not support the VPNaaS or FWaaS services. Geneve will be used as the encapsulation method for tenant networks
 * A new answerfile was created in: /root/packstack-answers-20220929-212518.txt
 * Time synchronization installation was skipped. Please note that unsynchronized time on server instances might be problem for some OpenStack components.
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.10.30. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.168.10.30/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20220929-212518-c9jFuf/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20220929-212518-c9jFuf/manifests

我运行的时候非常顺利,然后如果你也是如此顺利的话,那么opesntack的dashboard的登录页面是https://你的IP/dashboard。登录的用户名为admin,密码存放在root目录下的keystone_admin文档中,查看即可。

一般初始密码都是很长然后也不好,我们先登录然后可以改密码。

dashboard页面是这个样子。

用户名我们直接使用admin,然后密码是在root目录下的keystonerc_admin。这个文档内容是这个样子的

[root@packstack-allinone ~]# cat keystonerc_admin 
unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin
    export OS_PASSWORD=dc7d07eb03894b2e
    export OS_REGION_NAME=RegionOne
    export OS_AUTH_URL=http://192.168.10.30:5000/v3
    export PS1=[\\u@\\h \\W(keystone_admin)]\\$ 
    
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3

admin用户的密码的话就是第三行,像我现在的密码的话就是dc7d07eb03894b2e。大家可以参照一下。

登录好的话呢,界面应该是这个样子的。

怎么修改密码呢,在右上角,有个admin的按钮,我们点一下,下面有个设置

现在你看我们的左边界面就会有一个更改密码的一个选项,我们直接在里面更改密码就可以了,首先我们填入原密码,然后输入我们想要的密码,保存就可以了。

保存之后会跳转需要重新登录,所以这里我也是没截到图,应该大家都是会操作的。

这里有一个需要注意的地方,就是我们不是改了密码了吗,那么原来root目录下的那个keystone_admin文件也需要相应的更改,把密码那一行注释掉,然后复制一行在下面,把你现在的密码填进去。。。这样后面才能操作,不然你改了密码,后面用旧密码来输入操作,keystone就会报一个无效认证的错误。

是不是感觉改了个寂寞,这里把改过的文件填在这里,我是改成这个样子的

[root@packstack-allinone ~]# cat keystonerc_admin 
unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin
    #export OS_PASSWORD=dc7d07eb03894b2e
    export OS_PASSWORD=000000
    export OS_REGION_NAME=RegionOne
    export OS_AUTH_URL=http://192.168.10.30:5000/v3
    export PS1=[\\u@\\h \\W(keystone_admin)]\\$ 
    
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3
    

可以看到我改过的密码是000000。

接下来肯定帮人帮到底,把上传镜像和创建网络还有创建实例都演示一遍的,不过呢,最近在参加活动,这个那个嗯,我把这些步骤分成几个文章发表。然后每天打算发布2篇。

本文点赞过十个,就加紧发布下一篇。觉得对你有帮助就帮忙点个赞呗!

#打卡不停更#-openharmony/docs开发入门(代码片段)

作者:朱子道杨成前言不管是作为软件开发的爱好者还是已经从事软件开发这个行业的从业者,对于接触一种全新的系统OpenHarmony。学习OpenHarmony,需要清楚OpenHarmony这个系统是什么,能干什么,今日分享从设备开发和应用开发两... 查看详情

#打卡不停更#openharmony-应用开发入门指南(代码片段)

作者:余香鑫前言了解OpenHarmony能够开发一些简单的OpenHarmony应用一、了解OpenHarmonyOpenHarmony是由开放原子开源基金会(OpenAtomFoundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,搭建一个智能终端设备操作系统... 查看详情

#打卡不停更#家庭健康管理平台(代码片段)

0.项目简介身体健康是一切生产生活的硬性基础。健康是福,一切安好,未来才可期。为什么经常跑步体重缺还在往上飘?突发紧急情况怎么处理?在数字时代,如何更好的为人们提供健康福祉、普及健康知识?如何进一步驱动... 查看详情

#打卡不停更#ffh浅析ability框架中stage模型与fa模型的差异(代码片段)

(#打卡不停更#【FFH】浅析Ability框架中Stage模型与FA模型的差异)Aility框架概述Ability是应用所具备能力的抽象,也是应用程序的基本组成单元。OpenHarmony与HarmonyOS的应用程序APP由一个或多个Hap包组成,每个Hap可以包含一个或多个Abilit... 查看详情

#打卡不停更#harmonyos基于arkui(ets)实现雷达扫描(代码片段)

作者:杨尚晓前言雷达扫描是一个比较有科技感的东西,对于科幻迷来说,科幻电影里基本都能看到的画面,一个大大的屏幕上,可以看到雷达扫描的绿幕效果。下面我们使用三种方式来实现这样的雷达效果。项目说明工具版本... 查看详情

#打卡不停更#harmonyos-基于arkui(js)实现虚拟摇杆组件(代码片段)

作者:杨尚晓前言虚拟摇杆在移动端游戏中是最常见看的,用来实现游戏中的精灵移动。本案例中使用jspai中的div和image组件来实现的虚拟摇杆组件,然后监听touch事件获取滑动的方向和位置x,y。开发环境说明工具版本:OpenHarmon... 查看详情

#打卡不停更#openharmony数据转码应用开发实战(上)(代码片段)

背景OpenHarmony的应用开发支持C++、JS、eTS,从已有版本的演进路线来看,eTS是未来重点的技术路线。对于刚入门OpenHarmony应用开发的小伙伴来说,eTS可能比较陌生,如果有一个合适的实战项目来练手,那么对技术能力提升是非常有... 查看详情

基于stm32的串口收发讲解(hal库)#打卡不停更#(代码片段)

(基于STM32的串口收发程序(HAL库))介绍串口(UART通用异步收发器,TTL)通讯是一种设备间的串行全双工通讯方式。由于UART是异步传输,没有传输同步时钟,为了保证数据的正确性,UART采用16倍数据波特率的时钟进行采样。因为... 查看详情

#打卡不停更#harmonyos-基于arkui(ets)实现心电图组件(代码片段)

作者:杨尚晓前言随着大家生活水平的提升,越来越多的人注重自身身心健康,养生成了目前比较热门的活动。心电图是检测心脏活动状态的直观表现,可以通过心电图来观察人提的健康状况。响应鸿蒙万物互联的口号,肯定少... 查看详情

#打卡不停更#三方库移植之napi开发[4]异步调用:callback&promise(代码片段)

三方库移植之NAPI开发系列文章《HelloOpenHarmonyNAPI》、《C/C++与JS的数据类型转换》其接口都是同步的。对IO、CPU密集型任务需要异步处理。NAPI支持异步模型,提供了Promise、Callback2种方式。往期回顾:三方库移植之NAPI开发[1]—HelloO... 查看详情

#打卡不停更#编译效率快三倍,使用wsl2编译openharmony嘎嘎得劲!!(代码片段)

笔者发现使用wsl(WindowsSubsystemforLinux,适用于Linux的Windows子系统)编译openharmony镜像比传统虚拟机快3倍以上。编译环境换成wsl后,编译ohos只需要传统虚拟机上三分之一的时间。下面分享使用经验如下:(目录)为什么使用WSL2比传... 查看详情

#打卡不停更#openharmony-arkui(ts)声明式开发之列表拖动排列(代码片段)

作者:梁青松项目介绍本项目基于OpenHarmony的ArkUI框架:TS扩展的声明式开发范式,关于语法和概念直接看官网官方文档地址:基于TS扩展的声明式开发范式,因为OpenHarmony的API相对于HarmonyOS的API,功能上比较完善和成熟的,有些... 查看详情

#打卡不停更#ffhopenharmony学生挑战赛分享-少儿语言教育app(代码片段)

Openharmony学生挑战赛经验分享前言本次参赛的项目是基于openHarmony开发的北向应用-少儿语言文化教育APP。从项目成立到初版成型再到参加比赛,这一路上遇到了不少困难,我也从团队协作、产品迭代、技术等方面学到了很多宝贵... 查看详情

#打卡不停更#简单的js鸿蒙小游戏——飞行棋之游戏逻辑(代码片段)

前言我们之前完成了游戏的基本布局,今天我们接着来讲下如何实现飞行棋的游戏逻辑。游戏逻辑掷骰子:随机地掷出点数1~6,根据骰子点数和当前阵营的棋子状态改变对应棋子的disabled属性,以控制该棋子是否可交互移动,若... 查看详情

#打卡不停更#三方库移植之napi开发[3]通过ide开发napi工程(代码片段)

在三方库移植之NAPI开发[1]—HelloOpenHarmonyNAPI一文中,笔者开发的是一个rom包的napi工程。该工程需要编译烧录固件,C++的动态库会集成到开发板的ROM中。在本篇文章中,笔者使用三方库移植之NAPI开发[1]—HelloOpenHarmonyNAPI中一样的he... 查看详情

packstack部署遇到的坑

centos7部署icehouse遇到了好多坑第一次安装使用使用 packstack--allinone 失败重复安装的时候使用第一次生成的 answer-filepackstack--answer-file=/root/packstack-answers-20161115-033728.txt  SequenceError:Errorappear 查看详情

#打卡不停更#elt.zip啃论文俱乐部——统计压缩编码机理分析(代码片段)

本文出自ELT.ZIP团队,ELT<=>Elite(精英),.ZIP为压缩格式,ELT.ZIP即压缩精英。成员:上海工程技术大学大三学生合肥师范学院大三学生成都信息工程大学大二学生黑龙江大学大二学生沈阳农业大学大二学生东南大学成贤学院大... 查看详情

#打卡不停更#简单的js鸿蒙小游戏——飞行棋之页面构建(代码片段)

前言飞行棋大家应该都玩过吧,红、绿、黄、蓝四名玩家轮流掷骰子移动棋子,争先到达终点,期间还要提防己方棋子不被击落。今天就先带大家学习下如何完成飞行棋游戏的简单布局。项目结构页面构建游戏的布局并不复杂,... 查看详情