Linux 自动化安装介绍

介绍pex之前先来介绍了dhcp服务。
arp协议 (address resolving protocol):IP --> MAC
rarp协议 (reverse arp ):MAC ---> IP

工作流程大致有6个步骤:
1、客户端: dhcp discover 请求报文 广播
2、服务器:dhcp offer(IP/mask,gw....)
3、客户端: dhcp request (请求使用地址)
4、服务器:dhcp ack 确认
5、客户端 : rquest 单波给服务器续租, 50%时候出发,可以自定义,如果没有联系上 75%时候继续。(没有续租上的情况按照剩余时间的50%进行触发,直到续租成功)
6、服务器:(ack|nack)

dhcp安装使用过程

1、安装

[[email protected] pxeboot]# yum -y install dhcp

2、配置文件

[[email protected] pxeboot]# cd /etc/dhcp/
[[email protected] dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example ./dhcpd.conf

option domain-name "example.org";                    #当前主机域名
option domain-name-servers 8.8.8.8,114.114.114.114;  #dns 用逗号隔开

default-lease-time 6000;                      #默认续租时间
max-lease-time 72000;                        #最大续租时间
log-facility local7;                            #日志
option routers 192.168.1.1;  #网关  也可以定义在subnet中
subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.230 192.168.1.254;
}

3、启动

[[email protected] haproxy]# systemctl restart dhcpd
#服务端端口
[[email protected] haproxy]# ss -lntup|grep dhcpd
udp    UNCONN     0      0         *:67                    *:*                   users:(("dhcpd",pid=10216,fd=7))

#客户端端口
udp    UNCONN     0      0                                                    *:68                                                               *:*                   users:(("dhclient",pid=4981,fd=6))

4、客户端测试?

#在虚拟机中设置一个桥接模式的网卡,自动获取ip
[[email protected] html]# ifdown ens33 && ifup ens33  #如果同一网络有多个dhcp服务器的话
[[email protected] html]#  dhclient -d
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/ens34/00:0c:29:a8:a5:41
Sending on   LPF/ens34/00:0c:29:a8:a5:41
Listening on LPF/ens33/00:0c:29:a8:a5:37
Sending on   LPF/ens33/00:0c:29:a8:a5:37
Sending on   Socket/fallback
DHCPREQUEST on ens34 to 255.255.255.255 port 67 (xid=0x15cfab63)
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x46d0deea)
DHCPACK from 192.168.1.200 (xid=0x46d0deea)  #自定义的dhcp服务器
bound to 192.168.1.231 -- renewal in 2631 seconds.
DHCPACK from 192.168.1.1 (xid=0x15cfab63)   #家里路由器 dhcp
bound to 192.168.1.108 -- renewal in 3416 seconds.

[[email protected] html]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:a8:a5:37 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.231/24 brd 192.168.1.255 scope global dynamic ens33
       valid_lft 5882sec preferred_lft 5882sec
    inet6 fe80::20c:29ff:fea8:a537/64 scope link
       valid_lft forever preferred_lft forever
[[email protected] html]# route  -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    101    0        0 ens33

5、固定ip分配

#服务端配置
host passacaglia {
        hardware ethernet 00:0c:29:a8:a5:37;
        fixed-address 192.168.1.229;
}

#客户端地址
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:a8:a5:37 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.229/24 brd 192.168.1.255 scope global dynamic ens33
       valid_lft 5998sec preferred_lft 5998sec
    inet6 fe80::20c:29ff:fea8:a537/64 scope link
       valid_lft forever preferred_lft forever

6、服务器查看ip租约情况

[[email protected] haproxy]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5

lease 192.168.1.230 {
  starts 5 2018/06/08 07:22:19;
  ends 5 2018/06/08 09:02:19;
  cltt 5 2018/06/08 07:22:19;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:0c:29:34:f5:7a;
  client-hostname "node2";
}

pex

Preboot Execution Environment
工作流程大致如下
1、客户端通过dhcp服务获取 ip/mask,gw,dns,filename,next-server
2、客户端通过引导文件加载临时内核,从而加载anaconda配置文件
3、通过anaconda或者传递给内核的参数方式下载安装数据包,进行安装

