Official Site
http://maas.ubuntu.com/docs/
https://launchpad.net/maas
Installation
Precise 上預設的是 1.2 版, 裝起來後問題不少, 所以決定直接改用 Saucy (13.10) 安裝1.4 版, 安裝過程在文件上寫的滿清楚的, 還附圖, maas-dhcp/maas-dns 則是 optional, 就看環境中是否已經有存在的 dhcp/dns
http://maas.ubuntu.com/docs/install.html
每個 node 有一整個 life cycle, 在 /usr/share/pyshared/maasserver/enum.py 裡可以找到
class NODE_STATUS: # A node starts out as READY. DEFAULT_STATUS = 0 #: The node has been created and has a system ID assigned to it. DECLARED = 0 #: Testing and other commissioning steps are taking place. COMMISSIONING = 1 #: Smoke or burn-in testing has a found a problem. FAILED_TESTS = 2 #: The node can't be contacted. MISSING = 3 #: The node is in the general pool ready to be deployed. READY = 4 #: The node is ready for named deployment. RESERVED = 5 #: The node is powering a service from a charm or is ready for use with #: a fresh Ubuntu install. ALLOCATED = 6 #: The node has been removed from service manually until an admin #: overrides the retirement. RETIRED = 7
Configuration
Proxy Server
在 MAAS 裡面, 預設是一定有 http proxy, 從 /etc/maas/preseeds/generic 可以看的出來{{if http_proxy }} d-i mirror/http/proxy string {{http_proxy}} {{else}} d-i mirror/http/proxy string http://{{server_host}}:8000/ {{endif}}
如果環境中沒有 http proxy, 處理方式可能有兩個, 第一種就是把 proxy 的設定全都拿掉, 以下這些檔案都需要修改
/etc/maas/templates/commissioning-user-data/user_data_config.template /etc/maas/preseeds/enlist_userdata /etc/maas/preseeds/curtin_userdata /etc/maas/preseeds/generic
第二種則是可以把 MAAS 內建的 squid-deb-proxy 打開來, 其實也會有一些好處, 下載 .deb 檔會快不少
update-rc.d squid-deb-proxy defaults
打開 squid-deb-proxy 後, 可能要看一下 /etc/squid-deb-proxy 是否有滿足你的網路環境
另外如果需要連結額外的 repository server, 則需要在 mirror-dstdomain.acl.d 內加 server
http://www.garron.me/en/blog/ubuntu-deb-proxy-cache.html
/etc/maas/import_pxe_files
設定你需要的 RELEASE 以及 ARCHES, 但 i386 一定要留著, 因為有些地方的預設值是 i386, 沒有的話會出問題, 如果要加自己定義的 RELEASE, 也是加在這裡, 這邊我自己加了一個 precise04, 是要安裝 Ubuntu Precise 12.04 但 kernel 是 3.11.
RELEASES="precise04 saucy precise" #RELEASES="precise quantal raring saucy" ARCHES="amd64/generic i386/generic" #ARCHES="amd64/generic i386/generic armhf/highbank armhf/generic"
/usr/lib/python2.7/dist-packages/maasserver/enum.py
如果有加自己定義的 RELEASE, 請加上新的 enum, UI 上就會看到了
class DISTRO_SERIES: precise04 = 'precise04' DISTRO_SERIES_CHOICES = ( (DISTRO_SERIES.precise04, 'Ubuntu 12.04 LTS "Precise Pangolin with 3.11 Kernel"') )
/usr/sbin/maas-import-pxe-files
抓 image 的主要程式在這隻檔案內, 配合前面新增的 precise04, 我修改了以下幾個地方
compose_installer_base_url
compose_installer_base_url() { local arch=$1 release=$2 case $arch in amd64/*|i386/*) if [ "$release" = "precise04" ]; then local installer_url="$MAIN_ARCHIVE/dists/precise-updates/main/installer-${arch%%/*}" else local installer_url="$MAIN_ARCHIVE/dists/${release}-updates/main/installer-${arch%%/*}" fi echo "$installer_url/current/images/" ;; ... }
compose_installer_download_url_postfix
compose_installer_download_url_postfix() { local arch=$1 local release=$2 case $arch in amd64/*|i386/*) if [ "$release" = "precise04" ]; then echo "saucy-netboot/ubuntu-installer/${arch%%/*}/" else echo "netboot/ubuntu-installer/${arch%%/*}/" fi ;; ... }
凡是有用到 compose_installer_download_url_postfix 的地方都加上第二個參數
compose_installer_download_url_postfix $arch $release
update_install_files
update_install_files() { ... filename_in_md5sums_file=./$file_prefix$file ... }
完成之後就執行 /usr/sbin/maas-import-pxe-files, 就可以看到結果啦~
root@ops-maas3:/var/lib/maas/tftp# find . | grep initrd.gz ./amd64/generic/precise/install/initrd.gz ./amd64/generic/saucy/install/initrd.gz ./amd64/generic/precise04/install/initrd.gz ./i386/generic/precise/install/initrd.gz ./i386/generic/saucy/install/initrd.gz ./i386/generic/precise04/install/initrd.gz
Preseed Configuration
其實每個下載下來的 initrd.gz 內, 都有一個 preseed.cfg, 裡面會指明要安裝的 kernel 版本
d-i base-installer/kernel/altmeta string lts-saucy
/etc/maas/preseeds/preseed_master
如果按照原本的設定, 反而可能會裝錯 kernel, 把以下兩行改掉#d-i base-installer/kernel/image string linux-server d-i debian-installer/allow_unauthenticated string true
VMWare Issue
/etc/maas/templates/commissioning-user-data/snippets/maas_ipmi_autodetect_tool.py
判斷是否是 VMware
def detect_ipmi(): # XXX: andreserl 2013-04-09 bug=1064527: Try to detect if node # is a Virtual Machine. If it is, do not try to detect IPMI. with open('/proc/cpuinfo', 'r') as cpuinfo: for line in cpuinfo: if line.startswith('model name') and 'QEMU' in line: return (False, None) with open('/var/log/dmesg', 'r') as dmesg: for line in dmesg: if 'Hypervisor detected' in line and 'VMware' in line: return (False, None)
Use E1000 NIC under Curtin Installing
不知道為什麼如果用 VMXNET3, 在 pxeboot 後 /sys/class/net/eth0/operstate 內的狀態會是 "Unknown".
這會造成 deploy 的過程中會有誤判, 所以請使用 E1000
類似的 Issue
https://www.vmware.com/support/vsphere5/doc/vsp_esxi50_u3_rel_notes.html#resolvedissuesnetworking
Preseed Order
/usr/share/pyshared/maasserver/preseed.py
{prefix}_{node_architecture}_{node_subarchitecture}_{release}_{node_name} {prefix}_{node_architecture}_{node_subarchitecture}_{release} {prefix}_{node_architecture}_{node_subarchitecture} {prefix}_{node_architecture} {prefix} 'generic'
Trouble Shooting
During Commission Stage
有個方法可以加入 backdoor 這個帳號, 就可以登入https://maas.ubuntu.com/docs/troubleshooting.html
During Debian Installing
http://www.informit.com/articles/article.aspx?p=1757616&seqNum=2The installer itself runs on virtual console 1. If you switch to console 2 by pressing Alt-F2, you'll be able to activate the console by hitting Enter and land in a minimalistic (busybox) shell. This will let you explore the complete installer environment and take some matters into your own hands if necessary. You can switch back to the installer console by pressing Alt-F1. Console 4 contains a running, noninteractive log file of the installation, which you can inspect by pressing Alt-F4. Finally, it's sometimes useful to be able to connect to another server during installation, perhaps to upload a log file or to gain access to your mailbox or other communication. By default, the shell on console 2 will not provide you with an ssh client, but you can install one by running anna-install openssh-client-udeb after the installer has configured the network. Now you can use the ssh and scp binaries to log in or copy data to the server of your choice.