Loading... <p> Cobbler 和 koan 的安装源:<br /> ubuntu(12.04)的源:<br /> 注: Ubuntu的可用源可从这里查询:http://wiki.ubuntu.org.cn/Template:12.04source</p> <p> cat /etc/apt/source.list<br /> deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse<br /> deb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse<br /> deb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse<br /> deb http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse<br /> deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse</p> <p> deb http://mirrors.sohu.com/ubuntu/ precise main restricted universe multiverse<br /> deb http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse<br /> deb http://mirrors.sohu.com/ubuntu/ precise-proposed main restricted universe multiverse<br /> deb http://mirrors.sohu.com/ubuntu/ precise-security main restricted universe multiverse<br /> deb http://mirrors.sohu.com/ubuntu/ precise-updates main restricted universe multiverse<br /> <br /> apt-get install koan <br /> <br /> RHEL(6.4)需要以下两个源:</p> <p> Centos源: http://mirror.centos.org/centos/6/os/x86_64/<br /> Epel源: http://download.fedoraproject.org/pub/epel/6/$basearch<br /> <br /> <br />下面主要以RHEL6.4上部署Cobbler为例:</p> <pre class="brush:bash;toolbar:false">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从网络启动,来重装系统.</pre> <p> 部署前:<br /> 1. cobbler check //让Cobbler自行判断,正常启动你还需要做哪些工作.<br /> 2. 根据提示修改:<br /> (1)修linux的Selinux为禁用。</p> <pre class="brush:bash;toolbar:false"> vim /etc/selinux/config 【SELINUX=disabled //修改后需reboot(重启)】</pre> <p> (2)修改tftp、rsync服务为启动</p> <pre class="brush:bash;toolbar:false"> vim /etc/xinet.d/tftp 和 /etc/xinet.d/rsync 【disable = no】 chkconfig xinetd on</pre> <p> (3)安装缺少的包</p> <pre class="brush:bash;toolbar:false"> yum install syslinux-nonlinux debmirror ---》对debian linux的镜像源的支持,若需要做本地apt源时,需要安装。 pykickstart</pre> <p> (4)修改cobbler的主配置文件<strong><span style="color:#ff0000">【注: cobbler的主配置文件修改后,必须重启才能生效.】</span></strong></p> <pre class="brush:bash;toolbar:false">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客户端从本地磁盘引导。 】</pre> <p> (5)复制PXE启动所需的引导文件</p> <pre class="brush:bash;toolbar:false"> 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.</pre> <p> 或直接执行:</p> <pre class="brush:bash;toolbar:false"> 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</pre> <p><span style="color:#00ff00"></span><br /> (6)修改Cobbler的默认两个的密码<br /> 1> 修改所安装系统的默认root密码:</p> <pre class="brush:bash;toolbar:false"> ROOTPWD=$(openssl -1 -salt `openssl rand -hex 4` 'Root_Password') vim /etc/cobbler/settings 【default_password_crypted: $ROOTPWD】</pre> <p> 2>修改Cobbler_Web登录的用户名和密码:</p> <pre class="brush:bash;toolbar:false"> vim /etc/cobbler/users.digest 【格式: 用户名:Cobbler:密码 //Cobbler的含义不明, 用户名和密码默认为cobbler,可修改. admin:Cobbler:密码部分必须用htdigest修改 】 修改admin的密码: htdigest /etc/cobbler/users.digest "Cobbler" admin</pre> <p> 注:<br /> 要登录Web管理.需要注意httpd服务必须启动.<br /> 且cobbler出现"error: [Errno 111] Connection refused",httpd没有启动的原因也比较大. </p> <p> Cobbler的http源: http://IP/cobbler <br /> 登录CobblerWeb界面: http:// IP /cobbler_web <br /> 另注:<br /> 默认 Cobbler的Web登录认证方式在modules.conf中定义为: authn_configfile, 即采用user.digest中定义的<br /> 用户名和密码来认证,即cobbler自身提供的认证方式. 若需修改为使用系统用户认证,即PAM方式。<br /> 则需修改:</p> <pre class="brush:bash;toolbar:false"> 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</pre> <p> (7)启动服务:</p> <pre class="brush:bash;toolbar:false"> /etc/init.d/xinetd restart /etc/init.d/httpd restart /etc/init.d/cobbler restart cobbler sync cobbler check</pre> <p> 注:<br /> 执行cobbler sync后,需要注意以下信息:<br /> ….. 省略<br /> rendering DHCP files<br /> rendering TFTPD files<br /> <span style="color:#ff0000">generating /etc/xinetd.d/tftp</span><br /> processing boot_files for distro: Redhat-6.4-x86_64<br /> cleaning link caches<br /> rendering Rsync files<br /> running post-sync triggers<br /> running python triggers from /var/lib/cobbler/triggers/sync/post/*<br /> running python trigger cobbler.modules.sync_post_restart_services<br /> <span style="color:#ff0000"> running: service dnsmasq restart</span><br /> received on stdout: <br /> <span style="color:#ff0000">Starting dnsmasq: [ OK ]</span> ——–》若使用的dhcpd,则这里将启动dhcpd.<br /> <br /> (8)导入Redhat ISO镜像: </p> <pre class="brush:bash;toolbar:false"> mount /dev/cdrom /mnt/cdrom cobbler import --name=RedHat-6.4-x86_64 --path=/mnt/cdrom</pre> <p> 查看导入结果:</p> <pre class="brush:bash;toolbar:false"> 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文件。</pre> <p> 注:手工导入ISO镜像的方法:<br /> 1. 先挂载光盘,如mount /dev/cdrom /mnt/cdrom<br /> 2. 挂载并同步</p> <pre class="brush:bash;toolbar:false"> cd /var/www/cobbler/ks_mirror mkdir Ubuntu12.04-x86_64 rsync -a /mnt/cdrom/* Ubuntu12.04-x86_64/</pre> <p> 3. 创建连接</p> <pre class="brush:bash;toolbar:false"> ln -s /var/www/cobbler/ks_mirror/Ubuntu12.04-x86_64 /var/www/cobbler/links/</pre> <p> 4. 将其添加到Cobbler中.</p> <pre class="brush:bash;toolbar:false"> 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</pre> <p> 5. 指定其使用的preseed自动应答文件:【注: Ubuntu也可使用RHEL类似的ks文件.】</p> <pre class="brush:bash;toolbar:false"> cobbler profile add --name=Ubuntu12.04-x86_64 --kickstart=/var/lib/cobbler/kickstarts/Ubuntu12.04-x86_64.seed //附件1有详情.</pre> <p> 6. 执行同步:</p> <pre class="brush:bash;toolbar:false"> cobbler sync cobbler check cobbler report</pre> <p> <br /> (9)非必须的配置<br /> 1. 给RHEL的ks文件中加入默认需要安装的RPM包列表<br /> 》先在/var/lib/cobbler/snippets目录中创建一个文件,名字任意.</p> <pre class="brush:bash;toolbar:false"> vim /var/lib/cobbler/snippets/package_select 【@组包名 单个RPM包名 】</pre> <p> 》修改 RHEL的ks文件:</p> <pre class="brush:bash;toolbar:false"> vim /var/lib/cobbler/kickstarts/Redhat6.4_x86_64.ks 【 %packages $SNIPPET('package_select') %end 】</pre> <p> 2. Server: 此配置是为专门定制一个服务器配置,给特定的服务器安装系统使用。<br /> 》先在Cobbler 服务端添加以下信息:</p> <pre class="brush:bash;toolbar:false"> 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</pre> <p> <br /> 》到需要安装OS的服务器上执行:<br /> 1. 保证安装了koan(kickstart-over-a-network) .<br /> RHEL: 需要Centos官方源 和 Epel源(前文中提到的两个)<br /> Ubuntu:可使用 163 和 sohu的源.<br /> 2. 执行以下命令进行服务器系统的重新安装:<br /> 》执行下面语句,将修改grub.conf从网络启动<br /> koan –server=Cobbler_SRV_IP –port=80 –replace-self –system=Test_Server1 <br /> <br /> 另注: 查看命令</p> <pre class="brush:bash;toolbar:false"> 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 //查看详细配置.</pre> <p></p> <p></p> <p></p> <p></p> <p>附件1:Ubuntu和Debian的Preseed自动应答文件示例:</p> <p> 【注:seed自动应答文件与ks文件类似,ubuntu支持ks也支持seed,用其一即可.】</p> <pre class="brush:bash;toolbar:false"># 语言设置 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</pre> <p> </p> <p>附件2: 部署遇到的错误.</p> <p>错误1: xmlrpclib.Fault: <Fault 1: "<class 'cobbler.cexceptions.CX'>:'login failed'"><br /> 尝试重启cobblerd</p> <p>错误2: error: [Errno 111] Connection refused<br /> 检查: cobblerd 是否启动了25151,netstat -tnlp |grep '25151'<br /> httpd 是否启动了<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> </p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信