裸机云快速部署利器Ubuntu MAAS:单机安装及测试系列教程第一篇

by liam zheng on 9 April 2020

Ubuntu MAAS (Metal as a Service)可将你的物理服务器转化成云资源,实现物理服务器的自助申请,即取即用, 远程访问。MAAS提供API, CLI及WEB图形管理介面,方便地实现物理服器的操作系统自动部署,网卡绑定,VLAN,网络IP地圵管理,磁盘及文件系统高级配置(soft raid, lvm, bcache)等。

1. 测试目标及环境要求

MAAS不仅内置Ubuntu, CentOS映像, 也有相应工具支持RHEL, Windows, ESXI的映像制作。在Ubutnu的Charmed OpenStack, Charmed Kubernetes, 大数据, AI and ML等通过Juju部署及管理的解决方案中,如果涉及物理裸机,则MAAS为必需及基础组成部份。MAAS在物理服务器环境中的安装及测试通常需要一台机器当作MAAS服务器, 另外一台或多台服务器当作被管理机,不仅需要单独的网段用于DHCP及PXE,MAAS还需要通过BMC/ipmi的电源管理实现自动开关电源。MAAS在Charmed OpenStack中的典型网络构架如下:

如果在没有相应物理服务器及网络资源的情况下,如何在单台物理服务器或个人电脑上来安装及测试MAAS,为这个blog的目标。单机MAAS测试需要如下环境:

  • 1台物理服务器或个人电脑(可以是桌面电脑,笔记本电脑)或能支持KVM虚拟化的虚拟机。最少配置为2 core, 4G内存,24G可用空间;如果需要进一步测试Charmed Openstack或Charmed kurberntes, 则通常需要能支持3-5台虚拟机,则配置至少为16G内存,100G可用空间。
  • 个人电脑或服务器支持Ubuntu 18.04.4 Server或Desktop;可查看是否有相应Ubuntu认证(https://certification.ubuntu.com/)。
  • Internet访问,直接或通过proxy; proxy时的额外设置及方法请参考扩展及附录的3.3节。

2. MAAS安装测试过程及方法

以下为单机安装及测试Ubuntu MAAS过程及方法

  • 安装Ubuntu Server或Ubuntu Desktop
  • 启用lxd容器虚拟机及安装MAAS服务器
  • 配署MAAS KVM POD及虚拟机自动供给
  • OS部署及机器管理

以下为本文测试环境的主机名及网络IP分配

2.1 安装Ubuntu Server或Ubuntu桌面

安装Ubuntu通常需要下载iso, 用iso制作DVD-ROM或可启动U盘, 根据你现有环境的不同下载制作方法差别很大,比较方便的是你已有Linux环境也会使用终端命令。在现有的Linux环境下,以下方法下载及制作相应的启动U盘:

注意:在你的环境中U盘设备不一定为/dev/sdc,可以通过sudo fdisk -l从列出的磁盘分区及大小上判断,另外现有U盘内容会被全部覆盖。

$ wget -nd -c   http://releases.ubuntu.com/18.04.4/ubuntu-18.04.4-desktop-amd64.iso   
$ sudo dd if=ubuntu-18.04.4-desktop-amd64.iso of=/dev/sdc bs=1M 
$ wget -nd -c http://cdimage.ubuntu.com/releases/18.04.4/release/ubuntu-18.04.4-server-amd64.iso
$ sudo dd if=/ubuntu-18.04.4-server-amd64.iso of=/dev/sdc bs=1M  

如果需要在Windows或Mac OS环境下制作DVD-ROM或启动U盘, 请参考如下网页中的指导https://ubuntu.com/tutorials?topic=desktop

如果是服务器,通常可以通过BMC管理启动远程控制台来直接加载iso到虚拟光驱来启动安装,具体参考服务器厂家文档及指导。

一亘启动了Ubuntu Desktop/Server的安装程序,其过程及设置都相当简单及直接,如果需要详细指导及说明可参考

系统安装完成及重启之后,如果你能够登录,打开命令行终端,也能sudo切换到root权限,这个机器能访问internet, 则可以继续下面MAAS的安装及测试步骤。

2.2 启用LXD容器虚拟机及安装MAAS服务器

Ubuntu LXD是基于容器技术的操作系统虚拟化技术,提供了和虚拟机一样的用户使用体验,包含完整的系统启动程序,系统日志,网络及远程ssh登录。也俱有容器的密度及速度优势,没有自已的内核而是共享及使用主机内核。另外Ubuntu已提供了各种常用的预制映像,创建LXD容器机时直接从相应映像仓库下载。

MAAS通常及推荐直接安装及运行在主机Ubuntu Server操作系统上, 但对于Ubuntu桌面环境, 由于网络通常使用更为动态及智能的管理方法,所以在LXD虚拟机中安装及测试最为合适。另外选用LXD可以省去KVM配置及虚机安装或导入过程,一亘MAAS工作之后,你就可以使用MAAS自动编排KVM虚拟及自动部署OS。

2.2.1 LXD初始化

LXD初始化让你配置LXD服务及LXD容器所使用存储,网络,IP地址等。如下默认配置适于大多数情况,例子中命今行或输出之后的#…为解释及说明,它们不是命令输入或命令运行的输出。

ubuntu@test1:~$ sudo lxd init    #test1为测试KVM虚拟机,为MAAS自动部署; 它对应于你测试的服务器或个人电脑;
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: 
Create a new BTRFS pool? (yes/no) [default=yes]: 
Would you like to use an existing block device? (yes/no) [default=no]: 
Size in GB of the new loop device (1GB minimum) [default=15GB]: 
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: 
What should the new bridge be called? [default=lxdbr0]: 
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 192.168.10.1/24  
Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]: 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]  
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: 
ubuntu@test1:~$ 

