写点什么

一文教你用 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:251357

评论

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

优秀!阿里甩出GC面试小册,仅7天Github获赞96.9K

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

Pulsar 分级存储 -- S3 演示

Apache Pulsar

大数据 架构 云原生 分布式存储 Apache Pulsar

工具 | 一条 SQL 实现 PostgreSQL 数据找回

RadonDB

数据库 postgresql RadonDB

分区丢失导致文件丢失?巧用EasyreCovery找回!

淋雨

数据恢复

Micro Focus Fortify 最新能力发布,应用安全进入“一切皆代码”新时代

多商户入驻系统开发多商户入驻app源码开发

风行无疆

彻底搞懂访问者模式的静态、动态和伪动态分派

Tom弹架构

Java 架构 设计模式

CSS布局(四)之文本布局

Augus

CSS 11月日更

DAS易用性设计

赫杰辉

外卖跑腿系统专业开发外卖跑腿app源码开发

风行无疆

如何修复org/jacoco/agent/rt/internal_773e439/Offline异常?

Changing Lin

11月日更

论文解读丨无参数的注意力模块SimAm

华为云开发者联盟

卷积神经网络 视觉 注意力模块 SimAm 神经元

为何每次用完ThreadLocal都要调用remove()?

热爱java的分享家

Java 程序人生 编程语言 经验分享

你的web知识有所欠缺。

喀拉峻

Web 安全

Function Mesh:Serverless 在消息与流数据场景下的火花

Apache Pulsar

大数据 架构 云原生 Apache Pulsar pulsar社区

艾媒报告:百度输入法AI功能领跑行业 用户满意度第一

百度开发者中心

百度 AI

Alibaba最新神作!耗时182天肝出来1015页分布式全栈手册太香了

热爱java的分享家

Java 面试 分布式 编程语言 经验分享

在牛客逮到一个阿里10年老Java开发,聊过之后收益良多...

Geek_1df311

Java 编程 架构 面试 计算机

又一次漏洞复现与分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

掌握Java的内存模型,你就是解决并发问题最靓的仔

华为云开发者联盟

Java 内存模型 线程 并发 工作内存

行业分析| 为什么uni-app在音视频领域这么火?

anyRTC开发者

uni-app 音视频 移动开发 语音通话 视频通话

元气部落盲盒软件原生开发芒趣盲盒app源码

风行无疆

秋招拿到offer之后,分享面试阿里、头条、腾讯的经过以及一些总结

Geek_1df311

Java 编程 程序员 架构 面试

帧彩视界之Pseudo HDR:为普通SDR设备用户提供HDR体验

微帧Visionular

视频编码 HDR

会声会影编辑面板常用功能介绍

懒得勤快

pringBoot + Mybatis Plus + ClickHouse增删改查入门教程

程序员万金游

MySQL 数据库 mybatis Clickhouse

趣谈哈希表优化:从规避 Hash 冲突到利⽤ Hash 冲突

热爱java的分享家

Java 架构 编程语言 经验分享 哈希表

24 K8S之Service资源及其模型

穿过生命散发芬芳

k8s 11月日更

TypeScript 之 Typeof Type Operator

冴羽

JavaScript typescript html5 翻译 大前端

Go语言学习查缺补漏ing Day6

Regan Yue

Go 语言 11月日更

干货必收藏!墨天轮最受DBA欢迎的250份学习文档合集

墨天轮

MySQL 数据库 oracle postgresql

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