先介绍下kickstart
图形化配置

yum -y install system-config-kickstart
system-config-kickstart


centos7 ks

#命令段
####必备命令
#认证方式
auth --enableshadow --passalgo=sha512
#bootloader  append后面是传递给内核的参数 quiet
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# 键盘
keyboard --vckeymap=us --xlayouts=‘us‘
# 语言
lang en_US.UTF-8
#时间
timezone Asia/Shanghai --isUtc --nontp

#清空分区
clearpart --none --initlabel
#创建boot分区
part /boot --fstype="xfs" --ondisk=sda --size=512
#创建pv.id
part pv.156 --fstype="lvmpv" --ondisk=sda --size=17411
#创建vg 通过pv.id指定那个pv
volgroup vg0 --pesize=4096 pv.156
#创建逻辑卷
logvol /  --fstype="xfs" --size=15360 --name=root --vgname=vg0
logvol swap  --fstype="swap" --size=2047 --name=swap --vgname=vg0

#管理员密码   第一段是加密方式  第二段是密钥  第三段加密密码   密码生成方式 openssl  passwd  -1  -salt `openssl rand -hex 4`
rootpw --iscrypted $6$cH7JVkcFapV4O/vE$QOt4bAVZ72Ck5XjCeIfL1lnV55XHGoobTePENyn79gy1Cs52t9bperY8G9A4Gif/1yIy6JhmTenj4xxZIK2mM.

###可选命令
install
# Network information
network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --activate
network  --bootproto=dhcp --device=ens34 --onboot=off --ipv6=auto --activate
network  --hostname=localhost.localdomain
#安全关闭
selinux --disabled
firewall --disabled
#安装完成后
reboot
###

#安装源 cdrom
#cdrom
#安装源是网络
url --url="http://mirrors.aliyun.com/centos/7.4.1708/os/x86_64/"

# 安装界面图像显示 去掉就是显示文本
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# System services
services --disabled="chronyd"

#程序包段
%packages
@^minimal
@core
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb=‘auto‘
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end 

检查

[[email protected] ~]# ksvalidator ks3.cfg

介绍制作镜像安装

[[email protected] ~]# cd /mnt/t1/
[[email protected] t1]# ls
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
[[email protected] t1]# mkdir /mnt/t2
[[email protected] t1]# cp -r isolinux /mnt/t2
[[email protected] t1]# cd /mnt/t2/isolinux/
[[email protected] isolinux]# cp /root/ks3.cfg  ../ks.cfg
[[email protected] t2]# ls
isolinux  ks.cfg

[[email protected] mnt]# vim t2/isolinux/isolinux.cfg
timeout 1
label linux
  menu default
  menu label ^Install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.ks=cdrom:/ks.cfg  text

#注意default只能有一个
[[email protected] mnt]# genisoimage -o centos7-boot.iso  -b isolinux/isolinux.bin -c isolinux/boot.cat -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "centos7 x86_64 boot" t2/

[[email protected] mnt]# ll -h
总用量 53M
-rw-r--r--. 1 root root  53M 5月   4 22:51 centos7-boot.iso

配置好网卡 ,dhcp,直接启动就好了。

pex

1、安装tftp

[[email protected] haproxy]# yum -y install tftp-server tftp
#udp 69
[[email protected] haproxy]# systemctl start tftp.socket

#工作目录
[[email protected] haproxy]# ls /var/lib/tftpboot/

2、dhcp配置引导文件名称,引导文件地址

subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.230 192.168.1.254;
        filename "pxelinux.0";
        next-server 192.168.1.200;
}

3、挂载光盘当yum源

[[email protected] ~]# cd /mnt/t2/centos/7.5.1804/os/x86_64/
CentOS_BuildTag               GPL                           Packages/                     TRANS.TBL
.discinfo                     images/                       repodata/                     .treeinfo
EFI/                          isolinux/                     RPM-GPG-KEY-CentOS-7
EULA                          LiveOS/                       RPM-GPG-KEY-CentOS-Testing-7

