Cobbler自动化安装部署Ubuntu 14.04

概述

本例主要实现通过cobbler,配合seed脚本文件,来自动化安装部署ubunut环境,并安装相应的软件并作相应的基本配置,可以通过此方法来为ceph等大规模集群基础部署。

seed文件:Debian Ubuntu平台的一种自动化部署配置文件 和kickstart文件功能相同。其实ubuntu也可以使用ks文件,但是只能进行基本的环境配置,不能自定义包的安装和脚本的运行。

实验环境

cobbler-server: 1.1.1.122 CentOS7.2

ubuntu 客户端:kvm虚拟机

定义发行版Distro

导入外部安装源,如光盘导入本地会放在 /var/www/cobbler/ks_mirror 下,通过 http输出,假设这里已将ubuntu的安装光盘挂载到本地 的/mnt 下

cobbler import –name=”ubuntu14″ –path=/mnt    【导入安装源】
cobbler distro list 【查看已经存在的安装源】

建立更改配置文件profile
1.用于与相应的发行版联系起来,实现同一个发行版的不同安装选项,名称不要与 distro 相同。默认情况下,建立完成distro后会自动建立与之相关联的profile。如果想手动建立并且指定seed文件的话使用如下操作:
cobbler profile add –name=ubuntu14-x86_64 –distro=ubuntu14 –kickstart=/var/lib/cobbler/kickstarts/ubuntu.seed 【指定发行版为ubuntu14,并指定 seed文件的名称和位置, cobbler 的/var/lib/cobbler/kickstarts/目录下带了很多 kickstart和seed的文件模板

 具体seed文件内容稍后会列出。当然这些操作可以在web UI界面下完成,也很直观。
2.查看现有的profile
cobbler profile list

添加安装节点System
主要功能就是可以根据节点mac地址,来识别不同节点的安装选项差异,如ip、dns、hostname等等。

1234567891011 cobbler system add \
–name=ceph-deploy \
–hostname=ceph-deploy.test.com \
–dns-name=ceph-deploy.test.com \
–profile=ubuntu14-x86_64 \
–interface=eth0 \
–mac= [mac地址] \
–ip-address=1.1.1.30 \
–subnet=255.255.255.0 \
–gateway=1.1.1.1 \
–static=1

这样当客户端通过pxe启动,检测到与之匹配的mac时候就会自动调取相应的system,安装过程中会给分配相应的地址等信息。如果不匹配启动就会出现cobbler默认的引导菜单界面。

#############
# 网络配置
#############
 
d-i netcfg/choose_interface select auto
 
#############
# Pre Install
############
 
# Command Line 1: This is necessary otherwise you will be prompted to umount /dev/sda. See Ubuntu bug #1347726.
d-i preseed/early_command string \
      umount /media || true
       
#############
# Net Image
#############
 
# 针对12.10以上的版本一定要配置这个
d-i live-installer/net-image string 
 
#############
#语言设置
#############
d-i debian-installer/locale string en
d-i debian-installer/country string CN
d-i debian-installer/locale string en_US.UTF-8
d-i debian-installer/language string en
 
#############
# 键盘设置
#############
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us
d-i console-setup/variantcode string
d-i keyboard-configuration/layoutcode string us
 
#############
# 安装源配置
#############
#安装源配置
d-i mirror/country string manual
d-i mirror/http/proxy string 1.1.1.122    #此处必须填写,否则安装system要等很久
d-i mirror/http/hostname string 1.1.1.122
d-i mirror/http/directory string /ubuntu/
 
#############
# APT 
############
#如不配置此项,在安装包的时候会卡住很久,但不影响最终安装结果
d-i apt-setup/security_host string 172.16.245.240
d-i apt-setup/security_path string /ubuntu
 
#############
#
# Clock and Time Zone
#
#############
 
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string 1.1.1.1
 
d-i time/zone string Asia/Shanghai
 
d-i clock-setup/CST boolean true
 
#############
# Partitioning
#############
 
#清楚磁盘中所有的lvm分区
d-i partman-lvm/device_remove_lvm boolean true
 
# 清楚所有raid分区
d-i partman-md/device_remove_md boolean true
 
 
#使用磁盘进行普通分区
d-i partman-auto/method string  regular
d-i partman-auto/disk string /dev/vda    #kvm虚拟机中磁盘是vda,如果是真实机器则是sda
 
