cobbler 服务自动化部署 SHELL

本贴最后更新于 1471 天前,其中的信息可能已经时移世易

#!/bin/bash # #******************************************************************** #Author:zhangzhuo #QQ: 1191400158 #Date: 2021-02-10 #FileName:install_cobbler_centos7.sh #URL: https://www.zhangzhuo.ltd #Description:The test script #Copyright (C): 2021 All rights reserved #******************************************************************** . /etc/init.d/functions variable(){ #初始变量设置 #cobbler服务器地址 cobbler_server=192.168.10.71 #dhcp分配网段及子网掩码 subnet=192.168.10.0 netmask=255.255.255.0 #dhcp分配网关 routers=192.168.10.2 #dhcp服务器地址 dns=114.114.114.114 #dhcp地址池 range="192.168.10.100 192.168.10.200" } #安装软件 install_yum(){ yum install cobbler cobbler dhcp -y [ $? = 0 ] && action "必备软件安装成功" || action "软件安装失败请检查YUM源" false systemctl enable --now cobblerd.service httpd.service tftp.service &>/dev/null systemctl is-active tftp.service &>/dev/null && action "TFTP服务启动成功" || action "TFTP服务启动失败" false systemctl is-active httpd.service &>/dev/null && action "HTTP服务启动成功" || action "HTTP服务启动失败" false systemctl is-active cobblerd.service &>/dev/null && action "cobbler服务启动成功" || { action "cobbler服务启动失败" false; } } #配置cobbler服务 set_cobbler(){ variable sed -ri 's/^(default_password_crypted:).*/\1 "$1$yB26sGrf$JPTQcfvTWXKBZRs0o9F7B1"/' /etc/cobbler/settings sed -ri "s/^(next_server:).*/\1 $cobbler_server/" /etc/cobbler/settings sed -ri "s/^(server:).*/\1 $cobbler_server/" /etc/cobbler/settings sed -ri 's/^(manage_dhcp:).*/\1 1/' /etc/cobbler/settings sed -ri 's/^(pxe_just_once:).*/\1 1/' /etc/cobbler/settings systemctl restart cobblerd.service systemctl is-active cobblerd.service &>/dev/null && action "cobbler服务重启成功" || { action "cobbler服务重新启动失败" false;exit; } } #配置dhcp服务 set_dhcp(){ variable sed -ri "s/^(subnet) .* (netmask) 255.255.255.0\ (\{)/\1 ${subnet} \2 ${netmask} \3/" /etc/cobbler/dhcp.template sed -ri "s/[^a-z](option routers[^0-9]*)[0-9]+.*/\1${routers};/" /etc/cobbler/dhcp.template sed -ri "s/[^a-z](option domain-name-servers[^0-9]*)[0-9]+.*/\1${dns};/" /etc/cobbler/dhcp.template sed -ri "s/[^a-z](option subnet-mask[^0-9]*)[0-9]+.*/\1${netmask};/" /etc/cobbler/dhcp.template sed -ri "s/[^a-z](range dynamic-bootp[^0-9]*)[0-9]+.*/\1${range};/" /etc/cobbler/dhcp.template cobbler sync &>/dev/null systemctl enable --now dhcpd.service &>/dev/null } #准备启动文件 get_cobbler(){ cobbler get-loaders &>/dev/null && action "启动文件下载完成" || { action "启动文件下载失败" false;exit; } sed -ri 's/(ENU TITLE Cobbler \| ).*/\1 https:\/\/zhangzhuo.ltd/' /etc/cobbler/pxe/pxedefault.template cobbler sync &>/dev/null systemctl is-active dhcpd.service &>/dev/null && action "DHCP服务启动成功" || action "DHCP服务启动失败" false action "cobbler服务安装完" } cobbler_install(){ install_yum set_cobbler set_dhcp get_cobbler } create_ks(){ cat <<EOF >/var/lib/cobbler/kickstarts/ks-centos6.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts keyboard 'us' # Root password rootpw --iscrypted \$1\$NxU3dKmV\$fRJv0NpyNJv6sQSK2SEh// # System language lang en_US.UTF-8 # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install text # SELinux configuration selinux --disabled # Do not configure the X Window System authconfig --enableshadow --passalgo=sha512 # Firewall configuration firewall --disabled # Network information network --onboot yes --bootproto=dhcp --device=eth0 --noipv6 # Reboot after installation reboot # System timezone timezone Asia/Shanghai # Use network installation url --url=\$tree # System bootloader configuration bootloader --append="crashkernel=auto rhgb quiet" --location=mbr --driveorder=sda # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=2048 part / --fstype="ext4" --size=10240 part /data --fstype="ext4" --size=2048 part swap --fstype="swap" --size=1024 %post %end %packages @development @mail-server %end EOF cat <<EOF >/var/lib/cobbler/kickstarts/ks-centos7.cfg #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Install OS instead of upgrade install # Keyboard layouts keyboard 'us' # Root password rootpw --iscrypted \$1\$NxU3dKmV\$fRJv0NpyNJv6sQSK2SEh// # System language lang en_US # System authorization information auth --useshadow --passalgo=sha512 # Use text mode install text # SELinux configuration selinux --disabled # Do not configure the X Window System skipx # Firewall configuration firewall --disabled # Network information network --bootproto=dhcp --device=eth0 # Reboot after installation reboot # System timezone timezone Asia/Shanghai # Use network installation url --url=\$tree # System bootloader configuration bootloader --append="net.ifnames=0" --location=mbr # Clear the Master Boot Record zerombr # Partition clearing information clearpart --all --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=2048 part / --fstype="ext4" --size=10240 part /data --fstype="ext4" --size=2048 part swap --fstype="swap" --size=1024 %post %end %packages @development @mail-server %end EOF cat <<EOF >/var/lib/cobbler/kickstarts/ks-centos8.cfg #version=RHEL8 ignoredisk --only-use=sda # Partition clearing information # Use graphical install text zerombr reboot clearpart --all --initlabel selinux --disabled firewall --disabled # Use CDROM installation media url --url=\$tree # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8 # Network information bootloader --append="net.ifnames=0" --location=mbr --boot-drive=sda network --bootproto=dhcp --device=eth0 --ipv6=auto --activate network --hostname=localhost.localdomain # Root password rootpw --iscrypted \$6\$q76Q7kMy.HLaa0Jc\$pN1iBqDhYaNZNqLxV.8Qz8QwxgRYB3NXt7/1ikn4buFXhI8GrYUj3hzYhN5Bdw5LzmmZAbXEg9KNx8cC67J73. # Run the Setup Agent on first boot firstboot --enable # Do not configure the X Window System skipx # System services services --disabled="chronyd" # System timezone timezone Asia/Shanghai --isUtc --nontp #Disk partitioning information part /boot --fstype="ext4" --size=2048 part / --fstype="ext4" --size=10240 part /data --fstype="ext4" --size=2048 part swap --fstype="swap" --size=1024 %packages @^minimal-environment vim tree wget curl %end %addon com_redhat_kdump --disable --reserve-mb='auto' %end %anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end EOF [ -e /var/lib/cobbler/kickstarts/ks-centos6.cfg ] && action "centos6应答文件已经生成" || action "centos6应答文件生成失败" false [ -e /var/lib/cobbler/kickstarts/ks-centos7.cfg ] && action "centos7应答文件已经生成" || action "centos7应答文件生成失败" false [ -e /var/lib/cobbler/kickstarts/ks-centos8.cfg ] && action "centos8应答文件已经生成" || action "centos8应答文件生成失败" false } cobbler_put_os(){ read -p "上传系统名称:(推荐使用centos-8.2) " OS_NAME read -p "系统磁盘挂载路径:(示范/mnt/centos8.2) " FILE echo "上传过程较慢请耐心等待....." echo "上传位置为/var/www/cobbler/ks_mirror/${OS_NAME}-x86_64" cobbler import --name=${OS_NAME}-x86_64 --path=${FILE} --arch=x86_64 && action "上传完成" || action "上传失败" false } ks_install(){ [ -e /var/lib/cobbler/kickstarts/ks-centos8.cfg ] || { action "请先生成应答文件" false;return; } [ -e /var/lib/cobbler/kickstarts/ks-centos7.cfg ] || { action "请先生成应答文件" false;return; } [ -e /var/lib/cobbler/kickstarts/ks-centos6.cfg ] || { action "请先生成应答文件" false;return; } echo "现有镜像:" echo "`cobbler profile list`" read -p "请输入要应用的系统镜像名称:" NAME_OS { cobbler profile list | grep $NAME_OS; } || { action "没有这个镜像" false;return;} read -p "请确认centos版本(6,7,8):" VERSION if [ $VERSION -eq 6 ] &>/dev/null;then i=6 elif [ $VERSION -eq 7 ] &>/dev/null;then i=7 elif [ $VERSION -eq 8 ] &>/dev/null;then i=8 else action "输入错误" false ; return fi cobbler profile remove --name=${NAME_OS} cobbler profile add --name=${NAME_OS} --distro=${NAME_OS} --kickstart=/var/lib/cobbler/kickstarts/ks-centos${i}.cfg && action "应用成功" || action "应用失败" false } PS3="请选择相应的编号(1-5):" MENU=" cobbler安装 cobbler上传系统镜像 cobbler自定义应答文件生成 cobbler使用应答文件 退出 " select menu in $MENU;do case $REPLY in 1) cobbler_install ;; 2) cobbler_put_os ;; 3) create_ks ;; 4) ks_install ;; 5) break ;; *) echo -e "输入错误,请输入正确的数字(1-5)" ;; esac done