配置nginx

server{
        listen 8081;
        root /mnt/t2 ;
        index index.html;
        autoindex on;
        autoindex_exact_size on;
        autoindex_localtime on;

        location / {  #匹配根下面所有,但是优先级是最低的 相当于/*
                allow all;
        }
}

4、准备kickstart脚本

阿里镜像地址

http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/
这里的url可以不配置,在default后面可以添加(centos7 )
centos6的话url必须配置在这里default不能配置

[[email protected] t2]# vim kickstarts/centos7.5.cfg
auth --enableshadow --passalgo=sha512
#url --url="http://192.168.1.200:8081/centos/7.5.1804/os/x86_64/"
graphical
firstboot --enable
ignoredisk --only-use=sda
keyboard --vckeymap=us --xlayouts=‘us‘
lang en_US.UTF-8
network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network  --bootproto=dhcp --device=ens34 --onboot=off --ipv6=auto --no-activate
network  --hostname=localhost.localdomain
selinux --disabled
firewall --disabled
reboot
rootpw --iscrypted $6$FHRgZBjmXVi3kSbe$35zlnY5/LZOBrFgGpLEm5vnVivcvxDoP1NfolrFp.Wf6ACbZn2dMI1WJroDfB5aYfh6u5GHP10LlpFjTU8/vL1
services --disabled="chronyd"
timezone Asia/Shanghai --isUtc --nontp
user --name=zander --password=$6$VjPXeSzaoEtsCW4f$1xvYPZLOjBhr71KclgucATwVyl3Nyp0tOp7acRbFUBgZNVh.jbyzDPvZBzTk1PHkWCxgBgPhWOkZZm4sYdNN6. --iscrypted --gecos="zander"
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
clearpart --none --initlabel
part /boot --fstype="xfs" --ondisk=sda --size=512
part pv.156 --fstype="lvmpv" --ondisk=sda --size=17411
volgroup vg0 --pesize=4096 pv.156
logvol /  --fstype="xfs" --grow --maxsize=15360 --size=1024 --name=root --vgname=vg0
logvol swap  --fstype="swap" --size=2047 --name=swap --vgname=vg0
%packages
@^minimal
@core
kexec-tools
%end
%addon com_redhat_kdump --enable --reserve-mb=‘auto‘
%end
%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end

5、内核启动脚本配置

[[email protected] t2]# yum -y install syslinux
[[email protected] t2]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[[email protected] t2]# cp centos/7.5.1804/os/x86_64/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
[[email protected] t2]# cp /usr/share/syslinux/{menu.c32,chain.c32,memdisk,mboot.c32} /var/lib/tftpboot/
[[email protected] t2]# cd  /var/lib/tftpboot/
[[email protected] tftpboot]# mkdir pxelinux.cfg
[[email protected] pxelinux.cfg]# vim pxelinux.cfg/default
default menu.c32
  prompt 5
  timeout 30
  MENU TITLE CentOS 7 PXE Menu

  LABEL linux
  MENU LABEL Install CentOS 7 x86_64
  KERNEL vmlinuz
  APPEND initrd=initrd.img inst.repo=http://192.168.1.200:8081/centos/7.5.1804/os/x86_64/ inst.ks=http://192.168.1.200:8081/kickstarts/centos7.5.cfg text

原文地址:http://blog.51cto.com/marvin89/2126587

时间: 2024-12-21 19:34:43

Linux 自动化安装介绍的相关文章

定制linux自动化安装镜像

定制linux自动化安装镜像 安装必须的软件 yum -y install createrepo mkisofs anaconda-runtime yum -y install rsync 制作镜像基本模型 mkdir /yousm/CentOS6.2                      #创建镜像目录 mount /dev/cdrom   /mnt                     #挂载现有的安装系统盘 /usr/bin/rsync -a --exclude=Packages/-

