一、 安装OpenStack客户端并创建一个云主机
1、 安装OpenStack client端,方便后期使用命令行操作OpenStack
[root@xuegod120 ~]# pip install python-openstackclient
错误:
ERROR: Cannot uninstall ‘ipaddress’. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
解决方法:
原因是因为已经安装了ipaddress,所以在此安装报错,执行下列命令,忽略已经安装的包,再次安装即可
[root@xuegod120 ~]# pip install --ignore-installed ipaddress
[root@xuegod120 ~]# pip install python-openstackclient #再次执行安装即可
2、 安装OpenStack网络相关命令
[root@xuegod120 ~]# pip install python-neutronclient
注:这里如果提示pyinotify已安装,执行如下命令即可,原理同上一个错误
pip install –ignore-installed pyinotify
3、 使用init-runonce脚本创建一个openstack云项目
OpenStack云主机有两张网卡,其中ens38无IP地址,云主机使用VXLAN技术将ens38和虚拟的vm1通过虚拟路由器联动起来。
ens33网卡是云平台宿主机和外部进行通讯使用,ens38是云平台和虚拟主机通讯使用。
OpenStack以外的主机访问OpenStack云主机就是通过ens38来进行访问。
1) 修改init-runonce脚本,指定浮动IP地址范围
[root@xuegod120 ~]# vim /usr/share/kolla-ansible/init-runonce
改:
19 EXT_NET_CIDR=‘10.0.2.0/24’
20 EXT_NET_RANGE=‘start=10.0.2.150,end=10.0.2.199’
21 EXT_NET_GATEWAY=‘10.0.2.1’
为:
EXT_NET_CIDR=‘192.168.0.0/24’
EXT_NET_RANGE=‘start=192.168.0.200,end=192.168.0.230’
EXT_NET_GATEWAY=‘192.168.0.1’
注:192.168.0.0的网络,就是我上面ens38接入的局域网中的地址,这个网络是通过局域网络中的路由器访问互联网。配置好这个,生成的云主机实例,就可以直接和外网通信了。
2) 使用init-runonce脚本创建一个OpenStack云项目
[root@xuegod120 ~]# ll /etc/kolla/admin-openrc.sh
-rw-r–r--. 1 root root 355 Sep 5 13:25 /etc/kolla/admin-openrc.sh
#如果没有这个文件,执行下面命令即可生成
[root@xuegod120 ~]# kolla-ansible -i /etc/kolla/all-in-one post-deploy #执行这个文件会生成etc/kolla/admin-openrc.sh 脚本文件。
先加载这个文件,把文件中的环境变量加入到系统内中,才有权限执行下面的命令,不然会报如下错误:
[root@xuegod120 kolla-ansible]# ./init-runonce
No Keystone credentials specified. Try running source /etc/kolla/admin-openrc.sh command
#必须先加载admin-openrc.sh这个文件
[root@xuegod120 ~]# source /etc/kolla/admin-openrc.sh #加载环境变量
[root@xuegod120 ~]# cd /usr/share/kolla-ansible/
[root@xuegod120 kolla-ansible]# ./init-runonce #执行脚本
错误:
Traceback (most recent call last):
File “/usr/bin/openstack”, line 6, in
from openstackclient.shell import main
File “/usr/lib/python2.7/site-packages/openstackclient/shell.py”, line 24, in
from osc_lib import shell
File “/usr/lib/python2.7/site-packages/osc_lib/shell.py”, line 33, in
from osc_lib.cli import client_config as cloud_config
File “/usr/lib/python2.7/site-packages/osc_lib/cli/client_config.py”, line 18, in
from openstack.config import exceptions as sdk_exceptions
File “/usr/lib/python2.7/site-packages/openstack/init.py”, line 17, in
import openstack.connection
File “/usr/lib/python2.7/site-packages/openstack/connection.py”, line 187, in
from openstack.cloud import openstackcloud as _cloud
File “/usr/lib/python2.7/site-packages/openstack/cloud/openstackcloud.py”, line 21, in
import dogpile.cache
File “/usr/lib/python2.7/site-packages/dogpile/cache/init.py”, line 1, in
from .region import CacheRegion, register_backend, make_region # noqa
File “/usr/lib/python2.7/site-packages/dogpile/cache/region.py”, line 15, in
from decorator import decorate
ImportError: cannot import name decorate
解决方法:升级decorator后再次执行脚本
pip install -U decorator
[root@xuegod120 kolla-ansible]# ./init-runonce
注:这里需要注意,如果再部署OpenStack时候,使用的stein版本的,就需要开启cinder(默认是开启的,修改/etc/kola/globasl.yml文件);如果使用rocky版本部署,就需要关闭cinder参数。
执行命令:
openstack server create
–image cirros
–flavor m1.tiny
–key-name mykey
–network demo-net
demo1
3) 登录OpenStack的web界面查看创建的实例
这里显示的调度状态,通常如果OpenStack的内存不足,就是报错。所以在进行实验时,最好给足内存,防止因为内存不足报错。
4) 给创建的虚拟机实例分配浮动IP地址和外界通讯
5) 查看网络拓扑
绑定完毕后即可和外界互通
二、 查看创建的虚拟机实例和OpenStack项目中的信息
1、 查看路由信息
[root@xuegod120 ~]# openstack route list
[root@xuegod120 ~]# openstack router show demo-router
2、 查看网络列表
[root@xuegod120 ~]# openstack network list
3、 查看子网信息
[root@xuegod120 ~]# openstack subnet list
4、 查看云主机实例信息
[root@xuegod120 ~]# openstack server show demo2