CL210是红帽的openstack课程,OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目,openstack虽然模块虽然比较多,但由于其大部分组件都可以在dashboard里进行点击配置,所认实际上也并不复杂。,这里以一份找到的openstack考题作为openstack的入门吧。

一、安装openstack

openstack-packstack
openstack-packstack

1、安装packstack

packstack是个一键安装工具包,这里我们使用packstack进行安装 ,所装上packstack包并配置key认证。

1# ssh-keygen   (考试时一般已经有,不需要单独生成)
2# ssh-copy-id  root@servera.pod0.example.com
3# yum -y update     升级主机系统并reboot
4# yum -y install openstack-packstack

2、生成和编辑answer文件

安装完packstack后,可以利用packstack进行安装,生成后answer文件,如下:

1# packstack --gen-answer-file=answer.txt

接下来编辑answer.txt文件

1、修改Horizon走SSL,修改为Y ---找到 “ CONFIG_HORIZON_SSL=n ”项,将n改为y,这里是让Horizon(也就dashborad UI组件)走ssl加密认识;

2、修改keystone登陆密码 --- 找到 “ CONFIG_KEYSTONE_ADMIN_PW= ” 项,将ADMIN_PW后面的密码修改为题目要求的,这个密码是dashborad登陆时要用到的密码;

3、swift服务默认会安装,这步略过;

4、NTP_SERVERS修改 ---找到 “ CONFIG_NTP_SERVERS= ” 项改为题目指定的ntp服务器;

5、修改cinder-volumes项 --- 在CL210环境就默认已经有一个建好的卷cinder-volums,这里将“ CINDER_VOLUMES_CREATE=y ” 修改为n,实际生产中这项不用改;

6、由于不需要配置demo,找到 ” CONFIG_PROVISION_DEMO=y ” 修改为n 。

上面几项放在一起,修改内容结果为:

1CONFIG_NTP_SERVERS=172.24.1.254
2CONFIG_KEYSTONE_ADMIN_PW=Flectrag9
3CONFIG_HORIZON_SSL=y
4CONFIG_CINDER_VOLUMES_CREATE=n
5CONFIG_PROVISION_DEMO=n

使用刚刚修改过的answer文件,使用packstack一键安装,如下:

1# packstack --answer-file=answer.txt

3、网络配置

在配置下一步之前还需要先将管理机的网络配置为桥接模式:

 1[root@servera network-scripts]# cp ifcfg-eth0  ifcfg-br-ex
 2[root@servera network-scripts]#vi  ifcfg-br-ex
 3DEVICE=br-ex    ---*
 4BOOTPROTO=static
 5ONBOOT=yes
 6TYPE=OVSBridge-----*
 7DEVICETYPE=ovs  ---*
 8USERCTL=yes
 9PEERDNS=yes
10IPV6INIT=no
11IPADDR=172.25.0.10
12NETMASK=255.255.255.0
13GATEWAY=172.25.0.254
14DNS1=172.25.254.254
15[root@servera network-scripts]# cat ifcfg-eth0
16DEVICE=eth0
17ONBOOT=yes
18TYPE=OVSPort   ------*
19DEVICETYPE=ovs   ----*
20OVS_BRIDGE=br-ex  ---*
21[root@servera ~]# systemctl restart  network
22[root@servera ~]# ovs-vsctl show
23Bridge br-ex
24        Port "eth0"
25            Interface "eth0"
26        Port br-ex
27            Interface br-ex
28                type: internal

注: 其中需要修改的部分已使用 ” —* ” 行进行了标注 .

修改完成后通过ifconfig查看网络配置时,会发现IP在br-ex 接口上时就对了。

二、配置project工程

project 我们可以理解为组或者部分的概念,比如工程组、现网组、开发组等,每个组的服务器单独分开,便于各自单独管理。

tenants-projects
tenants-projects

配置tenants projects 非常简单,打开openstack的dashborad界面,使用刚刚在keystone中配置的用户密码登陆即可。找到indenty --- projects ---create project即可:

create project
create project

三、创建用户

openstack-user
openstack-user

