文档章节

cobbler环境搭建+IPMI/PXE远程装机

China_OS
 China_OS
发布于 2013/03/18 22:22
字数 2703
阅读 8751
收藏 30

   Red Hat发布的网络安装服务器套件Cobbler(在2008年左右发布),它已将 Linux网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会。对于我们这些在装机领域浸淫多年,经验丰富,老骥伏枥,志在千里的民工兄弟们来说,不啻为一个晴天霹雳,杯具的是以前我竟然不会,话不多说,直接开始试验...

    实验环境:cobbler server 10.1.6.234 (DELL 610 ubuntu12.04)

              待安装服务器 *2 (DELL 410)

              关于网络环境,都在同一个交换机下,同一vlan中,因为要用IPMI远程安装,网络环境还是要设置好的。

    实验结果:ubuntu12.04、centos6.3安装成功,debian6、ubuntu12.10安装失败,下面开始部署cobbler环境。

1 安装cobbler

#安装cobbler
apt-get install cobbler
#在安装debian系列时会用到的一个软件包
apt-get install debmirror 
#安装cobbler的web管理界面
apt-get install cobbler-web
    使用到的相关环境包tftpd-hpa、dhcp3-server会自动安装。web界面可以通过http://10.1.6.234/cobbler_web查看,不过目前你还无法查看,因为相关用户还没有设置,为cobbler用户重置密码:


#回车后会让你重置密码
htdigest /etc/cobbler/users.digest "Cobbler" cobbler


2 配置基本安装环境

  A 关于tftpd-hpa的配置:/etc/default/tftpd-hpa(默认无需修改,你可以根据自己的环境定制)

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

   通过/etc/init.d/tftpd-hpa 脚本管理

  B 关于dhcp的配置:/etc/dhcp/dhcpd.conf(需要根据你的环境进行设置,我所在的是10.1.6.x网段),不过为了使用脚本管理dhcp的运行,我们先设置/etc/default/isc-dhcp-server

    /etc/default/isc-dhcp-server:因为我的cobbler server只启动了eth0网卡,所以dhcp监听在eth0接口上

# Defaults for dhcp initscript
# sourced by /etc/init.d/dhcp
# installed at /etc/default/isc-dhcp-server by the maintainer scripts
# This is a POSIX shell fragment
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
INTERFACES="eth0"
    /etc/dhcp/dhcpd.conf:

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 10.1.6.0 netmask 255.255.255.0 {
  range 10.1.6.1 10.1.6.245;
  option routers 10.1.6.254;
  option broadcast-address 10.1.6.255;
  default-lease-time 600;
  max-lease-time 7200;
  next-server 10.1.6.234;
  filename  "pxelinux.0";
}

      过/etc/init.d/isc-dhcp-server 脚本管理

  C 关于cobbler的配置,cobbler安装完成后,还是有很多目录要使用的,主要用到的解释如下:

     /var/lib/cobbler 存储导入的镜像的配置信息,kickstarts目录存放kickstarts脚本,snippets目录存放在kickstat配置文件中可以执行的脚本,config目录提供配置信息,还有其他目录基本上无需配置。
     /var/www/cobbler 是导入发行版的操作系统的数据目录,ks_mirror里面是导入的发行版系统,images里面是所有发行版的kernel和initrd,用于远程网络启动。
     /var/log/cobbler 是日志目录
     /etc/cobbler 是cobbler的配置文件目录,settings是主配置文件,里面还有一些相关配置模版,users.conf是用户,users.digest是用户及密码

      别看这么多目录,其实安装cobbler完成后,基本配置也是不需要我们修改的,settings配置文件是主配置文件,有很多参数可以配置,详细的选项信息可以查看:http://cobbler.github.com/manuals/2.2.3/4/2_-_Cobbler_Settings.html

 D  关于IPMI的配置,因为要远程安装,在DELL服务器中,IPMI这个工具还是很给力的,三台机器都需要设置IPMI,因为cobbler server有操作系统,所以可以在系统中通过ipmitool命令进行设置,而两台客户机因为还没有操作系统,所以要提前设置好ipmi,两台客户机如下设置:

     设置IPMI地址及用户密码,开机按照提示按crtl+E进入IPMI配置界面


    选择LAN Parameters,设置该客户机的IPMI地址是172.16.6.200

    然后选择LAN User Configuration,设置root密码,然后保存退出。

   为了在远程能抓到客户端的启动过程,还需要设置BIOS,开机按F2进入BIOS进行设置


   选择Integrated Devices,因为只有一块网卡,所以设置从NIC1 启动PXE

   选择Serial Communication,设置串口,然后保存退出。