注意: 红色加亮部份为你输入及注意的部份,以下相同。

2.2.2 创建LXD容器机并安装MAAS

ubuntu@test1:~$ lxc launch ubuntu:18.04 maas-server  
Creating maas-server
Starting maas-server
ubuntu@test1:~$ lxc list
+-------------+---------+----------------------+------+------------+-----------+
|    NAME     |  STATE  |         IPV4         | IPV6 |    TYPE    | SNAPSHOTS |
+-------------+---------+----------------------+------+------------+-----------+
| maas-server | RUNNING | 192.168.10.61 (eth0) |      | PERSISTENT | 0         |
+-------------+---------+----------------------+------+------------+-----------+
ubuntu@test1:~$ lxc exec maas-server bash
root@maas-server:~# add-apt-repository -yu ppa:maas/2.7 #2.7是当前最新版本;也提供及推荐snap包安装,但PPA
                                                        #方式可利用下载比较快的地区源
Get:1 http://ppa.launchpad.net/maas/2.7/ubuntu bionic InRelease [15.9 kB]
...  #...表示省略一行或多行输出                                                                                                                                    
Hit:7 http://cn.archive.ubuntu.com/ubuntu bionic-security InRelease                                                                                                                                        
Fetched 21.9 kB in 9s (2565 B/s)                                                                                                                                                                           
Reading package lists... Done
root@maas-server:~# apt install maas   #安装MAAS服务,包括regiond, rackd; 
...                                    #MAAS也支持群集或多个rackd服务以支持多个网段及大规模节点管理
Applying sites.0002_alter_domain_unique... OK
Setting up maas (2.7.0-8232-g.6e1dba4ab-0ubuntu1~18.04.1) ...
root@maas-server:~# exit

2.2.3 LXD网络及MAAS IP配置

MAAS通常使用自带的DHCP服务来实现PXE网络启动,所以需要禁用LXD服务中的DHCP服务。同时配置maas-server为静态IP。

ubuntu@test1:~$ lxc exec maas-server bash
root@maas-server:~# vi /etc/netplan/50-cloud-init.yaml
root@maas-server:~# cat /etc/netplan/50-cloud-init.yaml 
# This file is generated from information provided by
# the datasource.  Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    version: 2
    ethernets:
        eth0:
            dhcp4: false
            addresses: [192.168.10.10/24]
            gateway4: 192.168.10.1
            nameservers:
               addresses: [192.168.10.1]
               search: [maas]
root@maas-server:~# exit 
ubuntu@test1:~$ lxc network edit  lxdbr0
ubuntu@test1:~$ lxc network show  lxdbr0
config:
  ipv4.address: 192.168.10.1/24
  ipv4.dhcp: "false"
  ipv4.nat: "true"
  ipv6.address: none
description: ""
name: lxdbr0
type: bridge
used_by:
- /1.0/containers/maas-server
managed: true
status: Created
locations:
- none
ubuntu@test1:~$

2.2.4 设置iptables端口转发访问MAAS管理介面

设置iptables端口转发,以访问MAAS web管理介面,如果使用的是Ubuntu桌面测试,则不需要这步,因为本机浏览器可直接从本地192.168.10.1这个地址访问192.168.10.10MAAS服务器。 如果是Ubuntu Server环境,则网络上的其它桌面电脑能常不能直接访问到MAAS IP(路由原因),则通过端口转发功能来访问MAAS是最为便利的。

