AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

一文教你用 CloudBoot 批量安装 RancherOS

  • 2020-05-14
  • 本文字数:2457 字

    阅读完需:约 8 分钟

一文教你用CloudBoot批量安装RancherOS

介绍

CloudBoot


CloudBoot 是云霁科技科技开源的一款简单易用的装机系统,类似 Cobbler ,但是功能更强大,更易用。(详情可参阅参考资料的链接)


RancherOS


RancherOS 是 Rancher Labs 开源的一款容器操作系统,类似 coreOS,RancherOS 是 Rancher Labs 设计的小巧、专用的容器操作系统,可用安装到服务器本地硬盘中,也可以部署到公有云上,或者配合 DockerMachine 使用。与 Ubuntu 和 CentOS 不同,RancherOS 使用 cloud-config.yml 配置文件来管理机器的配置信息,包括系统启动时的服务、网络相关的配置信息、存储配置、容器配置等等,都可以放到配置文件中进行管理。

安装 cloudboot

可参阅 CloudBoot 一键部署 :


http://idcos.github.io/osinstall-doc/environment/一键部署.html


挂载 RancherOS 镜像


wget -P /tmp/ http://releases.rancher.com/os/latest/rancheros.isomkdir -p $PWD/cloudboot/deploy/iso/rancheros/1.5.1/mount -o loop /tmp/rancheros.iso /mediarsync -a /media/ $PWD/cloudboot/deploy/iso/rancheros/1.5.1/umount /media
复制代码


创建软连接


docker exec -it cloudboot /bin/sh


ln -s /data/iso/rancheros /home/www/rancheros


注意


  • CloudBoot 默认用户名密码是 admin/admin

  • 登陆后需要配置 dhcp(【系统管理】-> 【系统设置】)

  • 需要配置网段(【网段管理】->【应用网段】)

  • 本文讲的是 VMware,所以不需要配置 OOB

  • 需要配置设备位置(【模板管理】->【位置管理】)

  • 如果 CloudBoot 和 RancherOS 都装在 VMware 虚拟机里,需要把 VMware 的网络设置中的 dhcp 去掉,否则会冲突

pxe 安装 RancherOS

参考 RancherOS#docs#iPXE 和 CloudBoot PXE 模板定制规范



PXE 模板管理


从【模板管理】->【PXE 模板管理】 新增 RancherOS-1.5.1


DEFAULT rancherosLABEL rancherosKERNEL http://osinstall.idcos.com/rancheros/1.5.1/boot/vmlinuz-4.14.85-rancherAPPEND initrd=http://osinstall.idcos.com/rancheros/1.5.1/boot/initrd-v1.5.1 rancher.cloud_init.datasources=[url:http://osinstall.idcos.com/api/osinstall/v1/device/getSystemBySn?sn={sn}] rancher.autologin=tty1 rancher.autologin=ttyS0 rancher.autologin=ttyS1 rancher.autologin=ttyS1 console=tty1 console=ttyS0 console=ttyS1 printk.devkmsg=on panic=10IPAPPEND 2
复制代码


系统模板管理


从【模板管理】->【系统模板管理】 新增 rancheros-1.5.1


把 docker mirror 换成实际的加速器,如果不需要,可以删除,ssh_authorized_keys 换成真实的 ssh key


#cloud-config
rancher: console: alpine docker: registry_mirror: "https://xxx.mirror.aliyuncs.com"runcmd: - sh -c 'curl http://osinstall.idcos.com/scripts/rancheros.sh | bash'ssh_authorized_keys: - ssh-rsa AAAA....ZZZZ user@user
复制代码


自定义脚本


在 CloudBoot 宿主机上,运行 docker exec -it cloudboot /bin/sh ,然后运行 vim /home/www/scripts/rancheros.sh


#!/bin/bashprogress() {    curl -H "Content-Type: application/json" -X POST -d "{\"Sn\":\"$_sn\",\"Title\":\"$1\",\"InstallProgress\":$2,\"InstallLog\":\"$3\"}" http://osinstall.idcos.com/api/osinstall/v1/report/deviceInstallInfo}
_sn=$(sed q /sys/class/net/eth0/address)
progress "配置主机名和网络" 0.7 "6YWN572u5Li75py65ZCN5ZKM572R57uc"
# config networkcurl -o /tmp/networkinfo "http://osinstall.idcos.com/api/osinstall/v1/device/getNetworkBySn?sn=${_sn}&type=raw"source /tmp/networkinfo
cat > /etc/network/interfaces <<EOFauto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress $IPADDRnetmask $NETMASKgateway $GATEWAYEOF
echo "$HOSTNAME" > /etc/hostnamesudo hostname "$HOSTNAME"
progress "配置alpine镜像源" 0.8 "6YWN572uYWxwaW5l6ZWc5YOP5rqQ"sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
progress "安装完成" 1 "5a6J6KOF5a6M5oiQ"sudo ros install -c http://osinstall.idcos.com/api/osinstall/v1/device/getSystemBySn?sn=$_sn" -d /dev/sda -f
复制代码