3 初始化cobbler安装环境

  前面说了我实验了四个发行版,成功两个,失败两个,为了快速安装都是导入相关iso作为安装源的,所以第一步是准备相关iso发行版,我的如下:

/opt
├── CentOS-6.3-x86_64-bin-DVD1.iso
├── debian-6.0.2.1-amd64-CD-1.iso
├── ubuntu-12.04-server-amd64.iso
└── ubuntu-12.10-server-amd64.iso
  以ubuntu12.04为例进行讲解,因为用这个iso可以成功安装客户机


  A 导入iso镜像

mount -o loop ubuntu-12.04-server-amd64.iso /mnt
cobbler import --path=/mnt --name=ubuntu12.04
     B 查看导入的结果:cobbler list,也可以使用cobbler profile/distro list查看

cobbler list
###显示结果如下
distros:
   ubuntu12.04-x86_64
profiles:
   ubuntu12.04-x86_64
systems:
repos:
images:
mgmtclasses:
packages:
files:
     很可惜ubuntu12.04默认导入的 profile/distro配置有问题,所以我们必须修改。


    修改distro

cobbler distro edit --name=ubuntu12.04-x86_64 \
--kernel=/var/www/cobbler/ks_mirror/ubuntu12.04/install/netboot/ubuntu-installer/amd64/linux \
--initrd=/var/www/cobbler/ks_mirror/ubuntu12.04/install/netboot/ubuntu-installer/amd64/initrd.gz --arch=x86_64 \
--breed=ubuntu --os-version=precise
      创建/var/lib/cobbler/kickstarts/ubuntu12.04.preseed,该文件为ubuntu12.04的preseed文件。

touch /var/lib/cobbler/kickstarts/ubuntu12.04.preseed
#######文件内容如下########
### Localization
d-i debian-installer/locale string en_US
d-i debian-installer/language string en
d-i debian-installer/country string US
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/layoutcode string us
d-i localechooser/supported-locales zh_CN.UTF-8

### Network configuration
d-i netcfg/enable boolean false
d-i netcfg/choose_interface select auto
d-i netcfg/disable_autoconfig boolean true
d-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Do not configure the network at this time

### Mirror settings
d-i mirror/country string manual
d-i mirror/http/hostname string 10.1.6.234
d-i mirror/http/directory string /ubuntu12.04
d-i mirror/http/proxy string
d-i mirror/udeb/components multiselect main, restricted
#d-i mirror/http/mirror select mirrors.163.com
#d-i mirror/suite string quantal

### Clock and time zone setup
d-i clock-setup/utc boolean true
d-i clock-setup/ntp boolean true
d-i clock-setup/ntp-server string 10.1.1.2
d-i time/zone string Asia/Shanghai

### Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
#d-i partman-auto/choose_recipe select atomic
d-i partman-auto/expert_recipe string      \
    boot-root ::                           \
           50000  50000  50000  ext4       \
                 $primary{ }               \
	          $bootable{ }	       \
                 method{ format }          \
		  format{ }   	              \
                 use_filesystem{ }         \
	         filesystem{ ext4 }	       \
                 mountpoint{ / }	       \
	      .                             \
            8000  8000 8000 linux-swap     \
	         method{ swap }             \
		  format{ }                  \
	      .                             \
	    10000 1000 1000000 ext4         \
                  method{ format }         \
	          format{ }   		\
                  use_filesystem{ }        \
		  filesystem{ ext4 }   	\
                  mountpoint{ /opt }	\
	      .                             \	
d-i partman/default_filesystem string ext4

d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/mount_style select uuid

### Base system installation
#d-i base-installer/install-recommends boolean true
#d-i base-installer/kernel/image     string linux-generic
d-i base-installer/kernel/image     string linux-server

### Account setup
d-i passwd/root-login boolean true
d-i passwd/root-password password 123456
d-i passwd/root-password-again password 123456
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
d-i passwd/make-user boolean false

### Package selection
tasksel tasksel/first multiselect standard
d-i pkgsel/include string openssh-server 
d-i pkgsel/upgrade select none
d-i pkgsel/language-packs multiselect de, en, zh
d-i pkgsel/update-policy select none
d-i pkgsel/updatedb boolean true

### Boot loader installation
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true

### Finishing up the installation
d-i finish-install/reboot_in_progress note

 preseed解释可见:https://help.ubuntu.com/12.04/installation-guide/example-preseed.txt

   修改profile

