2018-06-25 00:13:05 Doom_William 阅读数 2633
  • Kubernetes 实战系列

    Kubernetes(KS8) 实战系列教程,该课程将对Kubernetes的Node、Pod、Replication Controller、Service等基本核心概念进行讲解,这些组件共同构成了Kubernetes的系统框架和计算模型。通过对它们进行灵活的组合,用户就可以快速、方便地对容器集群进行配置、创建和管理。

    9530 人正在学习 去看看 CSDN讲师

什么是linux

Linux(/ˈlɪnəks/ LIN-əks)是一种自由和开放源代码的类UNIX操作系统。定义Linux的组件是Linux内核,该操作系统内核由林纳斯·托瓦兹在1991年10月5日首次发布。

严格来讲,术语Linux只表示操作系统内核本身,但通常采用Linux内核来表达该意思。Linux则常用来指基于Linux内核的完整操作系统,包括GUI组件和许多其他实用工具。由于这些支持用户空间的系统工具和库主要由理查德·斯托曼于1983年发起的GNU计划提供,自由软件基金会提议将该组合系统命名为GNU/Linux。

Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版,一些流行的主流Linux发布版,包括Debian(及其派生版本Ubuntu,Linux Mint),Fedora(及其相关版本Red Hat Enterprise Linux,CentOS)和openSUSE等。Linux发行版包含Linux内核和支撑内核的实用程序和库 ,通常还带有大量可以满足各类需求的应用程序。个人计算机使用的Linux发行版通常包X Window和一个相应的桌面环境,如GNOME或KDE。桌面Linux操作系统常用的应用程序,包括Firefox网页浏览器,LibreOffice办公软件, GIMP图像处理工具等。由于Linux是自由软件,任何人都可以创建一个符合自己需求的Linux发行版。

参见维基百科Linux词条:http://zh.wikipedia.org/zh-cn/Linux

选择Linux发行版

Linux并不像Microsoft Windows有统一的版本,而是由大量的发行版,如果你有兴趣,也可以自己做一个发行版。主流的Linux发行版有RedHat、Debian、Ubuntu、Fedora、Centos等等。推荐使用CentOS,本文以下内容也以CentOS为例。原因很简单,RedHat是目前服务器领域最常见的Linux发行版之一,大学机房中安装的一般也是RedHat,而CentOS是RedHat的免费版本。

关于CentOS

CentOS(Community Enterprise Operating System)是Linux发布版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定发布的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。CentOS 对上游代码的主要修改是为了移除不能自由使用的商标

更多Linux请参见:Linux发行版列表: http://zh.wikipedia.org/wiki/Linux%E5%8F%91%E8%A1%8C%E7%89%88%E5%88%97%E8%A1%A8

什么是虚拟机

虚拟机(Virtual Machine),在计算机科学中的体系结构里,是指一种特殊的软件,他可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。在计算机科学中,虚拟机是指可以像真实机器一样运行程序的计算机的软件实现。

简单来说,虚拟机就是在你的电脑系统上装一个虚拟的电脑系统。参见:http://zh.wikipedia.org/zh-cn/%E8%99%9B%E6%93%AC%E6%A9%9F%E5%99%A8

目前主流的虚拟机软件有VMware和VirtualBox。论功能而言,前者更强大,后者的有点是免费和轻量级。本文以VMware Workstation为例。

虚拟机安装Centos

下载VMware

在官网下载,地址为:http://www.vmware.com/cn/products/desktop_virtualization/workstation/overview.html,或者网盘下载(速度较快):http://pan.baidu.com/share/link?shareid=371659&uk=1779553941,

汉化补丁:http://pan.baidu.com/share/link?shareid=427719&uk=1779553941

使用方法参见:http://bbs.kafan.cn/thread-1495026-1-1.html

注意:VMware Workstation是收费软件,在试用期过后请购买正版或自行google解决。这是一枚测试用的key:1F21T-2P313-TZQ69-EV3Q6-2C11U

下载完后,除了赶紧去安装,我想不出什么更好的描述。

下载CentOS

官方下载地址是http://www.centos.org/modules/tinycontent/index.php?id=15,就速度而言,当然是国内镜像速度更快些。网易镜像地址为:http://mirrors.163.com/centos/,最新版本CentOS 6.4下载链接:http://mirrors.163.com/centos/6.4/isos/i386/CentOS-6.4-i386-bin-DVD1.iso

