Cobbler 和 koan 的安装源:
ubuntu(12.04)的源:
注: Ubuntu的可用源可从这里查询:http://wiki.ubuntu.org.cn/Template:12.04source
cat /etc/apt/source.list
deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ precise main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-proposed main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-security main restricted universe multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-updates main restricted universe multiverse
apt-get install koan
RHEL(6.4)需要以下两个源:
Centos源: http://mirror.centos.org/centos/6/os/x86_64/
Epel源: http://download.fedoraproject.org/pub/epel/6/$basearch
下面主要以RHEL6.4上部署Cobbler为例:
rpm -ivh ftp://ftp.muug.mb.ca/mirror/fedora/epel/6/x86_64/Django14-1.4.21-1.el6.noarch.rpm //cobbler-web需要Django支持. yum install cobbler cobbler-web tftp-server dhcp xinetd rsync httpd yum install koan //此在需要借助Cobbler自动重装系统的Client上安装.可通过它来修改Client 的grub.conf,从而让Client从网络启动,来重装系统.
部署前:
1. cobbler check //让Cobbler自行判断,正常启动你还需要做哪些工作.
2. 根据提示修改:
(1)修linux的Selinux为禁用。
vim /etc/selinux/config 【SELINUX=disabled //修改后需reboot(重启)】
(2)修改tftp、rsync服务为启动
vim /etc/xinet.d/tftp 和 /etc/xinet.d/rsync 【disable = no】 chkconfig xinetd on
(3)安装缺少的包
yum install syslinux-nonlinux debmirror ---》对debian linux的镜像源的支持,若需要做本地apt源时,需要安装。 pykickstart
(4)修改cobbler的主配置文件【注: cobbler的主配置文件修改后,必须重启才能生效.】
cp -a /etc/cobbler/settings{,.bak} vim /etc/cobbler/settings 【 allow_dynamic_settings: 1 //开启不重启cobbler,也可动态载入修改的主配置信息. 注: 此项,仅在使用cobbler setting edit --name=配置项名 --value=值时才有效, 但此命令会清除配置文件中所有注释内容. manage_dhcp: 1 //若需要cobbler管理DHCP,则需要将其设置为1 注: 若要使用dhcpd 来提供DHCP服务,则修改dhcp.template 若要使用dnsmasq来提供DHCP服务,则修改 dnsmasq.template但无论使用谁,都需要将其设置为1.。 另注:modules.conf中默认设置Cobbler使用 dhcpd来提供DHCP服务. server: 192.168.137.203 //指定cobbler监听的地址 next_server: 192.168.137.203 //指定tftp server的地址 pxe_just_once: 1 //避免循环从网络启动;当PXE客户端安装完成后,会通知cobbler, cobbler将设置netboot标志为false,强制PXE客户端从本地磁盘引导。 】
(5)复制PXE启动所需的引导文件
cd /usr/share/syslinux //此为syslinux-nonlinux的安装文件存储位置。 cp pxelinux.0 menu.c32 vesamenu.c32 memdisk /var/lib/cobbler/loaders/ 注: menu.c32 :此为文本模式背景 vesamenu.c32 : 此为图形模式背景 memdisk :引导IMG、IMA、ISO映像,所必须加载的文件,它也可用来加载WinPE.ISO来提供网络PE.
或直接执行:
cobbler get-loaders //若联网则直接执行它即可,自动下载 [root@cobbler etc]# ls /var/lib/cobbler/loaders/ COPYING.elilo COPYING.yaboot grub-x86_64.efi memdisk pxelinux.0 vesamenu.c32 COPYING.syslinux elilo-ia64.efi grub-x86.efi menu.c32 README yaboot
(6)修改Cobbler的默认两个的密码
1> 修改所安装系统的默认root密码:
ROOTPWD=$(openssl -1 -salt `openssl rand -hex 4` 'Root_Password') vim /etc/cobbler/settings 【default_password_crypted: $ROOTPWD】
2>修改Cobbler_Web登录的用户名和密码:
vim /etc/cobbler/users.digest 【格式: 用户名:Cobbler:密码 //Cobbler的含义不明, 用户名和密码默认为cobbler,可修改. admin:Cobbler:密码部分必须用htdigest修改 】 修改admin的密码: htdigest /etc/cobbler/users.digest "Cobbler" admin
注:
要登录Web管理.需要注意httpd服务必须启动.
且cobbler出现"error: [Errno 111] Connection refused",httpd没有启动的原因也比较大.
Cobbler的http源: http://IP/cobbler
登录CobblerWeb界面: http:// IP /cobbler_web
另注:
默认 Cobbler的Web登录认证方式在modules.conf中定义为: authn_configfile, 即采用user.digest中定义的
用户名和密码来认证,即cobbler自身提供的认证方式. 若需修改为使用系统用户认证,即PAM方式。
则需修改:
1. sed -i '/\[authentication\]/{N;s,\(module\).*,\1=authn_pam,}' /etc/cobbler/modules.conf 2. echo 'Test_User_PWD' | passwd --stdin user1 3. sed -i '/^\(admin\).*/s,,\1="user1",' /etc/cobbler/users.conf //注意:PAM使用的用户配置文件为:users.conf
(7)启动服务:
/etc/init.d/xinetd restart /etc/init.d/httpd restart /etc/init.d/cobbler restart cobbler sync cobbler check
注:
执行cobbler sync后,需要注意以下信息:
….. 省略
rendering DHCP files
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: Redhat-6.4-x86_64
cleaning link caches
rendering Rsync files
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: service dnsmasq restart
received on stdout:
Starting dnsmasq: [ OK ] ——–》若使用的dhcpd,则这里将启动dhcpd.
(8)导入Redhat ISO镜像:
mount /dev/cdrom /mnt/cdrom cobbler import --name=RedHat-6.4-x86_64 --path=/mnt/cdrom
查看导入结果:
cobbler report <==> cobbler distro report && cobbler profile report cobbler profile edit --name=Redhat-6.4-x86_64 \ --distro=Redhat-6.4-x86_64 \ --kickstart=/var/lib/cobbler/kickstarts/RedHat-6.4-x86_64.ks //修改使用指定的ks文件。
注:手工导入ISO镜像的方法:
1. 先挂载光盘,如mount /dev/cdrom /mnt/cdrom
2. 挂载并同步
cd /var/www/cobbler/ks_mirror mkdir Ubuntu12.04-x86_64 rsync -a /mnt/cdrom/* Ubuntu12.04-x86_64/
3. 创建连接
ln -s /var/www/cobbler/ks_mirror/Ubuntu12.04-x86_64 /var/www/cobbler/links/
4. 将其添加到Cobbler中.
cobbler distro add \ --name=Ubuntu12.04-x86_64 \ --kernel=/var/www/cobbler/ks_mirror/Ubuntu12.04-x86_64/install/netboot/ubuntu-installer/amd64/linux \ --initrd=/var/www/cobbler/ks_mirror/Ubuntu12.04-x86_64/install/netboot/ubuntu-installer/amd64/initrd.gz
5. 指定其使用的preseed自动应答文件:【注: Ubuntu也可使用RHEL类似的ks文件.】
cobbler profile add --name=Ubuntu12.04-x86_64 --kickstart=/var/lib/cobbler/kickstarts/Ubuntu12.04-x86_64.seed //附件1有详情.
6. 执行同步:
cobbler sync cobbler check cobbler report
(9)非必须的配置
1. 给RHEL的ks文件中加入默认需要安装的RPM包列表
》先在/var/lib/cobbler/snippets目录中创建一个文件,名字任意.
vim /var/lib/cobbler/snippets/package_select 【@组包名 单个RPM包名 】
》修改 RHEL的ks文件:
vim /var/lib/cobbler/kickstarts/Redhat6.4_x86_64.ks 【 %packages $SNIPPET('package_select') %end 】
2. Server: 此配置是为专门定制一个服务器配置,给特定的服务器安装系统使用。
》先在Cobbler 服务端添加以下信息:
cobbler system add --name=Test_Server1 --profile=Redhat6.4_x86_64 \ --hostname=tsrv1.test.com \ --interface=eth0 \ --static=1 \ --netboot-enabled=true \ --ip-address=1.1.1.1 \ --subnet=255.255.255.0 \ --gateway=1.1.1.2 \ --name-server='8.8.8.8' cobbler sync
》到需要安装OS的服务器上执行:
1. 保证安装了koan(kickstart-over-a-network) .
RHEL: 需要Centos官方源 和 Epel源(前文中提到的两个)
Ubuntu:可使用 163 和 sohu的源.
2. 执行以下命令进行服务器系统的重新安装:
》执行下面语句,将修改grub.conf从网络启动
koan –server=Cobbler_SRV_IP –port=80 –replace-self –system=Test_Server1
另注: 查看命令
koan --server=Cobbler_SRV_IP --port=80 --list=profile //查看有哪些配置可用. koan --server=Cobbler_SRV_IP --port=80 --list=server //查看有哪些server配置可用. koan --server=Cobbler_SRV_IP --port=80 --dispaly --profile=Redhat6.4_x86_64 //查看详细配置.
附件1:Ubuntu和Debian的Preseed自动应答文件示例:
【注:seed自动应答文件与ks文件类似,ubuntu支持ks也支持seed,用其一即可.】
# 语言设置 d-i debconf/language string en d-i debian-installer/locale string en_US.UTF-8 d-i debian-installer/language string en d-i debian-installer/country string US d-i localechooser/supported-locales en_US.UTF-8, zh_CN.UTF-8 # 键盘设置 d-i console-setup/ask_detect boolean false d-i keyboard-configuration/modelcode string pc105 d-i keyboard-configuration/layoutcode string us d-i keyboard-configuration/variantcode string d-i console-keymaps-at/keymaps select us # 网络设置 d-i netcfg/enable boolean true d-i netcfg/choose_interface select auto d-i netcfg/disable_dhcp boolean false d-i netcfg/dhcp_timeout string 5 d-i netcfg/disable_autoconfig boolean false d-i netcfg/dhcp_failed note # d-i netcfg/dhcp_options select Configure network manually # d-i netcfg/dhcp_hostname string none # d-i netcfg/get_nameservers string 8.8.8.8 # d-i netcfg/get_ipaddress string 192.168.1.10 # d-i netcfg/get_netmask string 255.255.255.0 # d-i netcfg/get_gateway string 192.168.1.1 # d-i netcfg/confirm_static boolean true d-i netcfg/get_hostname string $myhostname//设置主机名 d-i netcfg/get_domain string none//设置域名 # 安装源设置 d-i mirror/country string manual d-i mirror/ http/hostname string $ http_server d-i mirror/ http/directory string $install_source_directory d-i mirror/ http/proxy string # 在Ubuntu12.10以上版本自动安装时,若ISO中提供的是squashfs文件系统格式,会采用此方式安装。 d-i live-installer/net-image string http://$http_server/cobbler/links/$distro_name/install/filesystem.squashfs d-i hw-detect/load_firmware boolean true//发现新硬件时,不提示自动载入. # NTP/Time Setup d-i time/zone string Asia/Shanghai d-i clock-setup/utc boolean true #d-i clock-setup/ntp boolean true #d-i clock-setup/ntp-server string ntp.ubuntu.com # 分区设置 d-i partman-auto/disk string /dev/sda//无论系统中有几块盘,仅使用/dev/sda。 d-i partman-auto/method string regular//采用普通方式分区,即不使用LVM、软RAID d-i partman-lvm/device_remove_lvm boolean true//清除磁盘中找到的LVM分区 d-i partman-md/device_remove_md boolean true//清除磁盘中找到的RAID分区 #这是可选的预定义分区方式: 【注:下面这些我没测试】 # - atomic: all files in one partition # - home: separate /home partition # - multi: separate /home, /usr, /var, and /tmp partitions d-i partman-auto/expert_recipe string \//使用专家模式分区 boot-root :: \//这是专家模式采用的预定义分区方式; 此分区方式也可分多个分区. 100 50 100 ext3 \//下面每个分区配置都是在一行的,它们以"."做为分隔。 $primary{ } $bootable{ } \ method{ format } format{ } \ use_filesystem{ } filesystem{ ext3 } \ mountpoint{ /boot } \ . \ 2048 512 2048 linux-swap \//每组分区中三个数字的含义为:分区最小多少MB, 优先级(越小越优先), 分区最大多少MB method{ swap } format{ } \ . \ 10240 1000 10240 ext3 \ method{ format } format{ } \ use_filesystem{ } filesystem{ ext3 } \ mountpoint{ / } \ . d-i partman/confirm_write_new_label boolean true//不提示写入分区信息到磁盘. d-i partman-partitioning/confirm_write_new_label boolean true//再次确认将分区信息写入磁盘 d-i partman/confirm_nooverwrite boolean true//不提示覆盖磁盘中已有数据 d-i partman/confirm boolean true//确认 d-i partman/choose_partition select Finish partitioning and write changes to disk//完成确认 # 用户账号 d-i passwd/root-login boolean true d-i passwd/root-password-crypted password $default_password_crypted # 跳过创建普通用户 d-i passwd/make-user boolean false # APT配置 # You can choose to install restricted and universe software, or to install # software from the backports repository. # d-i apt-setup/restricted boolean true # d-i apt-setup/universe boolean true # d-i apt-setup/backports boolean true # # Uncomment this if you don't want to use a network mirror. # d-i apt-setup/use_mirror boolean false # # Select which update services to use; define the mirrors to be used. # Values shown below are the normal defaults. # d-i apt-setup/services-select multiselect security # d-i apt-setup/security_host string security.ubuntu.com # d-i apt-setup/security_path string /ubuntu # $SNIPPET('preseed_apt_repo_config') # # Enable deb-src lines # d-i apt-setup/local0/source boolean true # # URL to the public key of the local repository; you must provide a key or # apt will complain about the unauthenticated repository and so the # sources.list line will be left commented out # d-i apt-setup/local0/key string http://local.server/key # 定制安装包 tasksel tasksel/first multiselect none//安装指定的软件集 d-i pkgsel/include string vim ntp ssh wget openssh-server build-essential//安装指定的软件包,build-essential:此为编译工具包(包含C++等编译器) d-i pkgsel/upgrade select full-upgrade d-i pkgsel/install-language-support boolean true d-i pkgsel/language-packs multiselect en, zh d-i pkgsel/update-policy select none # popularity-contest popularity-contest/participate boolean false d-i pkgsel/updatedb boolean true # 安装Grub d-i grub-installer/skip boolean false d-i lilo-installer/skip boolean false d-i grub-installer/only_debian boolean true d-i grub-installer/with_other_os boolean true d-i debian-installer/add-kernel-opts string $kernel_options_post//给Kernal添加启动参数 # 完成设置 d-i finish-install/reboot_in_progress note//安装完成后,提示重启 d-i finish-install/keep-consoles boolean true # This first command is run as early as possible, just after preseeding is read. # d-i preseed/early_command string [command] d-i preseed/early_command string wget -O- \ http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_early_default | \ /bin/sh -s # This command is run immediately before the partitioner starts. It may be # useful to apply dynamic partitioner preseeding that depends on the state # of the disks (which may not be visible when preseed/early_command runs). # d-i partman/early_command \ # string debconf-set partman-auto/disk "\$(list-devices disk | head -n1)" # This command is run just before the install finishes, but when there is # still a usable /target directory. You can chroot to /target and use it # directly, or use the apt-install and in-target commands to easily install # packages and run commands in the target system. # d-i preseed/late_command string [command] d-i preseed/late_command string wget -O- \ http://$http_server/cblr/svc/op/script/$what/$name/?script=preseed_late_default | \ chroot /target /bin/sh -s
附件2: 部署遇到的错误.
错误1: xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'">
尝试重启cobblerd
错误2: error: [Errno 111] Connection refused
检查: cobblerd 是否启动了25151,netstat -tnlp |grep '25151'
httpd 是否启动了
原创文章,作者:Wn1m,如若转载,请注明出处:http://www.178linux.com/12822
评论列表(1条)
看出来的认真,但文章少了层次感,