cobbler profile edit --name=ubuntu12.04-x86_64 \
--kickstart=/var/lib/cobbler/kickstarts/ubuntu12.04.preseed

   cobbler命令有很多参数可以使用:

cobbler <distro|profile|system|repo|image|mgmtclass|package|file> ... 
        [add|edit|copy|getks*|list|remove|rename|report] [options|--help]
cobbler <aclsetup|buildiso|import|list|replicate|report|reposync|sync|validateks|version> [options|--help]

   常用的有:distro类似于发行版,profile类似于该发行版的一些配置,system对安装的机器做具体配置,是根据mac地址生效的。 

   cobbler check  检查配置是否正确
   cobbler list  列出所有的cobbler元素
   cobbler distro/profile list  单独列出该信息
   cobbler sync  同步信息 在修改完cobbler配置后,都需要同步信息
   cobbler report  显示详细的元素信息

 C 设置本地源,在ubuntu12.04.preseed配置文件中有用

cd /var/www
ln -s /var/www/cobbler/ks_mirror/ubuntu12.04 ubuntu12.04

   D  修改pxelinux.cfg配置,因为使用dell的机器,如果启动时没有设置速率,在远程安装的时候,抓不到屏幕,对于410以上的机器速率是115200,2950之类是57600

    /var/lib/tftpboot/pxelinux.cfg/default,在append行末添加console=ttyS1,115200

DEFAULT menu
PROMPT 0
MENU TITLE Cobbler | http://fedorahosted.org/cobbler
TIMEOUT 200
TOTALTIMEOUT 6000
ONTIMEOUT local
LABEL local
    MENU LABEL (local)
    MENU DEFAULT
    LOCALBOOT -1
LABEL ubuntu12.04-x86_64
     kernel /images/ubuntu12.04-x86_64/linux
     MENU LABEL ubuntu12.04-x86_64
     append initrd=/images/ubuntu12.04-x86_64/initrd.gz  locale=  locale=en_US priority=critical text  auto url=http://10.1.6.234/cblr/svc/op/ks/profile/ubuntu12.04-x86_64 hostname=ubuntu12.04-x86-64 domain=local.lan suite=precise console=ttyS1,115200
     ipappend 2
MENU end

 E  在安装过程中会弹出类似的xxx/binary-amd64/Packages was corrupt,这是因为在相关目录下没有Packages这个文件,只要进入该目录创建Packages文件就可以

 F  开始安装远程客户机,在cobbler server的eth0上绑定IPMI的网段地址。

ifconfig eth0:1 172.16.6.252 netmask 255.255.255.0
####结果如下
eth0:1    Link encap:Ethernet  HWaddr 18:03:73:f0:a7:03  
          inet addr:172.16.6.252  Bcast:172.16.6.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:36 Memory:d6000000-d6012800 
#####ping到客户端ipmi地址,发现是通的
    然后开两个窗口分别执行如下IPMI命令

##1窗口,通过ipmi连接到客户机
ipmitool -I lanplus -H 172.16.6.200 -U root -P 123456  sol activate
##2窗口,设置需哦那个pxe引导
ipmitool -I lanplus -H 172.16.6.200 -U root -P 123456  chassis bootdev pxe
##2窗口,设置重启客户机
ipmitool -I lanplus -H 172.16.6.200 -U root -P 123456  chassis power reset
 G 享受过程吧...


  以下是我的配置文件设置的小问题,需要手动敲两下回车:

  这个我配置文件(preseed)设置的不配置网卡,不知道为什么出现这个,后面再研究一下配置文件


   这一步不需要设置,否则安装过程会比较慢...


  两个回车后,就可以坐等系统重启了...


 H Centos6.3安装

  步骤的设置和ubuntu12.04的安装过程一样,不过不需要修改distro/profile,直接import即可。

下面是centos6.3.ks的配置文件