如果你不知道下载到的这个扩展名为iso的文件是什么的话,首先可以肯定的是这不是能吃的东西,并且请继续阅读文章。如果你知道,就不必继续阅读了。

开始安装

点击左上角,“文件-新建虚拟机”,打开新建虚拟机向导








内存最少要选择628MB,建议选择1G。CPU建议配置2核。











同样方法,再次点击加号,添加根分区,挂载点选择/,大小输入可用空间容量即可(粉红按钮里显示的,比如输入16GB),点击添加挂载点。

 

最后,再添加一个/boot分区,将添加的3个分区的设备类型都设置为标准分区:





就这么简单的安装完毕了,虚拟机会自动重启系统:

重启后,输入刚配置的用户名root和密码即可登录已搭建完成的linux系统。




现在就可以使用CentOS了

注意:ctrl+alt把鼠标退出虚拟机。


2019-03-06 19:03:43 qq_33235529 阅读数 541
  • Kubernetes 实战系列

    Kubernetes(KS8) 实战系列教程,该课程将对Kubernetes的Node、Pod、Replication Controller、Service等基本核心概念进行讲解,这些组件共同构成了Kubernetes的系统框架和计算模型。通过对它们进行灵活的组合,用户就可以快速、方便地对容器集群进行配置、创建和管理。

    9530 人正在学习 去看看 CSDN讲师

什么是kickstart

kickstart是一种无人值守安装操作系统的方式,他的工作原理就是在安装的过程中记录人工干预填写的各种参数,并会生成一个ks.cfg的文件,如果在自动化安装的过程中出现需要填选参数的情况,安装程序就会去找ks.cfg,如果找到相对应的参数,就采用所匹配的参数,若找不到,则需要人工进行填写。所以,如果ks.cfg文件中涵盖了所需的参数,那么安装着就可以了告诉系统去哪下载ks.cfg文件,然后就可以等待安装完毕。

什么是PXE

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。

环境准备

实验环境 vmware Workstation12
系统平台 CentOS6.9图形化
网络模式 NAT
防火墙 iptables:not running,selinux:disabled

准备工作

如果没有安装图形化界面的话,可以按照以下执行在线安装图像化界面

yum groupinstall "X Window System"
yum groupinstall "Desktop"
yum groupinstall chinese-support
reboot

安装HTTP

yum install -y httpd
rpm -qa|grep httpd
/etc/init.d/httpd start
chkconfig --level 35 httpd on

加载ISO镜像

在这里插入图片描述
这里选择的镜像就是要安装哪个系统选择哪个镜像

  • 复制镜像内容支html目录下
