文档章节

Nginx DHCP TFTP Kickstart搭建自动安装系统

 董松
发布于 2017/06/07 19:27
字数 1150
阅读 34
收藏 1

之前使用 Cobbler 搭建自动安装系统,最近 Cobbler 网站 http://www.cobblerd.org/ 无法访问,执行命令 cobbler get-loaders 下载获取PXE启动需要的文件时报404,即使下载成功,所有文件都为0字节,导致服务器安装系统自动获取到 IP 地址后卡住。不得已自己想办法解决,重新用 Nginx DHCP TFTP Kickstart 搭建了一套自动安装系统。Nginx 安装和配置都挺简单,代替了 Cobbler 中使用的 Apache。

虚拟环境

网段:192.168.200.0 掩码:255.255.255.0 网关:192.168.200.2 自动安装系统地址:192.168.200.10 DHCP分配地址范围:192.168.200.11 - 192.168.200.254

一、安装配置 Nginx

  • 编译安装 Nginx:
cd /App/src
wget http://nginx.org/download/nginx-1.8.0.tar.gz
tar zxf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure \
--prefix=/App/nginx \
--without-http_access_module \
--without-http_auth_basic_module \
--without-http_browser_module \
--without-http_empty_gif_module \
--without-http_fastcgi_module \
--without-http_geo_module \
--without-http_limit_conn_module \
--without-http_limit_req_module \
--without-http_map_module \
--without-http_memcached_module \
--without-http_proxy_module \
--without-http_referer_module \
--without-http_rewrite_module \
--without-http_scgi_module \
--without-http_split_clients_module \
--without-http_ssi_module \
--without-http_upstream_hash_module \
--without-http_upstream_ip_hash_module \
--without-http_upstream_keepalive_module \
--without-http_upstream_least_conn_module \
--without-http_userid_module \
--without-http_uwsgi_module \
--without-mail_imap_module \
--without-mail_pop3_module \
--without-mail_smtp_module \
--without-pcre \
--without-poll_module \
--without-select_module

make && make install
  • 修改 Nginx 配置文件 /App/nginx/conf/nginx.conf
user  nginx nginx;
worker_processes  auto;

error_log  logs/error.log error;

pid        logs/nginx.pid;
worker_rlimit_nofile    65536;

events
{
    use epoll;
    accept_mutex off;
    worker_connections  65536;
}


http
{
    include       mime.types;
    default_type  text/html;

    charset	UTF-8;
    server_names_hash_bucket_size	128;
    client_header_buffer_size		4k;
    large_client_header_buffers	 4	32k;
    client_max_body_size            8m;

    open_file_cache max=65536  inactive=60s;
    open_file_cache_valid      80s;
    open_file_cache_min_uses   1;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile    on;
    server_tokens off;

    keepalive_timeout  60;

    gzip  on;
    gzip_min_length	1k;
    gzip_buffers  4	64k;
    gzip_http_version	1.1;
    gzip_comp_level	2;
    gzip_types text/plain text/css application/json application/javascript application/xml;

    server
    {
        listen       80;
        server_name  localhost;
        index        index.html;
        root         /App/web;
        autoindex    on;
    }
}
  • 新建 Nginx 运行账号和 Web 目录:
useradd -s /bin/false -M nginx
mkdir -p /App/web
  • 下载 CentOS 镜像 iso 文件并导入Web目录:
cd /App/src
wget http://mirrors.aliyun.com/centos/6.6/isos/x86_64/CentOS-6.6-x86_64-bin-DVD1.iso
mount -o loop CentOS-6.6-x86_64-bin-DVD1.iso /mnt
rsync -avP /mnt/ /App/web/CentOS-6.6-x86_64
  • 启动 Nginx:
/App/nginx/sbin/nginx

二、安装配置 DHCP

  • Yum 安装 dhcp 服务端:
yum -y install dhcp
  • 修改配置 dhcp 文件 /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;

subnet 192.168.200.0 netmask 255.255.255.0 {
     option routers             192.168.200.2;
     option domain-name-servers 223.5.5.5,223.6.6.6;
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        192.168.200.11 192.168.200.254;
     filename                   "/pxelinux.0";
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                192.168.200.10;
}
  • 启动 dhcp 服务:
/etc/init.d/dhcpd start

三、安装配置 TFTP

  • Yum 安装 tftp 服务端:
yum -y install tftp-server
  • 修改 tftp 配置并启动 xinetd 服务:
sed -i '/disable/s/yes/no/' /etc/xinetd.d/tftp
/etc/init.d/xinetd start
  • Yum 安装 syslinux 引导加载程序,拷贝相关文件至 tftp 根目录:
yum -y install syslinux
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cd /App/web/CentOS-6.6-x86_64/isolinux/
cp vesamenu.c32 boot.msg splash.jpg vmlinuz initrd.img  memtest /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
  • 修改启动菜单 /var/lib/tftpboot/pxelinux.cfg/default,特别注意 menu default 这个配置决定了默认启动哪个选项,如果是 label linux 下,服务器一旦重启将删除所有分区并格式化,非常危险,一定要修改此项。
default vesamenu.c32
prompt 0
timeout 60

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.6!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label linux
  menu label ^Install or upgrade an existing system
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.200.10/CentOS-6.6-x86_64/ks.cfg ksdevice=em1 
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  menu default
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

四、添加 Kickstart 配置

  • Web目录中添加 kickstart 配置文件 /App/web/CentOS-6.6-x86_64/ks.cfg:
install
keyboard us
lang zh_CN
url --url=http://192.168.200.10/CentOS-6.6-x86_64/
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$y0UTGMGnCEgUJmUB$IPcaQ8ipx24V8lAq.XepGoilvjXM9kFs5YrivQQoejYmLOmeVXSeM6IvzxtdsUJ0CFuTMzANEmlj5FOluuwy40
auth --useshadow --passalgo=sha512
reboot
firewall --disabled
firstboot --disable
selinux --disabled
logging --level=info
timezone  Asia/Shanghai
bootloader --location=mbr
zerombr yes
clearpart --all --initlabel
part /boot --fstype ext4 --size=200
part swap --size=2048
part / --fstype ext4 --size=200 --grow

%packages
@chinese-support
@core
@server-policy
@workstation-policy
%end

%post
ServiceList=`chkconfig --list | grep '0' | awk '{print $1}' | grep -Ev 'sshd|network|crond|syslog'`
for Service in $ServiceList
do
/etc/init.d/$Service stop
chkconfig --level 0123456 $Service off
done

cat >> /etc/sysctl.conf << EOF
vm.swappiness = 0
net.core.rmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_default = 262144
net.core.wmem_max = 16777216
net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_max_tw_buckets = 10000
net.ipv4.ip_local_port_range = 1024 65500
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_mem = 786432 1048576 1572864
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
fs.inotify.max_user_watches = 1048576
EOF
sysctl -p

cat >> /etc/security/limits.conf << EOF
* - nofile 1048576
* - nproc  65536
* - stack  1024
EOF

cat >> /etc/profile << EOF
ulimit -n 1048576
ulimit -u 65536
ulimit -s 1024

alias grep='grep --color=auto'
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
EOF

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
setenforce 0

sed -i 's/.*UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
sed -i 's/.*GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config
/etc/init.d/sshd restart

cat >> $HOME/.bash_profile << EOF
export PATH=/App/script:\$PATH
EOF

mkdir -p /App/script /App/src

mount --bind /dev/shm /tmp
echo "/bin/mount --bind /dev/shm /tmp" >> /etc/rc.local

五、检查相关服务监听端口

http:80、dhcp:67、tftp:69:

netstat -tunlp | grep -E '(0.0.0.0:80|0.0.0.0:67|0.0.0.0:69)'

如下图说明各服务已监听: netstat

© 著作权归作者所有

粉丝 9
博文 42
码字总数 22010
作品 0
朝阳
运维
私信 提问
Kickstart实现自动安装centos6和7

一直想尝试下pxe自动安装centos6和centos7,最近几天做了下实验,虽然实践的过程中碰到许多问题,但收获还是有的,把碰到的问题和收获分享下。 pxe自动安装需要三个服务,分别为dhcp、tftp、...

实践哥
2017/01/14
638
0
PXE + kickstart 无人值守自动装机实例

系统版本: CentOS 6.5 vsftpd软件版本:vsftpd-2.2.2-11 tftp软件版本:tftp-server-0.49.7 dhcp软件版本:dhcp-4.1.1-38 system-config-kickstart工具版本:system-config-kickstart-2.8.6......

睿睿学IT
2016/03/04
0
0
网络PXE安装系统环境搭建

基本原理图 安装条件 1、 千兆交换机 2、 主板支持网络引导 3、 网关支持PXE协议 (2、3是对于比较陈旧的设备而言,新设备基本都支持,可忽略) 网络安装 1、 安装4个服务 yum –y install v...

夜风狂1102
2017/06/02
0
0
Kickstart自动化安装部署Centos系统平台的搭建

先上拓扑图吧 0、使用虚拟机做实验的规划1、ip地址的规划,模板练习机器1对应10.0.0.11,依次类推2、所有的服务器配置好epel源3、所有的服务器都要做内核优化(基本)4、每个实验都要有详细的文...

追风蚂蚁
2014/10/22
0
0
RHEL7/CentOS7 pxe+kickstart自动化系统安装

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统...

zaa47
2017/05/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何使用soapUI模拟webservice客户端发送请求

参考资料 https://jingyan.baidu.com/article/cbcede0712849a02f40b4d88.html 左边是请求参数,可以自己填写!按着那个绿色三角箭头可以模拟发送请求,右边是返回的报文 soapui如何发送xml格...

故久呵呵
25分钟前
4
0
Java Security 介绍

1.介绍 Java平台设计的重点是安全性。在其核心,java语言本身是类型安全的并且提供了垃圾自动回收,这使其增加了应用程序代码的健壮性。安全的类加载以及验证机制确保了只有合法的代码才能够...

lixiaobao
31分钟前
4
0
Niushop开源商城系统-分销商管理

分销商管理 1.分销员的招募与管理 如何申请成为分销员? 在wap端个人中心满足之前设置的升级条件,可以申请分销员 开启分销商审核,需要在后台分销商管理——》待审核处进行审核通过。 通过完...

niushop-芳
32分钟前
3
0
为什么大公司一定要使用 DevOps?

究竟什么是DevOps? 要想回答这个问题,首先要明确DevOps这个过程参与的人员是谁,即开发团队和IT运维团队。那么,DevOps的意图是什么呢?即在两个团队之间,建立良好的沟通和协作,更快更可靠...

cs平台
34分钟前
5
0
高危预警|RDP漏洞或引发大规模蠕虫爆发,用户可用阿里云免费检测服务自检,建议尽快修复

2019年9月6日,阿里云应急响应中心监测到Metasploit-framework官方在GitHub空间公开了针对Windows远程桌面服务远程命令执行漏洞(CVE-2019-0708)的利用代码。利用该代码,无需用户交互操作,即...

Mr_zebra
39分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部