最近在搞openstack相关的事情,经常需要重装系统,之前用过cobbler,不过配置起来较为复杂,网上各个版本的文档也很难完整的走下来,故研究了一下ubuntu推出的maas平台(https://www.ubuntu.com/download/server/provisioning),这里完整记录下整个过程,希望能帮助到有类似需求的同学。


Maas采用了一种云化的思维来对物理服务器资源进行管理,基本上支持常见云平台中所有的基础功能,如资源预留、申请计算资源、释放计算资源、如果服务器有ipmi等功能,还可以控制资源的开关机,整体的功能和openstack中的baremetal非常类似,只不过各有侧重。



安装流程

(1)安装ubuntu server 16.04

(2)运行sudo apt-get update更新本地源

(3)sudo apt-get install maas

这里解释一下,maas平台包含多个服务模块,支持生产环境多节点分布式部署,canonical提供了名为maas的虚拟包,可以自动安装所有的服务(例如:rack server、region server等)

(4)sudo maas createadmin

设置管理portal的管理员账号

(5)到这里安装就基本结束了,可以直接访问portal的地址进行相关配置

http://<your.maas.ip>:5240/MAAS/

例如:http://192.168.10.148:5240/MAAS/

登录的用户名和密码为第(4)步里设置的


基本的配置

(1)导入常用的镜像,目前maas默认支持全系列的ubuntu和常用的centos,可以根据自己的需要勾选。由于这个过程涉及目标镜像的下载和导入,所以整个过程较慢。

(2)导入自己的ssh public key,maas会将这些public key注入最终发起的目标服务器实例,由于最终生成的目标服务器实例不支持用户名密码登录,所以这步是必须的,否则无法登录。你也可以选择导入自己github或者launchpad上的pub key。

导入路径:User preferences for admin->SSH keys

(3)配置DHCP服务,subnets->vlan->DHCP

在我使用的环境中,安装maas服务的机器有两块网卡,一个网卡eth1可以连接互联网,另外一个网卡eth2采用内部地址(192.168.100.1/24),采用iptable nat方式代理maas实例连接外网。

internet <—> eth1[maas server]eth2 <——> [swich] <——>  maas instances

(4)为了使最终发起的maas instance可以连接外网,还需要在maas服务器上配置iptable nat规则,如下:


iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o enp0s3 -j MASQUERADE




完成以上基本的配置之后,设置需要被maas管理的各节点为从网卡启动,节点启动之后会以pxe的方式从maas server上拉取基本内核并注册基本信息到maas server,如下:

云资源管理架构图 资源云化管理_云资源管理架构图


编辑该节点,设置正确的电源管理类型,如


云资源管理架构图 资源云化管理_用户名_02




这里选择手动方式管理节点的电源,然后在take action菜单中,对该节点进行commision,将其纳入maas平台进行管理,如


云资源管理架构图 资源云化管理_用户名_03




Commission完成之后,即可申请资源(acquire)、或者直接对该节点进行部署(特定的操作系统)


Take action菜单中的操作简单解释如下:

commision:将节点纳入maas平台进行管理

Acquire:申请一个节点到某用户名下,但不着急进行操作系统的部署,相当于先把资源占着。

Deploy:对节点安装操作系统

Release:节点使用完毕之后,释放该节点到maas资源池中,以便其他用户使用。


commision、deploy过程中,我们可以在maas server上看到对应节点通过rsyslog发送过来的相关日志。

位置为/var/log/maas/rsyslog/xx/xx