环境准备
##系统信息 [[email protected] ~]# uname -r 3.10.0-862.el7.x86_64 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) ##网卡信息 [[email protected] ~]# ip add show eth0|awk ‘NR==3{print $2}‘ 10.0.0.99/24 [[email protected] ~]# ip add show eth1|awk ‘NR==3{print $2}‘ 172.16.1.99/24 [[email protected] ~]# ping baidu.com PING baidu.com (220.181.57.216) 56(84) bytes of data. 64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=1 ttl=128 time=27.3 ms ##SELinux状态 [[email protected] ~]# getenforce Disabled ##Firewall 状态 [[email protected] ~]# systemctl is-active firewalld.service unknown [[email protected] ~]# systemctl is-enabled firewalld.service disabled
##配置repo源,我这里用的阿里源,配置方法
[[email protected] yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[[email protected] yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
安装相关组件
[[email protected] ~]# yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd python-django [[email protected] ~]# rpm -qa cobbler cobbler-web dhcp tftp-server pykickstart httpd python-django pykickstart-1.99.66.19-2.el7.noarch cobbler-web-2.8.4-4.el7.noarch dhcp-4.2.5-68.el7.centos.1.x86_64 cobbler-2.8.4-4.el7.x86_64 tftp-server-5.2-22.el7.x86_64 httpd-2.4.6-88.el7.centos.x86_64
配置cobbler
cobbler的配置很简单,主要体现在有配置指导,启动cobbler和httpd后,执行cobbler check并根据提示操作即可,具体过程描述如下:
启动cobbler和httpd
[[email protected] ~]# systemctl start cobblerd.service [[email protected] ~]# systemctl start httpd [[email protected] ~]# netstat -lntup|grep httpd tcp6 0 0 :::80 :::* LISTEN 2753/httpd tcp6 0 0 :::443 :::* LISTEN 2753/httpd
执行cobbler check
[[email protected] ~]# cobbler check The following are potential configuration items that you may want to fix: 1 : The ‘server‘ field in /etc/cobbler/settings must be set to something other than localhost,or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it. 2 : For PXE to be functional,the ‘next_server‘ field in /etc/cobbler/settings must be set to something other than 127.0.0.1,and should match the IP of the boot server on the PXE network. 3 : change ‘disable‘ to ‘no‘ in /etc/xinetd.d/tftp 4 : Some network boot-loaders are missing from /var/lib/cobbler/loaders,you may run ‘cobbler get-loaders‘ to download them,or,if you only want to handle x86/x86_64 netbooting,you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory,should you want to support all architectures,should include pxelinux.0,menu.c32,elilo.efi,and yaboot. The ‘cobbler get-loaders‘ command is the easiest way to resolve these requirements. 5 : enable and start rsyncd.service with systemctl 6 : debmirror package is not installed,it will be required to manage debian deployments and repositories 7 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to ‘cobbler‘ and should be changed,try: "openssl passwd -1 -salt ‘random-phrase-here‘ ‘your-password-here‘" to generate new one 8 : fencing tools were not found,and are required to use the (optional) power management features. install cman or fence-agents to use them Restart cobblerd and then run ‘cobbler sync‘ to apply changes.
根据check结果进行配置
##1:把/etc/cobbler/settings 中server的值修改为cobbler服务器的地址,我这里使用内网网卡地址:172.16.1.99 ##2:把/etc/cobbler/settings 中next_server的值修改为cobbler服务器的ip,设置这个参数是因为,在cobbler装机的过程中,我们使用cobbler自动管理dhcp,这里的值就是dhcp服务所在服务器的ip,我这里是172.16.1.99 ###7:设置新装系统的密码,其中第一个参数是干扰码,可以随意填写,第二个参数是我们的密码,我用的是1234556,没错,就是两个5,这是个性!!! ###此外:在这个文件里还有两个参数的值需要修改:manager_dhcp设为1,打开cobbler对dhcp的管理权限;pxe_just_once设为1,避免重复安装
[[email protected] ~]# openssl passwd -1 -salt ‘timmygo‘ ‘1234556‘
$1$timmygo$xKIwswOD6mut6ylvwsoWN/
[[email protected] ~]# egrep "^server|^next|^manage_dhcp|^pxe_just|^default_pass" /etc/cobbler/settings
default_password_crypted: "$1$timmygo$xKIwswOD6mut6ylvwsoWN/"
manage_dhcp: 1 next_server: 172.16.1.99 pxe_just_once: 1 server: 172.16.1.99 #3、配置tftp,把文件/etc/xinetd.d/tftp中disable的值设置为no [[email protected] ~]# grep "disable" /etc/xinetd.d/tftp disable = no #4、执行提示的命令,从官网下载一些文件 [[email protected] ~]# cobbler get-loaders #5、开启rsync服务,并设置为开机自启动 [[email protected] ~]# systemctl enable rsyncd [[email protected] ~]# systemctl start rsyncd.service #6、与Debian系统相关,不用管 #8、fence工具相关,这里是虚拟机,不用管
配置dhcp
需要注意的是,我们要配置的是cobbler中的dhcp配置模板:/etc/cobbler/dhcp.template ,而不是系统中dhcp的配置文件。
因为我们使用cobbler管理dhcp,一旦执行cobbler sync同步操作,cobbler就会用自己的模板覆盖系统中的dhcp配置文件。
修改后的部分如下:
subnet 172.16.1.0 netmask 255.255.255.0 { #option routers 192.168.1.5; #option domain-name-servers 192.168.1.1; option subnet-mask 255.255.255.0; range dynamic-bootp 172.16.1.100 172.16.1.200; default-lease-time 21600; max-lease-time 43200; next-server $next_server;
重启cobbler,并执行同步命令
[[email protected] ~]# systemctl restart cobblerd.service ##再次执行check,如果只剩下面这两条,之前的配置就妥了 [[email protected] ~]# cobbler check The following are potential configuration items that you may want to fix: 1 : debmirror package is not installed,it will be required to manage debian deployments and repositories 2 : fencing tools were not found,and are required to use the (optional) power management features. install cman or fence-agents to use them Restart cobblerd and then run ‘cobbler sync‘ to apply changes. ##然后执行同步命令,提示“*** TASK COMPLETE ***”就说明同步成功了 [[email protected] ~]# cobbler sync
查看各服务状态
##之前没有启动tftp,这里需要启动一下,总之保证各种服务能正常运行就行
[[email protected] ~]# systemctl is-enabled tftp.socket rsyncd.service httpd.service enabled enabled enabled [[email protected] ~]# systemctl is-active tftp.socket rsyncd.service dhcpd.service httpd.service active active active active
挂载光盘,我用的是/mnt
[[email protected] ~]# mount /dev/cdrom /mnt [[email protected] ~]# df -h|grep mnt /dev/sr0 4.2G 4.2G 0 100% /mnt
web端操作
这是就可以使用https://${ip}/cobbler_web登录,然后在web端完成剩余的操作,但是要注意,pc端的360、卡巴啦什么的,最好都关掉。
另外,我遇到一个问题,不知是不是个例,记录一下,以备翻查。
web端登录遇到的bug
然后查看httpd的log日志,如下:
[[email protected] ~]# less /var/log/httpd/ssl_error_log [Fri Feb 01 10:14:10.974188 2019] [:error] [pid 2754] [remote 10.0.0.1:0] Traceback (most recent call last): [Fri Feb 01 10:14:10.974210 2019] [:error] [pid 2754] [remote 10.0.0.1:0] File "/usr/share/cobbler/web/cobbler.wsgi",line 26,in application [Fri Feb 01 10:14:10.974274 2019] [:error] [pid 2754] [remote 10.0.0.1:0] _application = get_wsgi_application() [Fri Feb 01 10:14:10.974286 2019] [:error] [pid 2754] [remote 10.0.0.1:0] File "/usr/lib/python2.7/site-packages/django/core/wsgi.py",line 13,in get_wsgi_application [Fri Feb 01 10:14:10.974326 2019] [:error] [pid 2754] [remote 10.0.0.1:0] django.setup(set_prefix=False) [Fri Feb 01 10:14:10.974337 2019] [:error] [pid 2754] [remote 10.0.0.1:0] File "/usr/lib/python2.7/site-packages/django/__init__.py",line 22,in setup [Fri Feb 01 10:14:10.974376 2019] [:error] [pid 2754] [remote 10.0.0.1:0] configure_logging(settings.LOGGING_CONFIG,settings.LOGGING) [Fri Feb 01 10:14:10.974386 2019] [:error] [pid 2754] [remote 10.0.0.1:0] File "/usr/lib/python2.7/site-packages/django/conf/__init__.py",line 56,in __getattr__ [Fri Feb 01 10:14:10.974456 2019] [:error] [pid 2754] [remote 10.0.0.1:0] self._setup(name) [Fri Feb 01 10:14:10.974465 2019] [:error] [pid 2754] [remote 10.0.0.1:0] File "/usr/lib/python2.7/site-packages/django/conf/__init__.py",line 41,in _setup [Fri Feb 01 10:14:10.974478 2019] [:error] [pid 2754] [remote 10.0.0.1:0] self._wrapped = Settings(settings_module) [Fri Feb 01 10:14:10.974485 2019] [:error] [pid 2754] [remote 10.0.0.1:0] File "/usr/lib/python2.7/site-packages/django/conf/__init__.py",line 110,in __init__ [Fri Feb 01 10:14:10.974495 2019] [:error] [pid 2754] [remote 10.0.0.1:0] mod = importlib.import_module(self.SETTINGS_MODULE) [Fri Feb 01 10:14:10.974501 2019] [:error] [pid 2754] [remote 10.0.0.1:0] File "/usr/lib64/python2.7/importlib/__init__.py",line 37,in import_module [Fri Feb 01 10:14:10.974896 2019] [:error] [pid 2754] [remote 10.0.0.1:0] __import__(name) [Fri Feb 01 10:14:10.974912 2019] [:error] [pid 2754] [remote 10.0.0.1:0] File "/usr/share/cobbler/web/settings.py",line 89,in <module> [Fri Feb 01 10:14:10.974959 2019] [:error] [pid 2754] [remote 10.0.0.1:0] from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS [Fri Feb 01 10:14:10.974975 2019] [:error] [pid 2754] [remote 10.0.0.1:0] ImportError: cannot import name TEMPLATE_CONTEXT_PROCESSORS
都是关于python的,考虑到关于python的包就装了两个,猜测是Django的问题,后来在网上查了一下,最终解决办法如下:
[[email protected] ~]# python -c "import django; print(django.get_version())" 1.11.18 [[email protected] ~]# wget https://bootstrap.pypa.io/get-pip.py [[email protected] ~]# python get-pip.py [[email protected] ~]# pip install Django==1.8.9 [[email protected] ~]# python -c "import django; print(django.get_version())" 1.8.9
[[email protected] ~]# systemctl restart cobblerd.service
登录web
导入镜像
可以查看导入的进度
如果想知道镜像被同步到哪里去了,可以在同步未完成的时候,到命令行中查看,找到目标目录,同步完成后可以随时查看
[[email protected] ~]# ps -ef|grep rsync root 2925 1 0 10:03 ? 00:00:00 /usr/bin/rsync --daemon --no-detach root 3232 3091 26 10:33 ? 00:00:09 rsync -a /mnt/ /var/www/cobbler/ks_mirror/CentOS7.5-x86_64 --progress root 3233 3232 0 10:33 ? 00:00:00 rsync -a /mnt/ /var/www/cobbler/ks_mirror/CentOS7.5-x86_64 --progress root 3234 3233 24 10:33 ? 00:00:09 rsync -a /mnt/ /var/www/cobbler/ks_mirror/CentOS7.5-x86_64 --progress root 3257 2506 0 10:34 pts/1 00:00:00 grep --color=auto rsync
配置发行版本
配置kickstart文件
配置profile
配置目标system
配置完毕,同步配置
配置完毕,开启装机
打开目标服务器
然后就可以喝茶聊天等结果了。
千万不要说,目标机和服务端不在一个局域网内,或者配置中的server 和 netx_server的IP地址不对哈,我已经遇到好多朋友给自己刨过这样的坑了!
装机后验证
[[email protected] ~]# hostname kvm1 [[email protected] ~]# ip addr show eth0|awk ‘NR==3{print $2}‘ 10.0.0.101/24 [[email protected] ~]# ip addr show eth1|awk ‘NR==3{print $2}‘ 172.16.1.101/24 [[email protected] ~]# ping www.baidu.com PING www.a.shifen.com (111.13.100.92) 56(84) bytes of data. 64 bytes from 111.13.100.92 (111.13.100.92): icmp_seq=1 ttl=128 time=14.4 ms 64 bytes from 111.13.100.92 (111.13.100.92): icmp_seq=2 ttl=128 time=13.7 ms