谢谢您的订阅!
当新的内容发布后您将开始接收邮件。您也可以点击邮件内的链接随时取消订阅。关闭Close

裸机云快速部署利器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所撰写。

订阅博客文章

订阅您感兴趣的主题

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

查看更多内容

什么是「应用安全」 — Application Security “AppSec” ?

网络安全领域已然迎来重大变革。如今,网络攻击、恶意软件和勒索软件等风险日益蔓延,加之新出台的网络安全法规以及针对数据泄露和数据外泄的高额罚款所带来的压力与日俱增,强化应用安全(AppSec)已毫无妥协可言。 在本文中,我们将探讨如何直面这些挑战,通过聚焦安全态势中最基本的要素,确保业务和系统安全。笔者将介绍应用安全(AppSec)的概念及其益处,探讨企业应如何设计和实现应用安全,并分享我们团队的一些实用建议和最佳实践,帮助您筑牢安全防线。 什么是 AppSec ? 应用安全(简称 AppSec)是一个广义概念,涵盖了企业组织为保护其应用程序在整个生命周期内免遭各种安全漏洞而采用的所有工具、举措与流程。应用安全的目标只有一个,就是找出应用程序和系统中可能会被恶意攻击者利用, […]

互联汽车软件开发:Anbox Cloud 为安全护航

当下,Android Automotive 操作系统(AAOS)是各大汽车制造商打造车载信息娱乐系统的首选。AAOS 是一个功能完备的信息娱乐平台,支持各类应用程序、功能和服务,其使用体验与人们熟悉的 Android 手机大同小异。 AAOS 可助力开发者构建出提升驾驶体验的新应用和新功能,促使兼容应用与服务生态系统迅速壮大。 然而遗憾的是,开发强大稳健的信息娱乐系统并非易事,前方的道路漫长且充满挑战。硬件可用性、物流配送以及系统配置等方面都存在挑战。例如,对硬件的依赖常常会导致测试中出现问题和延误。不仅如此,许多硬件变体也与开发者的测试环境存在差异,这使得搭建具有代表性的测试台变得十分困难。 云原生方案就是解决物理硬件问题的有力办法:其无需进行实物运输、搬运或安装,就能 […]

利用开源机器学习基础架构加速 AI 发展

人工智能技术在迅速发展,对稳健强大且可扩展的基础架构具有迫切需求。为应对这些挑战,我们精心打造了一套全面的参考架构(RA),充分利用了开源工具与尖端硬件的强大功能与性能。这套架构基于 Canonical 的 MicroK8s 和 Charmed Kubeflow 构建,运行于 Dell PowerEdge R7525 服务器之上,并借助NVIDIA NIM 微服务实现加速,为部署和管理机器学习工作负载提供了一个简便高效的途径。 为数据科学家与工程师赋能 该解决方案旨在为数据科学家和机器学习工程师赋能,使其能够实现更快迭代、无缝扩展以及强有力的安全保障。对于基础架构构建者、解决方案架构师、DevOps 工程师以及首席技术官(CTO)而言,这套参考架构提供了一条畅通无阻的途径 […]