[root@lcx ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        19G  2.3G   16G  14% /
tmpfs           491M  224K  491M   1% /dev/shm
/dev/sda1       477M   35M  417M   8% /boot
/dev/sr0        3.7G  3.7G     0 100% /media/CentOS_6.9_Final
[root@lcx ~]# cp -r /media/CentOS_6.9_Final/ /var/www/html/

安装TFTP

yum install tftp-server -y
  • 启动
vim /etc/xinetd.d/tftp
service tftp 
{ 
        socket_type             = dgram 
        protocol                = udp 
        wait                    = yes 
        user                    = root 
        server                  = /usr/sbin/in.tftpd 
        server_args             = -s /var/lib/tftpboot 
        disable                 = no 
        per_source              = 11 
        cps                     = 100 2 
        flags                   = IPv4 
}

配置支持PEX的启动程序

[root@lcx ~]# cp /usr/share/syslinux/{pxelinux.0,vesamenu.c32} /var/lib/tftpboot/

复制iso镜像中initrd.img和vmlinux至指定文件中

[root@lcx ~]# cp /var/www/html/CentOS_6.9_Final/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/

复制ISO镜像中的*.msg到指定文件

[root@lcx ~]# cp /var/www/html/CentOS_6.9_Final/isolinux/*.msg /var/lib/tftpboot/
  • 在/var/lib/tftpboot/中新建一个pxelinux.cfg目录
[root@lcx ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@lcx ~]# cp /var/www/html/CentOS_6.9_Final/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
  • 修改default文件
vim /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 1
timeout 6

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 6.9!
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
  menu default
  kernel vmlinuz
  append initrd=initrd.img
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label ks
  kernel vmlinuz
  append ks=http://10.0.0.200/ks.cfg initrd=initrd.img ksdevice=eth0
label local
  menu label Boot from ^local drive
  localboot 1
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

安装DHCP

yum install -y dhcp
  • 修改dhcp配置文件
[root@lcx ~]# vim /etc/dhcp/dhcpd.conf 

# ******************************************************************
# Cobbler managed dhcpd.conf file
# generated from cobbler dhcp.conf template (Tue Sep 25 06:55:49 2018)
# Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
# in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
# overwritten.
# ******************************************************************

ddns-update-style interim;

allow booting;
allow bootp;

ignore client-updates;
set vendorclass = option vendor-class-identifier;

option pxe-system-type code 93 = unsigned integer 16;

subnet 10.0.0.0 netmask 255.255.255.0 {
     option subnet-mask         255.255.255.0;
     range dynamic-bootp        10.0.0.100 10.0.0.254;
     default-lease-time         21600;
     max-lease-time             43200;
     next-server                10.0.0.200;
     class "pxeclients" {
          match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
          if option pxe-system-type = 00:02 {
                  filename "ia64/elilo.efi";
          } else if option pxe-system-type = 00:06 {
                  filename "grub/grub-x86.efi";
          } else if option pxe-system-type = 00:07 {
                  filename "grub/grub-x86_64.efi";
          } else {
                  filename "pxelinux.0";
          }
     }

}

# group for Cobbler DHCP tag: default
group {
}
  • 启动dhcp
/etc/init.d/dhcpd start

安装kickstart

yum install system-config-kickstart
  • 在图形化界面启动kickstart
startx
system-config-kickstart

在这里插入图片描述

  • 安装方式选择HTTP
    在这里插入图片描述
  • 分区设置
    在这里插入图片描述
  • 网络配置
    在这里插入图片描述
  • 认证配置
    在这里插入图片描述
  • 防火墙配置
    在这里插入图片描述
  • 图形环境配置
  • 需要安装的软件包
    在这里插入图片描述
  • 预览
    在这里插入图片描述
    在这里插入图片描述
  • 生成ks.cfg文件,保存到/var/www/html/文件夹下
    在这里插入图片描述
    在这里插入图片描述
    回车保存
  • 编辑ks.cfg文件
[root@lcx ~]# vim /var/www/html/ks.cfg 
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use network installation
url --url="http://10.0.0.200/CentOS_6.9_Final"
# Root password
rootpw --iscrypted $1$lJSsh5pq$MAcK5hMrCQkUYXCR0dnjC/
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Africa/Abidjan
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
key --skip
bootloader --append="rhgb quiet" --location=mbr --driveorder=sda 
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="ext4" --size=2048
part /home --fstype="ext4" --size=1024

%packages
@mysql-client

%end

key --skip如果是红帽系统,此选项可以跳过输入序号过程;如果是Centos系列,则可以不保留此项内容
reboot此选项必须存在,也必须在文中设定位置,不然kickstart显示一条消息,并等待用户按任意键后才重新引导
clearpart --all --initlable此条命令必须添加,不然系统会让用户手动选择是否清楚所有数据,这就需要人为干预了,从而导致自动化过程失败

测试

  • 新加一台虚拟机,网络模式选择nat
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    指定磁盘大小,ks.cfg 文件中,我们定义了/ 大小为2GB,/home 分区为1GB,所以这里的磁盘大小至少要为3GB。而且,一定要勾选上“立即分配所有磁盘空间”,不然在后来安装的时候将提示没有磁盘空间。
    在这里插入图片描述
  • 新建完成后即可开机测试
    在这里插入图片描述
2019-07-25 09:23:01 Rapig1 阅读数 53
  • Kubernetes 实战系列

    Kubernetes(KS8) 实战系列教程,该课程将对Kubernetes的Node、Pod、Replication Controller、Service等基本核心概念进行讲解,这些组件共同构成了Kubernetes的系统框架和计算模型。通过对它们进行灵活的组合,用户就可以快速、方便地对容器集群进行配置、创建和管理。

    9530 人正在学习 去看看 CSDN讲师

1.自动化安装脚本

自动化安装脚本就是在一个脚本当中写入服务器安装系统的一些数据命令
当调用这个脚本的时候就会自动给服务器装系统

2.如何生成自动安装脚本?
利用kickstart工具

kickstart是一个自动的安装方式,通过人工干预填写参数,并生成一个ks.cfg的文件
如果在自动化安装的过程中出现需要填写参数的情况,安装程序就会去找ks.cfg程序
若找到合适的参数就采用,找不到就需要人工进行填写
所以如果有合适的参数,安装者就可以只设置从何处调用ks.cfg文件即可

3.实验环境
再一台配置好共享yum源的主机上做实验

4.利用kickstart工具做一个简单的自动安装脚本来自动装一个新系统
步骤一:在主机上搭建DHCP服务器,由于之前安装过dhcpd软件,所以直接启动即可
在这里插入图片描述
没有dhcpd软件的,直接yum install dhcpd 即可,因为已经有yum源库

查看dhcp的配置文件是否存在
在这里插入图片描述
编辑dhcp的配置文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编辑好后重启dhcp服务
在这里插入图片描述
dhcp服务器搭建成功

步骤二:yum search kickstart寻找生成自动安装脚本的工具
在这里插入图片描述
安装此工具
在这里插入图片描述
可见安装成功
在这里插入图片描述安装完成后开启httpd服务,下载安装httpd软件,因为之前我们已经下载过,所以直接启动即可,目的是为了能用yum源共享
在这里插入图片描述
步骤三:system-config-kickstart开启这个工具,会出来一个自动安装脚本的图形配置界面,最后将该文件保存到/var/www/html/下即可,保存在/var/www/html/下是为了能通过http超文本传输协议共享
在这里插入图片描述
步骤四:配置
在这里插入图片描述
基础设置:设置语言,键盘语言,时区,root用户密码,安装好后自动重启,以及非图形下的安装。
在这里插入图片描述
选择安装一个新系统,通过HTTP服务安装,提供源的主机信息172.25.254.60,安装源的地址填/rhel7.3。此处代表路径则是/var/www/html/rhel7.3
在这里插入图片描述
重新加载启动一个新系统,系统在磁盘里面,磁盘的引导程序bootloader促使0磁头读取c盘,启动系统,mbr在0磁道
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
新系统的分区情况如下
在这里插入图片描述
安装网卡名称为eth0,网络类型是dhcp动态分配ip
在这里插入图片描述
加密方式选择默认SHA512加密
在这里插入图片描述
防火墙设置不工作,因为需要用http服务来提供网络yum源。
在这里插入图片描述
启动设定为非图形界面,这样启动速度快
在这里插入图片描述
最开始安装新系统不需要选择安装包
在这里插入图片描述
自动安装脚本里面不需要写安装前的动作
在这里插入图片描述
安装后的动作,在/mnt/下新建file文件1-100
在这里插入图片描述
在这里插入图片描述先保存到/root下 然后在mv到/var/www/html/下

步骤五:将ks.cfg文件放在/root下,cd ~

vim ks.cfg
ksvalidator ks.cfg 检查语法是否有错

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将时区更改,然后至少要安装@base包组,%pacakages开始%end结束,我将安装后执行的脚本也改变了,意思是使安装后的虚拟机,可使用网络yum源,共享yum源的地址是http://172.25.254.60/rhel7.3
在这里插入图片描述

在这里插入图片描述
通过ksvalidator命令来检测自动安装脚本配置有无语法错误,有错误就会提示,可见此脚本无语法错误。

将ks.cfg文件拷贝到/var/www/html/下,需要将它保存在共享yum源目录下才能引导其他新的服务器装系统,前提:有yum源的主机必须开启httpd服务,才能进行共享其他主机装系统。

在这里插入图片描述
我们在之前配好的镜像的浏览器里输入http://172.25.254.60/ks.cfg发现是可以看到共享的ks.cfg文件的
在这里插入图片描述
同样也有共享的yum源软件仓库
在这里插入图片描述
打开虚拟机管理器
在这里插入图片描述
选择网络安装方式

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
成功安装。用root身份用户密码登陆即可。
在这里插入图片描述
在这里插入图片描述
dhcp分配id,id为172.25.254.89

综上所述还是需要用kickstart命令之后在图形界面勾选才可以创建新的虚拟机,那么如何实现,全自动脚本安装呢?这就需要借助脚本来实现了。之前我们有实验是创建虚拟机到选择安装版本的脚本,现在只需要在之前那个脚本之后加入kickstart部分的脚本即可两个一体化,完全自动化创建虚拟机。

我们先 man virt-install看一下,kickstart在脚本中怎么使用
在这里插入图片描述
先更改一下我们之前创建好的ks.cfg这个文件:
在这里插入图片描述
然后用ksvalidator ks.cfg来检查有无语法错误
在这里插入图片描述

由于我们是网络http配置,所以我们选择这段,将之前的cdrom改成location,意思为使用网络共享yum源来安装

vim我们之前我们写好的虚拟机创建脚本
在这里插入图片描述
在这里插入图片描述
然后sh执行这个可执行文件,实现全自动创建虚拟机
在这里插入图片描述

2017-08-30 21:03:02 xal0610 阅读数 2106
  • Kubernetes 实战系列

    Kubernetes(KS8) 实战系列教程,该课程将对Kubernetes的Node、Pod、Replication Controller、Service等基本核心概念进行讲解,这些组件共同构成了Kubernetes的系统框架和计算模型。通过对它们进行灵活的组合,用户就可以快速、方便地对容器集群进行配置、创建和管理。

    9530 人正在学习 去看看 CSDN讲师

kickstart介绍

许多系统管理员喜欢使用自动化的方式安装操作系统,为了满足这种需求,红帽创建了kickstart安装方法。

通过使用kickstart,系统管理员能够创建一个单独的,包含安装过程中遇到的所有问题答案的文件,即在装机过程中需要手动选择和配置的选项。同时可以在ks文件里加入shell脚本,进行装机进度汇报等操作。

使用场景

ks文件一个常用场景是和PXE网络引导一起使用,从而实现远程无人值守装机。

示例如下:
platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# 防火墙配置
firewall --disabled
# 安装操作系统而不是升级
install
# 使用网络安装
url --url="ftp://192.168.0.132/iso6"
# Root用户密码
rootpw --iscrypted $1$L3i.IYPm$w5z95vimgjLX9Rq90oYdv0
# 系统授权信息
auth  --useshadow  --passalgo=sha512
# 使用文本模式安装
text
firstboot --disable
# 选择键盘
keyboard us
# 选择语言
lang en_US
# SELinux配置
selinux --disabled
# 安装日志级别
logging --level=info
# 安装后重新启动
reboot
# 选择时区
timezone  Asia/Shanghai
# 网络信息
network  --bootproto=dhcp --device=eth0 --onboot=on
# 引导装载程序配置系统
bootloader --location=mbr
2017-10-18 15:12:23 czz1141979570 阅读数 652
  • Kubernetes 实战系列

    Kubernetes(KS8) 实战系列教程,该课程将对Kubernetes的Node、Pod、Replication Controller、Service等基本核心概念进行讲解,这些组件共同构成了Kubernetes的系统框架和计算模型。通过对它们进行灵活的组合,用户就可以快速、方便地对容器集群进行配置、创建和管理。

    9530 人正在学习 去看看 CSDN讲师
第1章 自动安装系统
1.1 以往安装操作系统的方式
1.1.1 手动
1.1.2 光盘(ISO镜像)
1.1.3 U盘
1.1.4 网络安装
1.2 自动安装操作系统(http://blog.oldboyedu.com/autoinstall-kickstart/ )
面向硬件服务器安装操作系统---减少重复劳动
目标:批量安装操作系统
1.2.1 自动装系统的软件
先有kickstart    Linux:Redat  Centos  Ubutu Esxi
后有cobbler


windows   ---WDS


1.2.2 kickstart 只是一个解决方案。这不是它的软件名称
 
 
面试:cobbler(kickstart)服务组成:dhcp服务、tftp服务和http服务


1.3 环境准备
[root@m01 ~]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@m01 ~]# uname -r
2.6.32-696.el6.x86_64
[root@m01 ~]# uname -m 
x86_64


1.3.1.1 第一步:安装DHCP服务
1. 安装dhcp服务
yum  -y  install  dhcp
2. 编写dhcp服务配置文件
vim /etc/dhcp/dhcpd.conf
subnet 172.16.1.0 netmask  255.255.255.0{ #subnet子网
range 172.16.1.120  172.16.1.200;
option subnet-mask  255.255.255.0;
default-lease-time 21600; #租期
max-lease-time 43200;
next-server 172.16.1.61;
filename "/pxelinux.0"; #表示tftp服务器的根下
}
注意:以上红色部分都是不固定,都是可以根据实际情况更改的
# 注释
range 10.0.0.100 10.0.0.200;         # 可分配的起始IP-结束IP
option subnet-mask 255.255.255.0;    # 设定netmask
default-lease-time 21600;            # 设置默认的IP租用期限
max-lease-time 43200;                # 设置最大的IP租用期限
next-server 10.0.0.7;                # 告知客户端TFTP服务器的ip
filename "/pxelinux.0";              # 告知客户端从TFTP根目录下载pxelinux.0文件
 
#查看日志
tailf /var/log/messages
3. 开启服务
/etc/init.d/dhcpd start 
[root@linux-node1 ~]# netstat -tunlp|grep dhcp
udp        0      0 0.0.0.0:67                  0.0.0.0:*                               1573/dhcpd
4. 测试
创建一台新的虚拟机。如果第二块网卡不在一个LAN区段,就会导致如下错误
 
如果以上都是正确的会出现如下情况:
获取到IP地址证明你的DHCP正常
但是还要确认获取的地址信息正常,比如说IP地址是不是172.16.1.0网段,如果不是,后面就无法正常从tftp服务下载文件
 
 
关键字:TFTP open timeout
原因:TFTP超时
解决:有可能dhcp告诉你的地址不对;还有可能TFTP没装,或者TFTP没有启动,网络不同;防火墙,selinux.
1.3.1.2 第二步:安装TFTP服务----是一个简单的传输协议
1. 下载软件
yum -y install  tftp-server
2. 让xinetd.d来管理tftp服务
[root@test_web01 /]# cat /etc/xinetd.d/tftp 
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol.  The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4  
}
3. 开启tftp服务
/etc/init.d/xinetd start
[root@linux-node1 ~]# netstat -tunlp|grep 69
udp        0      0 0.0.0.0:69                  0.0.0.0:*                               1106/xinetd
 
