-
mount -o loop /home/cailu/CentOS-6.4-x86_64-bin-DVD1.iso /CentOS_6.4 // 挂载镜像
-
cobbler import --path=/CentOS6.4 --name=CentOS6.4 --arch=x86_64 // 导入distro
-
-
使用 cobbler distro report 来查看刚才导入 distro
-
[root@localhost ~]# cobbler distro report --name=CentOS6.4-x86_64
Name : CentOS6.4-x86_64
Architecture : x86_64
TFTP Boot Files : {}
Breed : redhat
Comment :
Fetchable Files : {}
Initrd : /var/www/cobbler/ks_mirror/CentOS6.4-x86_64/images/pxeboot/initrd.img
Kernel : /var/www/cobbler/ks_mirror/CentOS6.4-x86_64/images/pxeboot/vmlinuz
Kernel Options : {}
Kernel Options (Post Install) : {}
Kickstart Metadata : {'tree': ''}
Management Classes : []
OS Version : rhel6
Owners : ['admin']
Red Hat Management Key : <>
Red Hat Management Server : <>
Template Files : {}
cobbler profile add --name=centos6.4 --distro=CentOS6.4-x86_64 \
-
--kickstart=/var/lib/cobbler/kickstarts/CentOS_6.4.ks
-
添加一个profile文件,并使用CentOS6.4-x86_64这个distro,并指定相应的ks文件,ks文件是事先准备好的.
vim /etc/cobbler/pxe/pxedefault.template // 编辑pxe模板
ONTIMEOUT centos6.4 // 修改默认安装的profile为centos6.4,也就是说当你没有选择,超时操作后自动安装此profile
-
-
[root@localhost ~]# cobbler profile report --name=centos6.4
Name : centos6.4
TFTP Boot Files : {}
Comment :
DHCP Tag : default
Distribution : CentOS6.4-x86_64
Enable gPXE? : 0
Enable PXE Menu? : 1
Fetchable Files : {}
Kernel Options : {'biosdevname': '0'}
Kernel Options (Post Install) : {}
Kickstart : /var/lib/cobbler/kickstarts/CentOS_6.4.ks
Kickstart Metadata : {}
Management Classes : []
Management Parameters : <>
Name Servers : []
Name Servers Search Path : []
Owners : ['admin']
Parent Profile :
Proxy :
Red Hat Management Key : <>
Red Hat Management Server : <>
Repos : []
Server Override : <>
Template Files : {}
Virt Auto Boot : 1
Virt Bridge : xenbr0
Virt CPUs : 1
Virt Disk Driver Type : raw
Virt File Size(GB) : 5
Virt Path :
Virt RAM (MB) : 512
Virt Type : xenpv
-
[root@localhost ~]# cat /var/lib/cobbler/kickstarts/CentOS_6.4.ks
install
auth --useshadow --enablemd5
key --skip
bootloader --location=mbr
text
firewall --disabled
keyboard us
lang en_US
url --url=$tree
reboot
rootpw --iscrypted $1$XPr0sv0o$1.XsUW0h36ZdWetQOefR21
selinux --disabled
timezone --isUtc Asia/Shanghai
$SNIPPET('disk-setup') // 磁盘分区格式
%packages
$SNIPPET('package') // 安装软件包或软件包组的名称
%post
$SNIPPET('log_ks_post') // 记录安装过程中的日志输出
$SNIPPET('post_install_network_config') // 配置网络参数
$SNIPPET('post_command') // 安装一些我们经常使用的基础工具和salt-minion,epelrepo,以及防火墙,文件描述符,sshd等服务器的一些基本设置
$SNIPPET('post_adduser') // 添加用户公钥
$SNIPPET('post_zabbix_install') // 安装zabbix-agent客户端
-
-
SNIPPET 我理解是一种 kickstart template 的编写的一种模板语言, 用于编写 kickstart template ,cobbler 本身就附带很多SNIPPET
-
SNIPPET 的路径在 /var/lib/cobbler/snippets , ks 文件中提到的SNIPPET 都会去这个路径下寻找.
-
-
[root@localhost snippets]# pwd
/var/lib/cobbler/snippets
[root@localhost snippets]# cat disk-setup
zerombr
clearpart --all --initlabel
part /boot --fstype ext4 --size=100
part pv.01 --size=1 --grow
volgroup VolGroup00 pv.01
logvol / --fstype ext4 --name=LogVol00 --vgname=VolGroup00 --size=10240
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=2048
-
[root@localhost snippets]# cat package
@Base
@Core
@development
@emacs
@network-tools
@system-admin-tools
@system-management
gettext-devel
net-snmp
openssl-devel
python-devel
setuptool
sysstat
tcl
tcl-devel
tk
tk-devel
zlib-devel
-
-
[root@localhost snippets]# cat post_command
-
echo "*/5 * * * * /usr/sbin/ntpdate cn.pool.ntp.org" >> /var/spool/cron/root // 添加时钟同步的计划任务
-
echo "/usr/sbin/ntpdate cn.pool.ntp.org" >> /etc/rc.local // 开机启动后就进行时钟同步,避免由于时间不同步导致的各种安全隐患
-
echo "*filter" >> /etc/sysconfig/iptables
-
echo "xxxx----xxx" >> /etc/sysconfig/iptables // 设置你定义的防火墙规则
-
echo "COMMIT" >> /etc/sysconfig/iptables
-
cat >> /etc/sysctl.conf < // 更改一些常规的内核参数
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
fs.file-max=655360
END
-
cat >>/etc/security/limits.conf < // 加大用户使用fd数量
* soft nofile 655350
* hard nofile 655350
EOF
rpm -Uvh // 安装epelrepo
yum install iotop iftop sysstat salt-minion -y // 安装一些我们日常使用的常规工具
chkconfig --level 345 salt-minion on // 设置服务开机启动
-
chkconfig --level 345 zabbix_agentd on // ditto
然后我们如何设置才能让服务器在dhcp分配的IP的能使用网络呢,通过网络才可以从epelrepo中安装我们需要的软件
之前我们在配置dhcp信息的时候,已经把192.168.137.123设置为dhcp服务器的网关,我们只需要在 iptables 做相应的设置就好
iptables -t nat -A POSTROUTING -s 192.168.137.0/24 -j MASQUERADE // 添加SNAT设置
iptables -A INPUT -p tcp --dport 443 -j ACCEPT // 开放cobbler所使用的端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 25151 -j ACCEPT
iptables -A INPUT -p udp --dport 69 -j ACCEPT
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 // 开启包转发功能
[root@localhost pxe]# cobbler check
The following are potential configuration items that you may want to fix:
1 : since iptables may be running, ensure 69, 80/443, and 25151 are unblocked
Restart cobblerd and then run 'cobbler sync' to apply changes. // 出现这个结果是正常的,我们已经在防火墙打开所需端口
[root@localhost pxe]# cobbler sync // 查看一下是否有报错,有"*** TASK COMPLETE ***"即可
定制一个system,收集mac地址
cobbler system add --name=cobbler-one --mac=00:50:56:2E:B7:27 --ip-address=114.111.164.182 --subnet=255.255.255.0 --gateway=114.111.164.181 \
--interface=eth0 --static=1 --profile=centos6.4 --hostname=cobbler-test --netboot-enabled=true --name-servers="202.106.0.20"
cobbler system edit --name=cobbler-one --mac=00:50:56:30:7C:78 --ip-address=172.16.23.100 --subnet=255.255.255.0 --interface=eth1 --static=1
cobbler sync //刷新配置
--name : system 实例的名称
--mac : 与实例对应的mac地址
--ip-address : 实例所使用的网络接口的ip地址
--subnet : 对应的网络掩码
--gateway : 网关地址
--interface : 网络接口的名称
--static=1 : 使用静态ip也就是我们之前设置ip地址
--hostname : 定义主机名
--name-servers : 定义dns
--netboot-enabled=true : cobbler 可以设置成一个新服务器的安装过后,第二次PXE启动的时候 能自动选择跳过(避免重复安装) \
但如果需要强制安装 ,就需要用到这个参数:--netboot-enabled=true
开启服务器,自动会进入安装界面,然后自动安装我们预先设置的操作系统以及相关设置
经过5分钟后,服务器安装完毕我们来检查一下是否是我们预想配置的主机信息
[root@cobbler-test ~]# ifconfig | grep -oP '(?<=inet addr:)(\d+.){3}.\d+' // 可以看出ip地址配置正确,主机名配置正确
114.111.164.182
172.16.23.100
[root@cobbler-test ~]# rpm -qa | grep -E '(iotop|iftop|salt-minion)' // 相应的rpm软件安装完毕
salt-minion-0.17.5-1.el6.noarch
iftop-1.0-0.7.pre4.el6.x86_64
iotop-0.3.2-7.el6.noarch
[root@cobbler-test ~]# ll /usr/local/zabbix/sbin/zabbix_agentd // zabbix-agentd 服务编译安装完毕,已开启服务,并自动注册到zabbix-server
-rwxr-xr-x. 1 zabbix zabbix 743600 Feb 18 02:27 /usr/local/zabbix/sbin/zabbix_agentd // 关于如何自动注册zabbix-server,请参考我的 zabbix Auto registration文章
[root@cobbler-test ~]# ll /etc/init.d/zabbix_agentd
-rwxr-xr-x. 1 root root 2177 Feb 18 02:27 /etc/init.d/zabbix_agentd
[root@cobbler-test ~]# ping // 网络连通性正常,说明我们的网络配置也 OK
PING (61.135.169.105) 56(84) bytes of data.
64 bytes from 61.135.169.105: icmp_seq=1 ttl=57 time=5.86 ms
64 bytes from 61.135.169.105: icmp_seq=2 ttl=57 time=7.95 ms
64 bytes from 61.135.169.105: icmp_seq=3 ttl=57 time=77.6 ms
好,到此为止,我们使用cobbler的目的就达到了
1 . 定制化安装系统,配置系统初期基本信息 [ok]
2. 在dhcp环境下,自动安装我们经常使用的一些基本软件和小工具 [ok]
3. 服务器第一次启动后,自动注册 zabbix-server,添加基础模板并开启监控 [ok]
通过对软件的学习与使用,让我们的运维工作,更模块化,流程化,更清晰,透明
emar_Cail
参考资料 :
-