裸机云快速部署利器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的安装程序,其过程及设置都相当简单及直接,如果需要详细指导及说明可参考
- https://ubuntu.com/tutorials/tutorial-install-ubuntu-desktop
- https://ubuntu.com/tutorials/tutorial-install-ubuntu-server-1604
系统安装完成及重启之后,如果你能够登录,打开命令行终端,也能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管理介面:
- http://test1-host-ip:5240/ (端口转发)
- http://maas-server-ip:5240/ (ubuntu桌面及非端口转发)
完成上述操作会将会看到如下截图:
下一篇我们将继续介绍MAAS管理界面登陆及初始化配置相关内容。如果您有任何关于MAAS相关的问题,欢迎与我们联系。
*本教程由Canonical 云架构师Zhanglei Mao所撰写。
订阅博客文章
查看更多内容
Docker 与 Snaps 的逐项比较信息图
Docker 项目是由平台即服务(PaaS)公司 dotCloud 所发起,其创建 Docker 的目的是运行其内部基础架构。慢慢地,Docker 所取得的成功盖过了他们的任何其他产品,因此 dotCloud 更名为 Docker Inc.。Docker 提供的工具简单易用,其已然变成了一个完整的容器管理生态系统。许多开发人员已经学会将其作为工具包的一部分,用于打包和分发应用到云端,或者更广泛地用于开发和测试阶段。 Snaps 由 Ubuntu 的发行商 Canonical 所推出,是打包和分发 Linux 应用的一种方式。人们越来越需要简化在不同Linux风格、版本甚至计算类型上运行的应用程序的部署。而 Snaps 提高了整个系统的安全性,并且优化了软件更新生命周期,包 […]
优化版 Real-time Ubuntu 现普遍可用于 Intel 系统级芯片
Canonical 推出可用于 Intel Core 处理器的 Real-time Ubuntu,并且支持 TSN 和英特尔 TCC Canonical 宣布优化版 Real-time Ubuntu 可用于 Intel Core 处理器。该解决方案使企业能够在 Intel 硅芯片上利用优化版 Linux 的强大功能,适用于从电信工作负载到救生医疗设备乃至工厂车间自动化系统的各种用例。 Canonical Silicon Alliances 副总裁 Cindy Goldberg 称:“有了适用于最前沿 Intel 硅芯片的优化版 Real-time Ubuntu,可以助力企业处理高难度的工作负载。”“Canonical 与 Intel 强强联合,为开发商和制造商提供安全可靠 […]
Ubuntu Core 作为不可变 Linux Desktop 基本操作系统
Canonical 于 2014 年开始开发 Ubuntu Core,旨在创建一个完全容器化的物联网平台。我们在 Ubuntu Core 中使用了与 Docker 和 LXC 构建技术相同的内核容器技术,将系统的每个组件放入一个安全的沙盒中,并且明确定义了升级和回滚机制。这样是为了让自主连接的物联网设备能够在没有人为干预的情况下接收更新,以解决边缘的安全和业务需求。Ubuntu Core 的占用空间极小,有助于实现一个安全、有弹性、经久不衰的操作系统,即使在最具挑战性的环境中也可依赖。 这种容器化的方案意味着系统的每个部分都可以防止篡改,可以干净利落地独立更新。这意味着您可以运行您不放心其查看系统上所有内容的应用程序,您只想提供这些应用程序本身应当管理的数据。这意味着您可 […]