创建用户的步骤是indenty ---users ---Create user ,不过在增加用户时需要注意选择不同的角色:

create user
create user

四、创建flavor

flavor
flavor

flavor简单的来说就是说预设的虚拟机的类型,比如默认的有tiny、small 、large,通过flavor我们也可以也可以给虚拟机一个自定的类型。创建步骤为依次找到admin ---system ---create flavor ,如下图:

create-flavor
create-flavor

五、配额配置

openstack-quota
openstack-quota

这里的配额是针对project而言的,通过该配置,可以指定某个部分允许使用的最大资源数量,便于对每个部门的使用进行把控。

该部分不再截图,可以参看第二部分 配置project工程 中的截图,同样在indenty --- projects中找到对应的project,在该项的最右边选择edit project ---quota 修改配额。

六、创建一个块存储卷

block storage
block storage

这里对应的存储卷由于未指定类型,由于我们也未配置swift、ceph等类型存储,所以这里是nova-volume组件(从Folsom版开始从nova独立出来,成了cinder组件)默认创建的卷,即第一步中我们默认安装时的cinder-volums卷。

再看题目要求,存储卷是在Engineering project项目下的,所以这里我们需要在dashborad界面退出,重新以Robert用户登陆。登陆后依次选择project — computer — volumes — create volumes

create block storage
create block storage

七、增加一个image镜像

add a image
add a image

glance服务主要是提供虚拟机镜像的发现,注册,取得服务的。将该服务保存到glance存储后,我们可以在openstack云平台上通过这些预先的image,快速的创建虚机。操作步骤为在web界面依次点选project — computer — images — create images

glance
glance

从上图可以看出,glance支持的image类型还是比较多的,另外还需要注意的是由于题目中已经说明了这个image是所有人都可以访问的,所以这里勾选下public 。

八、创建一个安全组

security-groups
security-groups

创建安全组这里还隐藏了一个题目就是创建rules 。在web界面依次点选project — computer — access&security — create security group 。创建完成后,在对应的rule规则的最右边有manage rules 选项 ---点击后在右边选择 add rule

add-rule
add-rule

九、网配网络

network-config
network-config

这里机配置两个网络,一个为外部网络,一个内部网络,我们可以简单的理解为有两个交换机和一个路由器。这里网络的实现是使用了neutron组件实现的。先来创建内部网络,依次选择project ---network --- networks ---create network 。如下:

private-network
private-network

后面的选项里默认选择DHCP就行了。创建完内部网络,接下来创建外部网络,外部网络的创建步骤和前面相同,只不过网关需要配置上,这个可以查看servera的网关是什么,需要特别注意的是subnet detail 项,具体如下:

看下面的题目,可以看出,在创建实例时,需要allocation地址,而且在上面创建engineering项目quota时,内部可以有三个实例,由于网关需要默认占用一个,所以这里预留四个可用地址。第一个地址给网关,第二个地址就是实际需要分配到的地址。

还需要注意的是,需要通过依次点击admin --- system --- public网络 --- Edit network --- External Network 将public网络标注为外部网络。

external-network
external-network

接下来创建路由器,依次点击project --- Network --- Routers --- create route 。选择刚刚选择好的路由器ex210-route --- 在最右边选择set gateway --- 将public标记为外网:

set-gateway
set-gateway

实际上上面操作这一步已经将public网络接口加入到路由器上,我们再增加private网络 。点击开刚刚创建开的ex210-route,选择add-interface,如下:

注意:网络配置的这道题是本试题里最难的一道了,几个操作增加好网络、设置public网络为外部网络,设置外部网络为网关,再增加接口到路由器,顺序不能搞反或搞混了。顺序搞错了这题也会出问题。后面在单独安装时再将通过命令配置网络的方法指定下。

十、创建一个实例

launch-instance
launch-instance

在创建实例之前,这里有一个隐藏题目需要先做掉,就是创建key文件。操作步骤为project — computer — access&security — create key pair ,如下:

key-pair
key-pair

接下来project — computer — instances — launch instance 创建实例,

十一、分配外网IP