原因:文件没有找到pxelinux.0文件
tftp工作目录/var/lib/tftpboot/
解决:见下面4
4. 下载syslinux软件,tftp的作用就是提供一个可以下载的启动文件"pexlinux.0" 但是该文件在syslinux软件中才有。
yum install -y syslinux
cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/
这样做了,在安装系统中的表现如图:
 
但是这样还是会报告一个问题:“Unable to locate configuration file(一个本地配置文件找不到)”。此时我们需要做如下操作:
接下来就找启动配置文件default
第一步:创建目录
mkdir  -p  /var/www/html/CentOS6.9
第二步:挂载
mount /dev/cdrom  /var/www/html/CentOS6.9 (关机重启后记得挂载)
mount: block device /dev/sr0 is write-protected, mounting read-only  
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       9.3G  1.5G  7.3G  17% /
tmpfs           238M     0  238M   0% /dev/shm
/dev/sda1       190M   35M  146M  19% /boot
/dev/sr0        3.7G  3.7G     0 100% /var/www/html/CentOS6.9
第三步:复制
cp -a /var/www/html/CentOS6.9/isolinux/* /var/lib/tftpboot/
第四步:创建目录
mkdir -p /var/lib/tftpboot/pxelinux.cfg
第五步:配置文件default
cp /var/www/html/CentOS6.9/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default   
如果不复制到该目录下还会出现如下问题:
 


以上配置都没有问题但是出现如下问题:
 
可能是因为selinux没关导致的
上面步骤操作完后,成功的结果是:
 
如果没有出现上面的结果,表明操作不成功,则重复之前的操作。


1.3.1.3 第三步HTTP配置
1. 下载软件
yum install -y httpd
2. 检查80端口是否被其他服务所占用(nginx等web服务除外)。有则干掉,没有则进行下一步
netstat -lntup|grep 80
3. /etc/init.d/httpd start
4. 服务端查看curl http://172.16.1.61/CentOS6.9/
5. 通过浏览器查看站点目录
 
6. 网络系统安装时。在配置时,网站一定要检查是否正确
 




1.4 总结
1. 安装DHCP,正常配置启动
2. 安装TFTP,正常配置启动
3. 安装HTTP,正常配置启动
4. 新建空白虚拟机。打开电源,然后从网络安装(默认是从硬盘启动的,但是硬盘没有数据的时候就会轮到网卡启动。这个顺序可以通过BIOS进行调整)
更详细的总结请看:http://blog.oldboyedu.com/autoinstall-kickstart/ 




1.5 kickstart语句
ks文件
 


1.5.1.1 编写/var/www/html/ks_config
# 最精简配置
default ks
prompt 0
label ks
  kernel vmlinuz
  append initrd=initrd.img ks=http://172.16.1.102/ks_config/CentOS-6.9-ks.cfg ksdevice=eth1


########append initrd=initrd.img ks=http://172.16.1.102/ks_config/CentOS-6.9-ks.cfg
#告诉安装程序ks.cfg文件在哪里  (注意IP地址根据实际情况进行变化)


########ksdevice=eth1
#ksdevice=eth0代表当客户端有多块网卡的时候,要实现自动化需要设置从eth1安装,不指定的话,安装的时候系统会让你选择,那就不叫全自动化了。


1.5.1.2 编写ks文件:/var/www/html/ks_config/CentOS-6.9-ks.cfg
# kickstart Configurator for CentOS 6.9 by yao zhang
install
url --url="http://172.16.1.102/CentOS6.9/"
text
lang en_US.UTF-8
keyboard us
zerombr
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
network --bootproto=dhcp --device=eth0 --onboot=yes --noipv6 --hostname=CentOS6
timezone --utc Asia/Shanghai
authconfig --enableshadow --passalgo=sha512
clearpart --all --initlabel
part /boot --fstype=ext4 --asprimary --size=200
part swap --size=1024
part / --fstype=ext4 --grow --asprimary --size=200
firstboot --disable
selinux --disabled
firewall --disabled
logging --level=info
reboot
%packages
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet


%post
# wget -O /tmp/optimization.sh http:/ 102/ks_config/optimization.sh &>/dev/null
# /bin/sh /tmp/optimization.sh/172.16.1.
/etc/init.d/network restart
%end                 




说明:
1. 在第一个红色部分的IP地址根据实际情况而定。(为什么是内网的IP地址?难道没有其他方法利用外网进行访问吗?因为刚配置新的主机,无法利用外网访问,所以就利用内网进行访问!)
2. 第二个共色部分的IP地址根据实际情况而定,与上保持一致。
3. 记住这两部分一定要在被的机器上curl一下,确保地址的无误!!
或者F:\运维39期\39期课堂笔记\第十一周笔记\自动化安装内的文件上传到服务端,并
tar xfP ks_config20170905.tar.gz


1.5.1.3 编写优化脚本
#!/bin/bash
##############################################################
# File Name: /var/www/html/ks_config/optimization.sh
# Version: V1.0
# Author: yao zhang
# Organization: www.zyops.com
# Created Time : 2015-12-03 15:23:08
# Description: Linux system initialization
##############################################################
. /etc/init.d/functions
Ip=172.16.1.102
Port=80
ConfigDir=ks_config
# Judge Http server is ok?
PortNum=`nmap $Ip  -p $Port 2>/dev/null|grep open|wc -l`
[ $PortNum -lt 1 ] && {
        echo "Http server is bad!"
        exit 1
}


# Defined result function
function Msg(){
        if [ $? -eq 0 ];then
          action "$1" /bin/true
        else
          action "$1" /bin/false
        fi
}


# Defined IP function
function ConfigIP(){
Suffix=`ifconfig eth1|awk -F "[ .]+" 'NR==2 {print $6}'`
cat >/etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.0.0.$Suffix
PREFIX=24
GATEWAY=10.0.0.254
DNS1=223.5.5.5
DNS2=223.6.6.6
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
EOF


function ConfigIP1(){
Suffix=`ifconfig eth1|awk -F "[ .]+" 'NR==2 {print $6}'`
cat >/etc/sysconfig/network-scripts/ifcfg-eth1 <<-END
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=172.16.1.$Suffix
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth1"
END
/etc/init.d/network restart  &>/dev/null
Msg "config eth1"
}


# Defined Yum source Functions
function yum(){
        YumDir=/etc/yum.repos.d
        [ -f "$YumDir/CentOS-Base.repo" ] && cp $YumDir/CentOS-Base.repo{,.ori}
        wget -O $YumDir/epel.repo http://$Ip:$Port/$ConfigDir/epel.repo &>/dev/null &&\
        Msg "YUM source"
}


# Defined Hide the system version number Functions
function HideVersion(){
        [ -f "/etc/issue" ] && >/etc/issue
        Msg "Hide issue"
        [ -f "/etc/issue.net" ] && > /etc/issue.net
        Msg "Hide issue.net"
}


        [ -f "/etc/security/limits.conf" ] && {
        echo '*  -  nofile  65535' >> /etc/security/limits.conf
        Msg "open files"
        }
}


# Defined Kernel parameters Functions
function kernel(){
        KernelDir=/etc
        [ -f "$KernelDir/sysctl.conf" ] && /bin/mv $KernelDir/sysctl.conf{,.ori}
        wget -O $KernelDir/sysctl.conf http://$Ip:$Port/$ConfigDir/sysctl.conf &>/dev/null
        Msg "Kernel config"
}


# Defined hosts file Functions
function hosts(){
        HostsDir=/etc
        [ -f "$HostsDir/hosts" ]  && /bin/mv $HostsDir/hosts{,.ori}
        wget -O $HostsDir/hosts  http://$Ip:$Port/$ConfigDir/hosts &>/dev/null
        Msg "Hosts config"
}


# Defined System Startup Services Functions
function boot(){
          do
           chkconfig $oldboy off
        done
        Msg "BOOT config"
}


# Defined Time Synchronization Functions
function Time(){
        echo "#time sync by zhangyao at $(date +%F)" >>/var/spool/cron/root
        echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/root
        Msg "Time Synchronization"
}


# Defined main Functions
function main(){
        ConfigIP
        ConfigIP1
        yum
        #AddUser
        #ssh
        HideVersion
        openfiles
        kernel
        hosts
        boot
        Time
}
main
# rz上传CentOS-Base.repo、epel.repo、sysctl.conf




说明:
1. 删除标红色的地方乃四处大坑。
第一个红色标记(Ip=172.16.1.102):指定另外一台配置的主机内网IP(为什么要用内网?难道不能使用外网吗?因为刚安装完系统,还没有指定eth0的地址,系统只配置eth1的地址,因此新机器只能通过内网来访问该局域网内的其他机器)
第二个红色标记(eth1):因为新装系统的主机只配置了内外IP地址,所以就根据内网IP来配置外网IP地址。
第三个红色标记(eth1):同上(内网可以不用配置)
第四个红色标记(/etc/init.d/network restart  &>/dev/null):配置好了网卡需要重新启动


1.5.1.4 准备脚本中对应的文件(/etc/hosts、/etc/sysctl.conf、/etc/yum.repos.d/CentOS-Base.repo、epel.repo)
根据自身情况准备。一般/etc/yum.repos.d/CentOS-Base.repo、epel.repo、/etc/sysctl.conf都是固定的。/etc/hosts可能会根据自身的情况有变化
1.6 安装Cobbler
1. 环境准备
[root@linux-node1 ~]# cat /etc/redhat-release
CentOS release 6.7 (Final)
[root@linux-node1 ~]# uname -r
2.6.32-573.el6.x86_64
[root@linux-node1 ~]# getenforce
Disabled
[root@linux-node1 ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[root@linux-node1 ~]# ifconfig eth0|awk -F "[ :]+" 'NR==2 {print $4}'
10.0.0.7
[root@linux-node1 ~]# hostname
linux-node1.example.com
# 配置阿里云的epel源
[root@linux-node1 ~]# wget -O /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-6.repo


2. 安装
yum -y install cobbler cobbler-web dhcp tftp-server pykickstart httpd
没有更多推荐了,返回首页