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页面是这个样子。

image-20220930104122879

用户名我们直接使用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。大家可以参照一下。

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

image-20220930104536842

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

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

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

这里有一个需要注意的地方,就是我们不是改了密码了吗,那么原来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篇。

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