当前位置: 首页 > news >正文

010-cloudboot批量安装rancheros

这是坚持技术写作计划(含翻译)的第10篇,定个小目标999,每周最少2篇。

本文主要讲解如何使用cloudboot简单批量安装rancheros。

介绍

cloudboot

cloudboot是 云霁科技 科技开源的一款简单易用的装机系统,类似 cobbler ,但是功能更强大,更易用。(可参考我之前写的 007-Cobbler批量自动化部署Windows10和Server 2019 和 006-Cobbler批量自动化部署CentOS/Ubuntu/Windows)

rancheros

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

安装cloudboot

参考 cloudboot一键部署 不多赘述

挂载rancheros镜像

wget -P /tmp/ http://releases.rancher.com/os/latest/rancheros.iso
mkdir -p $PWD/cloudboot/deploy/iso/rancheros/1.5.1/
mount -o loop /tmp/rancheros.iso /media
rsync -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 rancheros
LABEL rancheros
KERNEL http://osinstall.idcos.com/rancheros/1.5.1/boot/vmlinuz-4.14.85-rancher
APPEND 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=10 
IPAPPEND 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/bash
progress() {
    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 network
curl -o /tmp/networkinfo "http://osinstall.idcos.com/api/osinstall/v1/device/getNetworkBySn?sn=${_sn}&type=raw"
source /tmp/networkinfo

cat > /etc/network/interfaces <<EOF
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address $IPADDR
netmask $NETMASK
gateway $GATEWAY
EOF

echo "$HOSTNAME" > /etc/hostname
sudo 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会自动轮询是否有自动装机任务,所以静候即可。如果等不及,可以在录入成功后,手动重启虚拟机。
在【正在安装的设备】中,会自动出现要安装的设备

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

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

注意

不知道为嘛,安装后需要重启一下虚拟机后,才能使用ssh进行连接。

根据rancher labs 大神腩哥指点

booting from ISO 首次启动,整个系统都在内存中。
执行ros install后,安装bootloader和initrd/vmlinuz到磁盘。
再次启动后,就是完整的运行在硬盘上的操作系统。

脑洞

其实是正规操作,可以在 cloud config 配置自定义服务,这样装机后,就可以直接启动服务,不需要ssh到ros上,手动执行命令,例如配置rancher client的添加主机的命令,这样就可以直接添加到已有集群。 更多参考 Custom System Services

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

参考资料

  • cloudboot一键部署
  • cloudboot PXE模板定制规范
  • rancheros#docs#iPXE
  • 006-Cobbler批量自动化部署CentOS/Ubuntu/Windows
  • 007-Cobbler批量自动化部署Windows10和Server 2019

招聘小广告

山东济南的小伙伴欢迎投简历啊 加入我们 , 一起搞事情。

长期招聘,Java程序员,大数据工程师,运维工程师,前端工程师。

转载于:https://juejin.im/post/5c84f9d8f265da2de33f5936

相关文章:

  • Audacity 2.3.1 发布,恢复 Linux 支持
  • 本地vs云:大数据厮杀的最终幸存者会是谁?
  • Confluence 6 示例 - https://confluence.atlassian.com/
  • 没有网站,靠什么来吸引近9亿的互联网用户
  • 金融壹账通获人工智能杰出奖 微表情识别技术再获国际认可
  • Godot 3.1 发布,可用性提升,并带来大量新特性
  • spring boot 整合Mybatis
  • mysql b+ tree 3阶索引能存多少数据
  • Python进阶:如何将字符串常量转化为变量?
  • Spring Boot:快速入门(二)
  • 你可能不太会用的10个Git命令
  • 阿里巴巴复杂搜索系统的可靠性优化之路
  • roncoo-education 2.0.0 正式发布,分布式在线教育系统
  • 如何根据自己业务场景购买阿里云产品
  • springcloud分布式微服务(二):注册中心Eureka
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • [LeetCode] Wiggle Sort
  • Android框架之Volley
  • js递归,无限分级树形折叠菜单
  • oldjun 检测网站的经验
  • scrapy学习之路4(itemloder的使用)
  • 基于HAProxy的高性能缓存服务器nuster
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 实习面试笔记
  • 首页查询功能的一次实现过程
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • elasticsearch-head插件安装
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​马来语翻译中文去哪比较好?
  • (done) 两个矩阵 “相似” 是什么意思?
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .Net Core和.Net Standard直观理解
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net2005怎么读string形的xml,不是xml文件。
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET导入Excel数据
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET与 java通用的3DES加密解密方法
  • .net中我喜欢的两种验证码
  • @Builder用法
  • [AMQP Connection 127.0.0.1:5672] An unexpected connection driver error occured
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [BT]BUUCTF刷题第4天(3.22)
  • [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解
  • [Foreman]解决Unable to find internal system admin account
  • [HTML]Web前端开发技术6(HTML5、CSS3、JavaScript )DIV与SPAN,盒模型,Overflow——喵喵画网页
  • [IE编程] 打开/关闭IE8的光标浏览模式(Caret Browsing)
  • [JavaScript]_[初级]_[关于forof或者for...of循环语句的用法]