PXE自动化部署
PXE
- 预启动执行环境,基于tftp条件下完成基于网络的自动化部署软件
- 原理:
- 网卡利用自身的tftp 请求dhcp 服务器获取ip和一个pxelinux.0的地址
- 在给定的tftp目录下存有ks的配置文件,指定开机后从哪里获取内核、initrd和系统光盘包文件,
- 一般设定的网络地址下载系统文件然后执行安装,安装参数也会在填写的网络地址中存放,即ks.cfg文件
ks.cfg应答文件一般由对应系统可以生成,需要安装对应的包,文件中包含了安装需要的文件和执行前后脚本用户配置等
自动化部署centos7实战
条件
- selinux firewall :enable
- dhcpd,httpd:192.168.47.25 tftp-server:192.168.47.26 安装和配置完成
下载安装 yum -y install syslinux
配置yum源:
- mkdir /centos/7/isos/x86_64 -pv 在web服务器/var/www/html下创建文件夹,
- mount -o /dev/sr0 /var/www/html/centos/7/isos/x86_64/(光盘文件挂载到这里)
http://192.168.47.25/centos/7/isos/x86_64/,访问光盘看是否能够访问
制作应答文件
- yum install kicstart
- 利用cento7的kickstart 程序 执行system-config-kickstart 在图形界面下定制自己所需要的配置生成ks.cfg文件
- 应答文件需要指定yum源位置为前面web的光盘挂载的文件目录
- 将应答文件放置到网站根目录下,cp -p ks.cfg /var/www/html/
http://192.168.47.25/ks.cfg 查看是否能够访问
dhcp 配置
- 复制模板文件:cp /user/share/doc/dhcp-4.3.5/dhcpd.config.example,到/etc/dhcp/下改名成为配置文件dhcpd.config
- subnet中加入tftp的pxelinux下载地址:next-server 192.168.47.26 filename"pxelinux.0"
完成重启服务
tftp-server配置
- tftp目录文件夹: /var/lib/tftpboot
- 在tftp服务目录下创建一个pxelinux.cfg的文件夹:mkdir pxelinux.cfg( /var/lib/tftpboot/下)
- 复制 /usr/share/syslinux/{pxelinux.0,menu.c32} 到tftp服务器的文件目录下
- 将kernel和initrd.img 文件从光驱复制到文件目录下(同上面放置yum源一样挂载光驱然后拉取isolinux文件夹中的这两个文件)
- 将创建命名default后放在目录文件夹下pxelinux.cfg文件夹下
完成后文件目录树为:/var/lib/tftpboot/下 包含四个文件:initrd.img、vmlinux、menu.c32 、pxelinux.0 一个文件夹:pxelinux.cfg 内有一个default文件
配置安装菜单
- 编辑tftp目录下pxelinux.cfg的default
- defualt menu.c32
- timeout 20
- menu title install centos7
- label Install ins7
- kernel vmlinuz
append initrd=initrd.img ks=http://192.168.47.25/ks.cfg
最后检查
- dhcp服务正常保障能够获取ip
- tftp服务正常保障能够读取文件
- http服务正常保障能够下载yum源和应答文件
- 完成检查后新建一个centos7的虚拟机开机,正常的话就会加载菜单,2秒后执行安装程序
PXE自动化部署的更多相关文章
- Cobbler自动化部署最佳实践
第1章 Cobbler自动化部署最佳实践 运维自动化在生产环境中占据着举足轻重的地位,尤其是面对几百台,几千台甚至几万台的服务器时,仅仅是安装操作系统,如果不通过自动化来完成,根本是不可想象的. 面对 ...
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
- python+paramiko库+svn写的自动化部署脚本
第一篇博文 直接开门见山的说了. 这是件什么事?:每次部署都是复制本地的文件粘贴到服务器端,因为路径复杂,所以费时且手工容易出漏洞. 一直在想有什么办法可以解决这种,因为以前在微软的一个牛人同事做过一 ...
- ASP.NET MVC 从零开始 - 自动化部署(其二)
这篇文章是从我的 github 博客 http://lxconan.github.io 导入的. 这是这个系列的第五篇了,前四篇请参见: ASP.NET MVC 从零开始 – Create and R ...
- ASP.NET MVC 从零开始 - 自动化部署(其一)
本文是从我的 github 博客 http://lxconan.github.io 导入的. 这是这个系列的第四篇了,前三篇请参见: ASP.NET MVC 从零开始 – Create and Run ...
- 比Ansible更吊的自动化运维工具,自动化统一安装部署_自动化部署udeploy 1.0
新增功能: 2015-03-11 除pass(备份与更新)与start(启动服务)外,实现一切自动化. 注:pass与start设为业务类,由于各类业务不同,所以无法实现自动化.同类业务除外,如更新的 ...
- 比Ansible更吊的自动化运维工具,自动化统一安装部署自动化部署udeploy 1.0 版本发布
新增功能: 逻辑与业务分离,完美实现逻辑与业务分离,业务实现统一shell脚本开发,由框架统一调用. 并发多线程部署,不管多少台服务器,多少个服务,同时发起线程进行更新.部署.启动. 提高list规则 ...
- jenkins+git+maven搭建自动化部署项目环境
简介 折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.co ...
- 使用Cargo实现自动化部署
Cargo是一组帮助用户操作Web容器的工具,它能帮助用户实现自动化部署,而且它几乎支持所有的Web容器,如Tomcat.JBoss.Jetty和Glassfish.Cargo通过cargo-mave ...
随机推荐
- 数据中心网络架构的问题与演进 — SDN
目录 文章目录 目录 前文列表 OpenFlow 源起 从 OpenFlow 衍生 SDN 前文列表 <数据中心网络架构的问题与演进 - 传统路由交换技术与三层网络架构> <数据中心 ...
- pyqt5的QCompleter自动补全 使用模板
相关说明 使用QCompleter类,就可以实现自动补全功能,效果图如下: 对应的代码很简单 def init_lineedit(self): # 增加自动补全 self.completer = QC ...
- flask 之(三) --- 筛选|分页|过滤
筛选 查询数据筛选语法:类名.query.筛选符 .all( ):获取结果集:.count( ):获取查询到的对象数量 类名.query.filter(类名.属性.运算符('xxx')).all() ...
- P5019 铺设道路
#include<bits/stdc++.h> using namespace std; ]; ; int main() { cin>>n; ;i<=n;i++) cin ...
- IP划分
30.112.0.0 255.255.224.0/ 30.112.32.0 255.255.248.0 30.112.36.0 255.255.252.0 30.112.38.0 255.255. ...
- python 连接Oracle 的步骤
1. 安装 cx_Oracle pip install cx_Oracle 2.配置 oci.dll 与 oraociei11.dll 添加到环境变量path中 下载地址:百度搜索下载,Oracle ...
- Java中对比单继承与多继承的优劣,以及java的解决方案
继承是一种面相对象的基本特征之一,但在具体语言的语法设计中有两种方式:单继承和多继承. 所谓多继承是指一个子类可以拥有多个父类:单继承则是一个子类只拥有一个父类. 单继承与多继承的优劣: 多继承优点在 ...
- [Python3 练习] 011 利用异常解题
目录 函数式编程 Functional Programming 1. 简介 2. 函数 3. 匿名函数 3.1 lambda 表达式也称"匿名函数" 3.2 lambda 表达式的 ...
- python学习笔记四 (运算符重载和命名空间、类)
从以上代码中应该了解到: obj.attribute 查找的顺序: 从对象,类组成的树中,从下到上,从左到右到查找最近到attribute属性值,因为rec中存在name的属性,所以x.name可以 ...
- [BZOJ4180] 字符串计数
膜一发KsCla巨佬 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5 ...