自动化安装 RancherOS


从 VMware 创建 空盘 -> 其他 Linux4.x 或更高版本内核 64 位,2 核 2G 虚拟机,然后上电


虚拟机会从 PXE 拉取 CloudBoot 的 bootos 安装到内存中,并且往 CloudBoot 上注册待录入的设备(待屏幕变蓝色)



从 http://${cloudboot host}/#/dashboard/device/scan/list 会发现新设备,选中后,点击录入新设备




bootos 会自动轮询是否有自动装机任务,所以静候即可。如果等不及,可以在录入成功后,手动重启虚拟机。


在【正在安装的设备】中,会自动出现要安装的设备



点击【详情】会在滚动模式下试试看到安装进度



在【设备列表】可以看到已安装成功的设备



注意


和 Rancher Labs 架构师张智博讨论后,张智博指出


booting from ISO 首次启动,整个系统都在内存中。

执行 ros install 后,安装 bootloader 和 initrd/vmlinuz 到磁盘。

再次启动后,就是完整的运行在硬盘上的操作系统。

脑洞

可以在 cloud config 配置自定义服务,这样装机后,就可以直接启动服务,不需要 ssh 到 ros 上,手动执行命令,例如配置 Rancher client 的添加主机的命令,这样就可以直接添加到已有集群。


更多参考 Custom System Services:https://rancher.com/docs/os/v1.x/en/installation/system-services/custom-system-services/


#cloud-config
rancher: services: nginxapp: image: nginx restart: always
复制代码

参考资料


作者简介


赵安家,山东顺能网络全栈研发工程师。前端后端通吃,DevOps、安全、培训都有涉猎,负责了公司从单体服务迁移至微服务的项目。


2020-05-14 22:251522

评论

发布
暂无评论
发现更多内容

Netty 核心源码解读 —— ServerBootstrap 篇

松然聊技术

Netty

到底什么是Event Loop?那就来了解一下JavaScript分别在浏览器和Node环境下的运行机制吧

零一

JavaScript 大前端

Python-计算机视觉-OpenCV-调色板

Aldeo

Python OpenCV

SQLServer性能调优方法小结

嘉为蓝鲸

数据库 sql 运维 SqlServer MAXDOP

使用Redis,你必须知道的21个注意要点

Java 数据库 redis 架构 面试

Python 高手都这样使用字典,这些高效方法你知道吗?|pythonic 小技巧

AlwaysBeta

Python

Dubbo的设计理念原来就藏在这三张图中

中间件兴趣圈

dubbo RPC

快速使用Vue3最新的15个常用API(1W5+字详解,建议收藏)

零一

vue.js 大前端 Vue3

已拿到蚂蚁金服Offer!阿里内部二十三万字Java面试题总结

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

下一站,星辰大海!

百度大脑

百度 AI 上市

nsq源码阅读之消息接收和发送

werbenhu

nsq Go 语言

一文搞懂 Flink 中的锁

shengjk1

flink flink 锁

Redis新版本开始引入多线程,谈谈你的看法?

Java架构师迁哥

nsq源码阅读之diskqueue

werbenhu

nsq Go 语言

推荐35款可以快速提升工作效率的软件

科技猫

软件 经验分享 实用工具 办公 工具分享

hive的DQL查询语法详细剖析

大数据技术指南

大数据 hive 3月日更

图解TCP的通信机制

零一

TCP 网络

阿里一战封神,百万人跪求的Java面试手册终于开源;

Java架构师迁哥

nsq源码阅读之Channel

werbenhu

nsq Go 语言

4层板到12层板叠层经典设计方案

不脱发的程序猿

28天写作 电路设计 3月日更 PCB PCB布局

nsq源码阅读之nsqd总体流程

werbenhu

nsq Go 语言

如何在3分钟内实现音频变声和趣味音效?

拍乐云Pano

音视频 RTC 出海社交 社交泛娱乐

超全Android中高级面试复习大纲,在线面试指南

欢喜学安卓

android 程序员 面试 移动开发

SDK介绍及相关功能测试

行者AI

测试 sdk

nsq源码阅读之Topic

werbenhu

nsq Go 语言

Netty 核心源码解读 —— 开篇

松然聊技术

Netty

硬件工程师必备,常用元器件封装速查表

不脱发的程序猿

28天写作 电路设计 3月日更 元器件封装速查表 电子设计

【LeetCode】扁平化嵌套列表迭代器Java题解

Albert

算法 LeetCode 3月日更

Swift 5创建和使用Framework, XCFramework 从入门到精通 John 易筋 ARTS 打卡 Week 42

John(易筋)

ARTS 打卡计划 Framework XCFramework

想学IT的必看!漫谈MySQL权限安全,分享一点面试小经验

欢喜学安卓

android 程序员 面试 移动开发

DB-Engines 3月数据库排名:MySQL跳出“同期跌幅榜”,拿下“本月涨幅榜冠军”

华章IT

数据库

一文教你用CloudBoot批量安装RancherOS_文化 & 方法_Rancher_InfoQ精选文章