Openstack是一种免费的开源私有云软件,通过它我们可以使用单个图形化界面和通过openstack cli命令轻松管理数据中心的计算,网络和存储资源。
在本文中,我们将演示如何在具有packstack的CentOS 8系统上安装openstack。
Packstack是一个命令行实用程序,可以使用packstack部署openstack的不同组件。带有packstack的openstack部署通常用于POC(概念验证)目的,因此不建议将packstack用于生产部署。使用TripleO方法在生产环境中部署openStack。
OpenStack的最低系统要求:
- 最低CentOS 8
- 双核处理器
- 8 GB内存
- 40 GB可用磁盘空间
- 稳定的互联网连接
- 至少一张网卡
- 主机名 – openstack.example.com
- IP – 192.168.1.8
- 网络 – 192.168.1.0/24
让我们深入研究openstack的安装步骤:
步骤1:主机名并更新/etc/hosts文件
打开终端并使用以下hostnamectl命令设置主机名,
[root@localhost ~]# hostnamectl set-hostname "openstack.example.com"
[root@localhost ~]# exec bash
使用echo命令运行,以在/etc/hosts文件中添加本地解析。
[root@openstack ~]# echo -e "192.168.1.8\topenstack.example.com" >> /etc/hosts
步骤2:禁用NetworkManager并使用network-scripts配置网络
Network-Manager是CentOS 8中用于管理网络的默认工具,但是对于openstack,我们必须禁用它,因为openstack网络无法与network-manager一起正常工作。为了替换NetworkManager,我们必须安装network-scripts。
要禁用network-manager,请运行以下命令,
[root@openstack ~]# systemctl disable NetworkManager
[root@openstack ~]# systemctl stop NetworkManager
运行以下dnf命令以安装network-scripts,
[root@openstack ~]# dnf install network-scripts -y
一旦安装了network-scripts软件包,我们就可以使用本机network.service管理网络(ifcfg- *文件)。
现在,让我们在ifcfg-enp0s3文件中配置IP地址并启动网络服务,
root@openstack ~]# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
保存并退出文件,然后使用以下命令启动网络服务,
[root@openstack ~]# systemctl start network
[root@openstack ~]# systemctl enable network
现在,使用ip命令验证是否已将IP分配给NIC(enp0s3),
[root@openstack ~]# ip a s enp0s3
步骤3:启用OpenStack repositories并安装packstack工具
在撰写本文时,victoria openstack已经稳定可用,因此请运行以下命令来配置其repositories,
[root@openstack ~]# dnf config-manager --enable PowerTools
[root@openstack ~]# dnf install -y centos-release-openstack-victoria
现在,安装所有可用的更新并重新启动系统,
[root@openstack ~]# dnf update -y
[root@openstack ~]# reboot
重新启动后,登录系统,执行以下dnf命令安装packstack工具。
[root@openstack ~]# dnf install -y openstack-packstack
步骤4:生成答案文件并使用packstack安装openstack
使用packstack命令生成应答文件,
[root@openstack ~]# packstack --gen-answer-file /root/openstack-answer.txt
生成应答文件后,使用vi编辑器编辑以下参数,
[root@openstack ~]# vi /root/openstack-answer.txt
..............
CONFIG_HEAT_INSTALL=y
CONFIG_PROVISION_DEMO=n
CONFIG_KEYSTONE_ADMIN_PW=P@ssw0rd
CONFIG_NEUTRON_OVN_BRIDGE_IFACES=br-ex:enp0s3
..............
保存并退出文件。
根据您的设置替换接口名称(enp0s3)。
注意:默认的“租户”网络类型的驱动器设置为“ genve ”,默认的neutron类型的驱动器设置为“ genve 和 flat ”。如果希望更改这些默认参数,请更新应答文件中的以下几行。在此演示中,我将不更新这些参数。
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=geneve,flat
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=geneve
运行以下命令以使用应答文件开始openstack部署。
[root@openstack ~]# packstack --answer-file /root/openstack-answer.txt
部署大约需要20到30分钟,具体取决于您系统的硬件和互联网速度。成功安装后,我们将获得以下信息:
现在,验证是否已将来自enp03接口的IP分配给网桥br-ex,并确认是否已将接口enp0s3作为端口添加到ovs-bridge中。
运行以下命令:
[root@openstack ~]# ip a s enp0s3
[root@openstack ~]# ip a s br-ex
[root@openstack ~]# ovs-vsctl show
上面的输出确认安装成功,并且还根据应答文件配置了网络。
步骤5:访问Horizon仪表板
现在尝试登录Horizon仪表板。在上面的输出中已经指定了URL,在我的情况下,URL是http://192.168.1.8/dashboard,使用我们在应答文件中指定的用户名admin和密码。
可以查看认证文件“ keystonerc_admin ”获取登录凭据,
现在,让我们通过启动一个实例来测试openstack部署。
步骤6:通过启动实例测试和验证OpenStack安装
在openstack中启动实例之前,首先必须创建网络,路由器和上传镜像。因此,让我们首先使用以下neutron命令在管理租户中创建外部网络,
[root@openstack ~]# source keystonerc_admin
[root@openstack ~(keystone_admin)]# neutron net-create external_network --provider:network_type flat --provider:physical_network extnet --router:external
现在,通过运行以下neutron命令,将您的flat网络的子网添加到外部网络,
[root@openstack ~(keystone_admin)]# neutron subnet-create --name public_subnet --enable_dhcp=True --allocation-pool=start=192.168.1.210,end=192.168.1.230 --gateway=192.168.1.1 external_network 192.168.1.0/24
通过执行以下neutron命令创建路由器,并使用外部网络设置其网关,
[root@openstack ~(keystone_admin)]# neutron router-create dev-router
[root@openstack ~(keystone_admin)]# neutron router-gateway-set dev-router external_network
创建私有网络并将一个子网附加到该私有网络,运行以下neutron命令,
[root@openstack ~(keystone_admin)]# neutron net-create pvt_net
[root@openstack ~(keystone_admin)]# neutron subnet-create --name pvt_subnet pvt_net 10.20.1.0/24
使用以下neutron命令将pvt_net接口添加到路由器“ dev_router ”,
[root@openstack ~(keystone_admin)]# neutron router-interface-add dev-router pvt_subnet
现在下载Cirros 镜像,然后上传到OpenStack中,
[root@openstack ~(keystone_admin)]# wget http://download.cirros-cloud.net/0.5.1/cirros-0.5.1-x86_64-disk.img
[root@openstack ~(keystone_admin)]# openstack image create --disk-format qcow2 --container-format bare --public --file cirros-0.5.1-x86_64-disk.img cirros
现在回到地Dashboard仪表板并验证网络拓扑,
上面确认了私有和外部网络以及路由器已经正确设置。
创建虚拟机之前的最后一步,更新默认安全组,添加icmp和ssh入口规则,在网络选项卡下单击“安全组”,单击“管理规则”,然后单击“添加规则”,
同样为ssh添加规则,点击添加,
现在,启动openstack实例的所有要求都已满足。
单击计算选项卡,然后选择实例选项,然后单击“启动实例”,
成功启动虚拟机后,我们将获得以下内容:
现在,将浮动IP关联到实例(demo_vm),在“操作”选项卡下,选择“关联浮动IP ”,
现在选择IP或单击+号从外部网络获取浮动IP,然后将其关联,
IP与虚拟机关联后,“ IP地址”选项下将显示浮动IP ,如下所示:
现在尝试使用浮动ip访问此demo_vm,使用cirros作为用户,并使用' gocubsgo '作为密码,
上面的输出确认我们可以通过浮动ip访问我们的实例。
总结:
以上已经通过Packstack在最新的CentOS8.2上成功安装好了OpenStack Victoria版本。相对以往,OpenStack从Ussuri开始不再支持Python2,而CentOS8默认为Python3。因此后续的OpenStack版本推荐的系统也将由CentOS7升级为CentOS8。
本次安装过程也遇到一些问题,比如CentOS8开始,默认不再使用network-scripts管理网络,且系统默认也不安装network-scripts相应的软件包。但是对于Openstack,我们必须禁用它,因为Openstack网络无法与network-manager一起正常工作。