#预定义分区方式,每个分区在一行定义,以.结尾
#每组分区三个数字表示:最小分区多少MB,优先级(越小越优先),分区最大多少MB
d-i partman-auto/expert_recipe string                        \
    boot-root ::                                            \
              150 150 150 ext4                                \
                      $primary{ } $bootable{ }                \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ /boot }                    \
              .                                              \
              8000  8000 8000 linux-swap                          \
                      method{ swap } format{ }                \
              .                                                \
 
              204800 204800 204800 ext4                      \
                      method{ format } format{ }              \
                      use_filesystem{ } filesystem{ ext4 }    \
                      mountpoint{ / }                        \
              .
               
d-i partman-partitioning/confirm_write_new_label boolean true #不提示写入fenqu信息到磁盘
d-i partman/choose_partition select finish 
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true #不提示覆盖磁盘中已有数据
#############
# Packages
#############
 
# 这里目前我只能选择包组,没法制定具体某个安装包,不知道具体为什么。
tasksel tasksel/first multiselect openssh-server
 
# 禁止安装时自动更新
d-i pkgsel/upgrade select none
 
d-i pkgsel/update-policy select none
 
popularity-contest popularity-contest/participate boolean false
 
#############
# Users and Password
#############
 
#允许使用root登录
d-i passwd/root-login boolean true
 
# 不建立其他用户
d-i passwd/make-user boolean false
#允许使用弱密码
d-i user-setup/allow-password-weak boolean true
 
#配置root密码,通过mkpasswd程序生成
d-i passwd/root-password-crypted password $1$RsMBi5P0$bWmhi.I4MnZPmWFXpBEy0/
 
#############
# Bootloader
#############
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note    #安装完成后重启
 
#############
# 安装完成后执行脚本和命令
#############
 
#所有命令通过;分隔,如果使用一般命令可以直接执行,但此时真正的系统正被挂在载/target/下面,因此最终执行的目标是/target/下,如果想使用系统级的命令,如执行脚本等。需要通过chroor 到/target下,以target为根 才能正常执行,否则报错。
#第一个命令是修改ssh配置文件,使其允许root登录
#第二个命令是下载soures.list,该文件实现定义内部的apt源。
#第三个命令是去掉cobbler中system的自动引导,否则下次重启系统还会重新安装。
#第四个命令是下载并执行一个脚本,实现公钥注入功能。
#第五个命令是更新apt源,并安装指定的软件包。
#第六个命令则修改puppet配置文件和chrony时间服务的配置文件。
d-i preseed/late_command string \
        sed -i ‘/PermitRootLogin / s/ .*/ yes/’ /target/etc/ssh/sshd_config; \
        wget http://$http_server/cobbler/repo_mirror/trusty-sources.list -O /target/etc/a        pt/sources.list; \
        wget http://$http_server/cblr/svc/op/nopxe/system/$system_name -O /dev/null; \
        cd /target; \
        wget http://$http_server/cobbler/svc/public_key.sh; chmod +x ./public_key.sh; chr        oot ./ ./public_key.sh; \
        chroot ./ apt-get update; \
        chroot ./ apt-get install -y –force-yes vim chrony puppet; \
        cd – ; \
        sed -i ‘8 s/^.*/server=puppet-server.chinergy.com.cn/’ /target/etc/puppet/puppet.        conf; sed -i ‘4 s/^.*/server 1.1.1.1 iburst/’ /target/etc/chrony/chrony.conf

公钥注入脚本内容
123456 mkdir /root/.ssh
 
cat >> /root/.ssh/authorized_keys << PUPPET
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCk0cgPsrcwvIKBe+Y4sDMtcriNkxgLvXDTJhi1M4v+HvUF0VUO7DmjESfcUcpJVRn09O8erYcPy548b/mJBoy0zfp16+5mGw6y9NH/VHToxfqkA1nAdBKQRih7CHv40iO7cFxFBnDcL+5nTyHzHAbPx4TZ5QwsWGNPnL8yMFyeX2dxP64woiwVIcKo2yoVockyyiGkgiOb6vc6ZK6XKR1LjhAr1ESAAYBzSKNCNak8qrf4tuCvVI++qnl9GiiLJ+OatTNOLId3umz5+J5/hRfHhxNzR7P0q/fJBQOvgtBqXaldJFYM6zr679dB4niMuObXphVuOVGfQDDOK7w/ root@puppet-server
 
PUPPET

总结
    个人感觉ubuntu的seed文件较ks更为复杂一些,而且更容易出错,很详细的说明文档也很少,所以在自己的环境中不断的试验修改,最后达到适合自己环境的版本。目前还不知道在post脚本阶段怎么成功引用snippets变量,试了很多方式都会报错,因此干脆就用执行脚本替代了。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/208863.html<

(0)
管理的头像管理
上一篇2025-04-09 05:07
下一篇 2025-04-09 05:09

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注