Allocate a floating IP
Allocate a floating IP

这个题目没有什么好操作的,在刚刚lanuch好的实例最右端有Allocate floating IP 按键,选择后分配一个浮动IP即可。

十二、附加一个块存储

这个增加的块存储是由cinder存储提供的,比如在阿里云或AWS云中都区分系统盘和数据盘,这里增加的/dev/vdb我们可以理解为数据盘的概念。这里依次选择project — computer — volumes,选择之前创建的volumes,在最右边选择manage volume attachments,如下图,将对应的实际attach上这个卷就可以了。

十三、创建卷快照

依次点击project — computer — volumes ,选择之前创建的storage volume ,在右边有Edit volume,在下拉菜单中选择创建快照,如下:

十四、使用ssh key连接

1[root@foundation0 ~]# mv Downloads/webkey.pem /root/.ssh/myident
2[root@foundation0 ~]#
3[root@foundation0 ~]# chmod 600 /root/.ssh/myident
4[root@foundation0 ~]#
5[root@foundation0 ~]# ssh -i /root/.ssh/myident  root@172.25.0.40
6Please login as the user "cloud-user" rather than the user "root".
7^CConnection to 172.25.0.40 closed.
8[root@foundation0 ~]# ssh -i /root/.ssh/myident  cloud-user@172.25.0.40
9[cloud-user@webserver ~]$

上面的操作有两点需要注意,一点是移动后的key权限要改为600,第二点就是默认是不允许直接以root登陆的在这个img文件,使用的是cloud-user用户,通过该用户我们可以sudo到root用户。这点不允许直接ssh key使用root登陆倒没什么神秘的,我看了下是在key认证文件里做了手脚,如下:

1[root@webserver ~]# cat .ssh/authorized_keys
2ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAx/Xk+tLGBCatkBuxzyEXVhupSgb4Lema0PAnM8dFbSxcPz4W4jO8yQgtONzHs8KOhs4J1NG9bHeAwpJa2p9iJkyrigxmQv0LOpvENdlGbA1hwsRoOhBGqwRzSmKHS4Or94FBXvzDwHfbkxDV0XhzHKod8b9tYuaIQfhbF3NUR2ItZiYJhBds+3GOAHhdbU9DOAyX8X60vppkgoJ4nb2Mugw51LM+uVh8ds24wzU3Khr6Dcmae7KX/b/PX0J0rO23ZPq1AJ3i6r13AJUc6beLjQXPzYs/ZLKiQZWaZUePnsiaIpKXpH7vuBK3zidvcK2pf6XXAB9MW7GtoFJnr6v+bQ== InstructorKey
3no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the user \"cloud-user\" rather than the user \"root\".';echo;sleep 10" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDaQSOZle62dzQMvFRnB/za150QYXIv8my+YelcWAq7Ft4nD7r5L6am7Fx9/u7F81lCfHiY2WpaUG/AvTl+hQwj1iFjtpK4tiY4F/6nghMH2rYDLl3NDL/S4eFABtwjLm0+OCjtnDtiMw9r13G1SP9efQVkiI6SSvjQ9dpwEs94pSadcFXU5ufninSVcUhyXrajJIcx+aIxtcVfmQPo608pXDqImrDfEG0w0UYZ6ui196A8AHVoYn/Ve4n2BPefAJQTkcZQ2GXDmS5OZAEF4ilcLuulu8G9Avivv+I0wT/RhCBovFRzCSd/jfIx10LmcBCEhdB/ARFM8uriLkcvB1W9 Generated-by-Nova

其中nova生成的那个key有没有发现。

十五、配置swift容器

这里叫容器感觉并不完全准确,swift是对象存储,这个和我们常见的云盘---百度云、dropbox等非常相似。之所以这里又叫容器,其实也不完全没有道理,这里每个容器可以简单的理解了一个大的文件夹。在将对象文件存放之前,需要先创建一个container ,然后再upload object到这个容器。

操作步骤:project ---object store ---选择对应的容器 ---upload object 上传即可。在此之前可以通过create container创建容器。

上面该图由于较大,点击可以查看大图。