#platform=x86, AMD64, or Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr --driveorder=sda
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disable
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Use network installation
#url --url=http://10.1.6.234/cblr/links/CentOS6.3-x86_64  
url --url=$tree
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
#repo --name=source-1 --baseurl=http://10.1.6.234/cobbler/ks_mirror/CentOS6.3
$yum_repo_stanza
# Network information
#network --bootproto=dhcp --device=em1 --onboot=on
$SNIPPET('network_config')
# Reboot after installation
reboot
#Root password
rootpw 123456
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx
# System timezone
timezone  Asia/Shanghai
# Install OS instead of upgrade
install
# Clear the Master Boot Record
zerombr
# make partion
partition / --fstype="ext4" --asprimary   --size=50000
part swap  --size=8192
%pre
$SNIPPET('log_ks_pre')
$SNIPPET('kickstart_start')
$SNIPPET('pre_install_network_config')
# Enable installation monitoring
$SNIPPET('pre_anamon')
%packages
$SNIPPET('func_install_if_enabled')
$SNIPPET('puppet_install_if_enabled')
%post
$SNIPPET('log_ks_post')
# Start yum configuration 
$yum_config_stanza
# End yum configuration
$SNIPPET('post_install_kernel_options')
$SNIPPET('post_install_network_config')
$SNIPPET('func_register_if_enabled')
$SNIPPET('puppet_register_if_enabled')
$SNIPPET('download_config_files')
$SNIPPET('koan_environment')
$SNIPPET('redhat_register')
$SNIPPET('cobbler_register')
# Enable post-install boot notification
$SNIPPET('post_anamon')
# Start final steps
$SNIPPET('kickstart_done')
# End final steps
       这次没有出现ubuntu12.04需要手动干预的情况,IPMI从PXE启动后,直接坐等客户机系统安装完成后重启...



相关设置preseed/kickstarts资料:

http://www.debian.org/releases/stable/example-preseed.txt
https://help.ubuntu.com/12.10/installation-guide/example-preseed.txt
https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-kickstart2-options.html


收集已经安装完成系统的preseed信息:

    获取你的Kickstarts配置文件,在Red Hat系列中system-config-kickstart可以帮助你生成一个kickstart文件,或者查看/root/anaconda-ks.cfg,关于debian系统则可以apt-get install debconf-utils然后debconf-get-selections --installer > preseed.cfg

© 著作权归作者所有

China_OS
粉丝 428
博文 463
码字总数 520158
作品 0
静安
技术主管
私信 提问
加载中

评论(8)

China_OS
China_OS 博主

引用来自“venux”的评论

请问出现那个网卡列表,解决了吗?

引用来自“China_OS”的评论

当时应该没解决

引用来自“venux”的评论

Ubuntu问题真多
还行吧 和老牌社区办比起来各有优劣
venux
venux

引用来自“venux”的评论

请问出现那个网卡列表,解决了吗?

引用来自“China_OS”的评论

当时应该没解决
Ubuntu问题真多
China_OS
China_OS 博主

引用来自“venux”的评论

请问出现那个网卡列表,解决了吗?
当时应该没解决
venux
venux
请问出现那个网卡列表,解决了吗?
r
roywang
对于补鞋匠来说,还是有点难度的
家乡的茶
家乡的茶
老了老了
China_OS
China_OS 博主

引用来自“nut”的评论

pxe菜单是在窗口2看到的吗?

窗口1看到的,窗口2是用来重启机器的
nut
nut
pxe菜单是在窗口2看到的吗?
自动化运维系列之Cobbler (资源)

下图为开源自动化运维体系链: 1、cobbler实现自动装机 2、saltstack实现工程自动化配置 3、kubernetes实现容器自动化编排 4、zabbix实现自动化监控 5、elastic实现应用日志自动化收集 6、j...

寰宇01
2018/08/06
137
0
Linux自动网络装机 —— Cobbler

前言: 最近整理一些以前的学习笔记。 过去都是存储在本地,此次传到网络留待备用。 --- Cobbler - 补鞋匠,快速建立linux网络装机环境,降低了linux装机的技术门槛 - 官网: http://cobbler...

迷失De挣扎
07/22
47
0
COBBLER无人值守安装

COBBLER无人值守安装 4个月前 (12-04) 本文转载 听风吟 自动化安装, 自动化运维 3评论 来源:本站原创 890℃ 字体:小中大 说在最前面的话 在看Cobbler之前请大家先看一下Kickstart无人值守安...

xiguatian
2016/04/24
0
0
Cobbler电源管理功能介绍

本文英文源网页为:https://fedorahosted.org/cobbler/wiki/PowerManagement#PowerManagement 电源管理: Cobbler允许你使用cobbler连接您的电源管理系统,当你想重新安装时它改变你的系统很...

码上中国博客
2016/03/01
163
0
使用Cobbler批量安装操作系统

个人博客地址:http://www.pojun.tech/ 欢迎访问 前言 在实际生产中,我们常常会遇到这样一种情况,就是我们需要同时安装几十甚至上百台服务器,如果我们使用U盘或者光盘的方式的话,或许老板...

Eumenides_s
2017/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
80
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部