注意事项:

  • 部署只能部署在 centos7 系统
  • 上传镜像需注意无法上传 centos8.3 镜像,有报错信息。有解决方案自行百度
  • 上传镜像后直接可以进行系统部署,部署方式为默认最小化,部署后 root 密码为 123456
  • 如要使用自定义应答文件请正确选择版本否则部署会报错
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    124 引用 • 74 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    170 引用 • 513 回帖 • 1 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    93 引用 • 113 回帖 • 1 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 779 关注
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖 • 1 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 212 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    87 引用 • 139 回帖 • 1 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 732 关注
  • 996
    13 引用 • 200 回帖 • 11 关注
  • 链滴

    链滴是一个记录生活的地方。

    记录生活,连接点滴

    163 引用 • 3820 回帖
  • RIP

    愿逝者安息!

    8 引用 • 92 回帖 • 380 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖
  • RemNote
    2 引用 • 16 回帖 • 12 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 413 关注
  • Logseq

    Logseq 是一个隐私优先、开源的知识库工具。

    Logseq is a joyful, open-source outliner that works on top of local plain-text Markdown and Org-mode files. Use it to write, organize and share your thoughts, keep your to-do list, and build your own digital garden.

    6 引用 • 63 回帖 • 8 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 701 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 1 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 1 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    197 引用 • 541 回帖 • 2 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 752 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 237 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 364 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    93 引用 • 901 回帖
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 71 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    84 引用 • 324 回帖
  • 笔记

    好记性不如烂笔头。

    311 引用 • 796 回帖