cobbler 服务自动化部署 SHELL

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

#!/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 回帖 • 2 关注

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    161 引用 • 307 回帖
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 724 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 176 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 164 关注
  • V2Ray
    1 引用 • 15 回帖
  • 博客

    记录并分享人生的经历。

    273 引用 • 2388 回帖
  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 396 回帖
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 158 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 177 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 27 关注
  • 反馈

    Communication channel for makers and users.

    126 引用 • 930 回帖 • 272 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    9571 引用 • 43560 回帖 • 97 关注
  • Kotlin

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

    19 引用 • 33 回帖 • 79 关注
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    952 引用 • 944 回帖
  • DevOps

    DevOps(Development 和 Operations 的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

    57 引用 • 25 回帖 • 3 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    267 引用 • 666 回帖
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 608 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 1 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用 • 2 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 653 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖 • 1 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    36 引用 • 155 回帖
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 5 关注