使用MAAS cli 部署节点
你可以使用maas cli 部署节点,通常比在Web UI 上点击按钮更便捷
首先需要登录,登录方法可参考:https://blog.csdn.net/jingmi_yu/article/details/103891608
默认操作系统deploy
maas $MAASNAME machine deploy $SYSTEM_ID
指定操作系统deploy
$maas $MAASNAME machine deploy $SYSTEM_ID distro_series=$release # $release 指定安装的操作系统版本
ubuntu 操作系统还可以指定内核
$maas $MAASNAME machine deploy $SYSTEM_ID distro_series=$release hwe_kernel=hwe-x #指定内核
在deploying 过程中登录系统
在machine deploying 过程中你可以使用ubuntu用户 ssh登录到临时系统
先通过Web UI 或者cli 命令获取 $HOST_IP
cli 命令获取 $HOST_IP
#maas admin machine read tpagrh |grep ip_address
登录临时系统
$ ssh ubuntu@$HOST_IP
在输出log 开启debug
如果想在输出log中开启debug,需要具备maas region controller 的管理员权限,修改/etc/maas/preseds/curtin_userdata (应该需要重启maas server才能生效) 文件如下:
showtrace: true
verbosity: 3
禁止在deploy完成后重启
正常deploy完成后不管是成功还是失败,默认都会进行reboot。这样会导致在一些debug场景或者install failed情况下,无法复现问题,进行调试。需要设置deploy完成后不进行重启
下面有2种方法禁止deploy 后进行重启
- 修改maas region controller 的/etc/maas/preseeds/curtin_userdata 文件
这种方法作用是全局的,所有的machine deploy 都不会重启,注意调试完成后回滚,以免影响其他machine deploy
在如下位置进行修改
你需要在early_commands 后面添加一条不允许reboot的规则,如下:early_commands: {{if third_party_drivers and driver}} {{py: key_string = ''.join(['\\x%x' % x for x in driver['key_binary']])}} {{if driver['key_binary'] and driver['repository'] and driver['package']}} ... {{endif}} {{endif}}
early_commands: disable_reboot: touch /run/block-curtin-poweroff /tmp/block-poweroff /tmp/block-reboot {{if third_party_drivers and driver}} ... {{endif}}
- 阻止单个节点reboot
必须尽快操作,在节点还没有重启前使其生效$ ssh ubuntu@$HOST_IP sudo touch /run/block-curtin-poweroff /tmp/block-poweroff /tmp/block-reboot
日志
单节点下的安装日志
a. /tmp/install.log : crutin 相关的log会存放在这个位置
b. /var/log/cloud-init.log:cloud-init 的日志,但是不包含curtin的
c. /var/log/cloud-init-output.log:标准的输入和输出详细log,包含curtin
手动运行curtin
maas 通过将curtin作为用户数据发送到cloud-init来运行curtin。cloud-init 讲用户数据放入/var/lib/cloud/instance/scripts/part-001来执行。part-001是一个自解压的shell归档文件,会将自身解压缩/curtin执行。
可以先ssh ubuntu@$HOST_IP ,sudo 到root用户,重新使用/curtin 再次运行
ubuntu$ sudo su -
$ cd /curtin
$ ls
bin configs curtin helpers
$ /var/lib/cloud/instance/scripts/part-001 info
LABEL='curtin'
PREFIX='curtin'
COMMAND=( 'curtin' '--install-deps' 'install'
'--config=configs/config-000.cfg' '--config=configs/config-001.cfg'
'--config=configs/config-002.cfg' '--config=configs/config-003.cfg'
'--config=configs/config-004.cfg'
'http://10.7.10.1:5248/images/ubuntu/amd64/generic/xenial/daily/root-tgz' )
CREATE_TIME='Wed, 25 May 2016 15:21:05 +0000'
在“ info”中显示的命令是执行安装的命令。引用的配置在configs /目录中可见。
然后,您可以重新运行相同的命令,或者编辑配置并再次运行。
$ ./bin/curtin --install-deps install \
--config=configs/config-000.cfg --config=configs/config-001.cfg \
--config=configs/config-002.cfg --config=configs/config-003.cfg \
--config=configs/config-004.cfg \
http://10.7.10.1:5248/images/ubuntu/amd64/generic/xenial/daily/root-tgz
为了帮助调试,可以在命令中加入一下标志:
-vvv: 更详细的log
--showtrace:失败时,允许显示python堆栈跟踪
其他技巧
开启 -proposed 升级系统
如果你想在安装系统使用-proposed 升级系统软件,你可以编辑/etc/maas/preseeds/curtin_userdata ,如下:
system_upgrade: {enabled: True}
apt:
sources:
proposed.list:
source: deb $MIRROR $RELEASE-proposed main universe
附录
block-reboot 脚本
#!/bin/sh
host=$1
shell=${2:-"true"}
user="ubuntu"
ssh-keygen -f ~/.ssh/known_hosts -R "$host"
cmd='set -x;
sudo touch /run/block-curtin-poweroff /tmp/block-poweroff /tmp/block-reboot;
r=$(lsb_release -sc)
if [ "$r" = "precise" -o "$r" = "trusty" ]; then
sudo mv /sbin/shutdown /sbin/shutdown.real
sudo ln -s /bin/true /sbin/shutdown
fi
'
while :; do
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=2 $user@$host "$cmd" &&
break
sleep .5 || exit
done
if [ "$shell" = "true" ]; then
ssh -o StrictHostKeyChecking=no $user@$host
fi
[参考文档]https://gist.github.com/smoser/2610e9b78b8d7b54319675d9e3986a1b
来源:CSDN
作者:jingmi_yu
链接:https://blog.csdn.net/jingmi_yu/article/details/103904203