ubuntu@test1:~$ sudo vi /etc/rc.local
ubuntu@test1:~$ cat /etc/rc.local 
#!/bin/bash
iptables -t nat -A PREROUTING --dst 172.24.201.82 -p tcp --dport 5240 -j DNAT --to-destination 192.168.10.10:5240
exit 0
ubuntu@test1:~$ sudo chmod 755 /etc/rc.local 
ubuntu@test1:~$ sudo systemctl enable rc-local
Removed /etc/systemd/system/multi-user.target.wants/rc-local.service.
Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /lib/systemd/system/rc-local.service.
ubuntu@test1:~$ sudo systemctl start rc-local
ubuntu@test1:~$ sudo iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            172.24.201.82        tcp dpt:5240 to:192.168.10.10:5240
..
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  192.168.10.0/24     !192.168.10.0/24      /* generated for LXD network lxdbr0 */
ubuntu@test1:~$ 

2.2.5 MAAS管理帐号

以下方法在maas-server容器中创建MAAS管理帐户:

root@maas-server:~# maas-region createadmin 
Username: root
Password: 
Again: 
Email: root@maas-server.maas         
Import SSH keys [] (lp:user-id or gh:user-id): 
root@maas-server:~#

2.2.7 MAAS web管理介面登录及初始配置

浏览器访问MAAS web管理介面:

完成上述操作会将会看到如下截图:

下一篇我们将继续介绍MAAS管理界面登陆及初始化配置相关内容。如果您有任何关于MAAS相关的问题,欢迎与我们联系

*本教程由Canonical 云架构师Zhanglei Mao所撰写。

订阅博客文章

订阅您感兴趣的主题

在提交此表格的同时,我确认已阅读和同意的隐私声明隐私政策。

查看更多内容

Kria KR260: 一个由 Ubuntu驱动的可扩展的机器人平台

今天,机器人开发人员对 AMD Kria™ KR260 机器人入门套件的发布充满期待。机器人技术是一项具有挑战性的工作。AMD通过降低嵌入式设计的准入门槛加速每个行业的机器人创新。Kria 自适应模块系统 (SOM)的 产品组合最新成员展示了这项工作。 以最经济的价格快速部署机器人 Kria KR260 的第一个亮点是其与现有的 Kria K260 自适应 SOM 板的无缝生产部署的能力。与芯片化设计相比,通过加快设计周期,Kria SOM 产品组合与 Ubuntu 结合使用时,可节省多达 9 个月的部署时间。对于机器人公司而言,所有无需 FPGA 专业知识的开发人员可快速开始项目工作。 对开发人员的另一个关键益处是成本低。Kria KR260 机器人初级套件的价格为34 […]

研讨会直播 | 5月11日 共探机器人应用开发的三大关键:视觉、神经与大脑

从现今的物流仓储、无人工厂到智慧城市建设,企业竞相在各个领域部署各种协作机器人,以提高生产效率。然而,在机器人应用开发的早期阶段,确定开发的关键要素及优先级是一项极大的挑战。 2022年5月11日,研华将携手合作伙伴Basler及Canonical的资深专家,与您共同探讨未来机器人的发展趋势与关键要素。同时,从实际应用出发,分享机器人应用开发的三大关键——机器视觉、软件平台与AI运算平台,诚邀各位伙伴参加! 直播时间:2022年5月11日15:30-16:30 报名方式:点击此链接报名 或扫码下方二维码 精彩看点: 机器人应用的发展趋势与关键要素 机器人的眼睛:工业相机的选择及标准 机器人的神经:Ubuntu 如何为开发者及ROS提供支持 机器人的大脑:研华嵌入式高效AI […]

Canonical Ubuntu 22.04 LTS 已发布

2022年4月21日,Canonical Ubuntu 22.04 LTS 现在已可用,新版本在云机密计算(Cloud confidential computing)、用于工业应用的实时内核以及企业 Active Directory、PCI-DSS、HIPAA、FIPS 和 FedRAMP 合规性方面取得了重大飞跃——提高了从云到边缘、物联网和工作站的开源标准。Canonical 与行业领导者一起在主流架构、硬件、云上提供企业级安全,长期维护和支持。 “我们的使命是成为一个安全、可靠、持续的、无处不在的开源平台。Ubuntu 22.04 LTS 为对基础设施安全要求苛刻行业(如电信、工业自动化)开启了创新,支持其数字化转型。”Canonical CEO Mark Shut […]