(DHCP+PXE+TFTP+HTTP)实现Linux自动化安装的演示实验

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 准备工作 1.挂载光盘镜像: # mount /dev/cdrom /var/www/html/CentOS6.5/ 提示:为什么要将光盘镜像挂载于此?(在自动化安装过程中,通过http服务提供yum安装源) 2.制作本地YUM仓库: # vim /etc/yum.repos.d/CentOS6.5-Local.repo 配置DHCP服务 1.安装DHCP服务 # yum -y install

LINUX自动化安装操作系统

自动化就是无人职守安装大量操作系统,只要客户机开机,就能自动安装操作系统. 首先调试环境: 基于DHCP.TFTP.HTTP来完成PXE自动的实现 1.  安装服务 [[email protected]/]# yum install dhcp---------dhcp服务 [[email protected]/]# yum install tftp tftp-server-----tftp服务 [[email protected]/]# yum install http--------http服

Linux自动化安装Nginx

操作系统: CentOS 6.9 脚本语言: shell https://github.com/iscongyang/Practical/blob/master/shell-scripts/install_tengine.sh 此链接是自动化安装NGINX的淘宝封装的tengine的shell脚本 如果您觉得写得不好, 请留下您的宝贵意见 如果您觉得写得还行, 请留下您的star 原文地址:https://www.cnblogs.com/cy666/p/10988729.html

Linux自动化安装JDK

一.自动化部署jdk思路 a.可以使用一台Linux机器充当http服务器,jdk版本资源可以放在http服务器上,这样就可以统一使用wget下载jdk. 官方的jdk直接使用wget下载,因为没有点击确认接受协议,所以下载的jdk不能正常安装. 二.安装http服务器,准备初始环境 # 安装httpd yum -y install httpd # 启动httd服务器( centos7使用: systemctl start httpd.service) service httpd start #

Linux MongoDB 安装

Linux   MongoDB 安装 前言: 官方参考手册:https://docs.mongodb.org/manual/?_ga=1.41355425.2024551820.1440643898 也可以下载对应的PDF版本,或者网上查找中文版本(MongoDB_权威指南_中文版),找到linux平台安装介绍 1.     安装环境 CentOS-5.10-x86_64 2.     MongoDB 服务器端版本:mongodb-linux-x86_64-3.0.6 步骤: 1.      解

基于Kickstart自动化安装CentOS实践

前言 因为需要在浪潮的x86服务器中集中部署CentOS搭建基于Hadoop的大数据平台,平时接触SLES(SuSE Linux Enterprise Server)较多并且已经实现基于Autoyast方式使用光盘或者PXE网络自动化安装(后续会分享具体实现方法).这次主要通过学习Kisckstart实现最简单的光盘方式自动化安装CentOS,而网上的大多数教程并不完全适用于自身的环境,本文将不再赘述Kickstart相关概念,细节可参考扩展阅读. Kickstart是最为通用的Linux自动化

无人值守自动化安装linux系统

linux自动安装系统工作过程介绍: PXE client 主要和3个不同类型的服务器交互并获取到相关信息,最后才能够自动安装系统. 第一步 PXE Client 与 DHCP Server 如果是物理机,将计算器在BIOS设置中以PXE方式启动.此时计算机会在网络中发送一个广播请求,请求通过DHCP服务器分配一个IP地址等相关信息.DHCP服务器收到客户端的请求并且验证后,它会返回给客户端请求,将IP地址.tftp服务器信息.以及一些配置文件信息告诉客户端以便让客户端继续操作. 第二步 PXE

Linux系统基于网络的自动化安装

安装一个操作系统对一个普通人来说是一件非常麻烦的事了.而对于一个专业人士来说,应该是一个非常轻松的事.但是这样的情况也仅限于有限的几台需要安装.在实际工作的中,我们经常会遇到这样的情况:有大批量的计算机需要同时安装Linux,或者想要安装Linux但是计算机没有光驱,或者是通过光驱的方式一个个安装.这样安装不仅效率低,也不利于以后的维护.这个时候你就需要利用网络的强大功能了.它可以帮你基于网络来完成全自动化的安装,中间不需要人工去干预.这就是cobbler服务 cobbler服务是一个快速网络安