CloudBoot

CloudBoot

CloudBoot 之 PXE引导安装系统原理

CloudBootSiffre 发表了文章 • 0 个评论 • 906 次浏览 • 2016-02-02 11:24 • 来自相关话题

看图就行了:
 



 
看图就行了:
 
PXE引导开机流程.png

 

ClooudBoot 之 RPM打包

CloudBootSiffre 发表了文章 • 0 个评论 • 845 次浏览 • 2016-01-26 17:22 • 来自相关话题

FPM打包工具

FPM的作者是:jordansissel
FPM的github:https://github.com/jordansissel/fpm
FPM功能简单说就是将一种类型的包转换成另一种类型。

1. 支持的源类型包dir 将目录打包成所需要的类型,可以用于源码编译安装的软件包
rpm 对rpm进行转换
gem 对rubygem包进行转换
python 将python模块打包成相应的类型



2. 支持的目标类型包rpm 转换为rpm包
deb 转换为deb包
solaris 转换为solaris包
puppet 转换为puppet模块
3. FPM安装fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。
# 安装ruby模块
yum -y install ruby rubygems ruby-devel
# 添加阿里云的Rubygems仓库,外国的源慢
gem sources -a http://mirrors.aliyun.com/rubygems/
# 移除原生的Ruby仓库
gem sources --remove http://rubygems.org/
# 安装fpm
gem install fpm
4. FPM参数详细使用见fpm –help

常用参数

-s 指定源类型
-t 指定目标类型,即想要制作为什么包
-n 指定包的名字
-v 指定包的版本号
-C 指定打包的相对路径 Change directory to here before searching forfiles
-d 指定依赖于哪些包
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 软件包安装完成之后所要运行的脚本;同--after-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove使用实例–实战定制nginx的RPM包

1. 安装nginxyum -y install pcre-devel openssl-devel
useradd nginx -M -s /sbin/nologin
tar xf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --prefix=/application/nginx-1.6.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
ln -s /application/nginx-1.6.2/ /application/nginx
2. 编写脚本[root@oldboy ~]# cd /server/scripts/
[root@oldboy scripts]# vim nginx_rpm.sh # 这是安装完rpm包要执行的脚本
#!/bin/bash
useradd nginx -M -s /sbin/nologin
ln -s /application/nginx-1.6.2/ /application/nginx
3. 打包# fpm -s dir -t rpm -n nginx -v 1.6.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.6.2/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# ll -h nginx-1.6.2-1.x86_64.rpm
-rw-r--r-- 1 root root 6.7M Nov 1 10:02 nginx-1.6.2-1.x86_64.rpm
4. 安装rpm包

安装rpm包的三种方法:
rpm命令安装
# rpm -ivh nginx-1.6.2-1.x86_64.rpm
error: Failed dependencies:
pcre-devel is needed by nginx-1.6.2-1.x86_64
openssl-devel is needed by nginx-1.6.2-1.x86_64
但会报如上依赖错误,需要先yum安装依赖才能安装rpm包。
yum命令安装rpm包
yum -y localinstall nginx-1.6.2-1.x86_64.rpm
这个命令会自动先安装rpm包的依赖,然后再安装rpm包。



搭建内网yum仓库YUM仓库搭建见这里:http://jcenter.idcos.com//article/28

注意事项

1. 路径问题# 相对路径
# fpm -s dir -t rpm -n nginx -v 1.6.2 .
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/client_body_temp
/conf/extra/dynamic_pools
/conf/extra/static_pools
…………
# 绝对路径
# fpm -s dir -t rpm -n nginx -v 1.6.2 /application/nginx-1.6.2/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/application/nginx-1.6.2/client_body_temp
/application/nginx-1.6.2/conf/extra/dynamic_pools
/application/nginx-1.6.2/conf/extra/static_pools
/application/nginx-1.6.2/conf/fastcgi.conf
/application/nginx-1.6.2/conf/fastcgi.conf.default
…………
使用rpm -qpl 命令可以查看rpm包的内容。
注:fpm类似tar打包一样,只是fpm打的包能够被yum命令识别而已。
2. 软链接问题# fpm -s dir -t rpm -n nginx -v 1.6.2 /application/nginx
no value for epoch is set, defaulting to nil {:level=>:warn}
File already exists, refusing to continue: nginx-1.6.2-1.x86_64.rpm {:level=>:fatal}
# 报错是因为当前目录存在同名的rpm包,可以使用-f参数强制覆盖。

# fpm -s dir -t rpm -n nginx -v 1.6.2 -f /application/nginx
no value for epoch is set, defaulting to nil {:level=>:warn}
Force flag given. Overwriting package at nginx-1.6.2-1.x86_64.rpm {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}
打包看似成功,但查看包的内容,只是这一个软链接文件。

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/application/nginx
原因:目录结尾的/问题,类似rm删除软链接目录
定制LNMP的RPM包思路

编译安装好nginx,mysql,php,此处有个问题,就是php的大部分依赖环境是通过yum安装的,但有一个libiconv-1.14.tar.gz包需要编译安装,安装时已经指定了安装目录,只需一同打包即可。

还有一个问题,就是mysql这个目录比较大,用fpm打包耗时长。平时我们有可能需要对nginx或php做优化,这样又得重新打包。因此我们可以将mysql分离出来,分别打包。只需在制作nginx+php的rpm包时添加mysql的依赖即可。# 参考命令
# fpm -s dir -t rpm -n web2 -v 1.1 \
--description 'lnmp.cms,bbs.blog' \
-d ‘libxslt-devel,nfs-utils,rpcbind,mysql,libmcrypt-devel,mhash,mhash-devel,mcrypt' \
--post-install /server/scripts/lnmp-init.sh \
/application /usr/local/libiconv/ /app/logs/ /data0/ /server/ 查看全部
FPM打包工具

FPM的作者是:jordansissel
FPM的github:https://github.com/jordansissel/fpm
FPM功能简单说就是将一种类型的包转换成另一种类型。

1. 支持的源类型包
dir 将目录打包成所需要的类型,可以用于源码编译安装的软件包
rpm 对rpm进行转换
gem 对rubygem包进行转换
python 将python模块打包成相应的类型



2. 支持的目标类型包
rpm 转换为rpm包
deb 转换为deb包
solaris 转换为solaris包
puppet 转换为puppet模块

3. FPM安装
fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。
# 安装ruby模块
yum -y install ruby rubygems ruby-devel
# 添加阿里云的Rubygems仓库,外国的源慢
gem sources -a http://mirrors.aliyun.com/rubygems/
# 移除原生的Ruby仓库
gem sources --remove http://rubygems.org/
# 安装fpm
gem install fpm

4. FPM参数
详细使用见fpm –help

常用参数

-s 指定源类型
-t 指定目标类型,即想要制作为什么包
-n 指定包的名字
-v 指定包的版本号
-C 指定打包的相对路径 Change directory to here before searching forfiles
-d 指定依赖于哪些包
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 软件包安装完成之后所要运行的脚本;同--after-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove
使用实例–实战定制nginx的RPM包

1. 安装nginx
yum -y install pcre-devel openssl-devel
useradd nginx -M -s /sbin/nologin
tar xf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --prefix=/application/nginx-1.6.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
ln -s /application/nginx-1.6.2/ /application/nginx

2. 编写脚本
[root@oldboy ~]# cd /server/scripts/
[root@oldboy scripts]# vim nginx_rpm.sh # 这是安装完rpm包要执行的脚本
#!/bin/bash
useradd nginx -M -s /sbin/nologin
ln -s /application/nginx-1.6.2/ /application/nginx

3. 打包
# fpm -s dir -t rpm -n nginx -v 1.6.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.6.2/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# ll -h nginx-1.6.2-1.x86_64.rpm
-rw-r--r-- 1 root root 6.7M Nov 1 10:02 nginx-1.6.2-1.x86_64.rpm

4. 安装rpm包

安装rpm包的三种方法:
  • rpm命令安装

# rpm -ivh nginx-1.6.2-1.x86_64.rpm
error: Failed dependencies:
pcre-devel is needed by nginx-1.6.2-1.x86_64
openssl-devel is needed by nginx-1.6.2-1.x86_64
但会报如上依赖错误,需要先yum安装依赖才能安装rpm包。

  • yum命令安装rpm包

yum -y localinstall nginx-1.6.2-1.x86_64.rpm
这个命令会自动先安装rpm包的依赖,然后再安装rpm包。





注意事项

1. 路径问题
# 相对路径
# fpm -s dir -t rpm -n nginx -v 1.6.2 .
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/client_body_temp
/conf/extra/dynamic_pools
/conf/extra/static_pools
…………
# 绝对路径
# fpm -s dir -t rpm -n nginx -v 1.6.2 /application/nginx-1.6.2/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/application/nginx-1.6.2/client_body_temp
/application/nginx-1.6.2/conf/extra/dynamic_pools
/application/nginx-1.6.2/conf/extra/static_pools
/application/nginx-1.6.2/conf/fastcgi.conf
/application/nginx-1.6.2/conf/fastcgi.conf.default
…………
使用rpm -qpl 命令可以查看rpm包的内容。
注:fpm类似tar打包一样,只是fpm打的包能够被yum命令识别而已。

2. 软链接问题
# fpm -s dir -t rpm -n nginx -v 1.6.2 /application/nginx
no value for epoch is set, defaulting to nil {:level=>:warn}
File already exists, refusing to continue: nginx-1.6.2-1.x86_64.rpm {:level=>:fatal}
# 报错是因为当前目录存在同名的rpm包,可以使用-f参数强制覆盖。

# fpm -s dir -t rpm -n nginx -v 1.6.2 -f /application/nginx
no value for epoch is set, defaulting to nil {:level=>:warn}
Force flag given. Overwriting package at nginx-1.6.2-1.x86_64.rpm {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}
打包看似成功,但查看包的内容,只是这一个软链接文件。

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/application/nginx
原因:目录结尾的/问题,类似rm删除软链接目录

定制LNMP的RPM包思路

编译安装好nginx,mysql,php,此处有个问题,就是php的大部分依赖环境是通过yum安装的,但有一个libiconv-1.14.tar.gz包需要编译安装,安装时已经指定了安装目录,只需一同打包即可。

还有一个问题,就是mysql这个目录比较大,用fpm打包耗时长。平时我们有可能需要对nginx或php做优化,这样又得重新打包。因此我们可以将mysql分离出来,分别打包。只需在制作nginx+php的rpm包时添加mysql的依赖即可。
# 参考命令
# fpm -s dir -t rpm -n web2 -v 1.1 \
--description 'lnmp.cms,bbs.blog' \
-d ‘libxslt-devel,nfs-utils,rpcbind,mysql,libmcrypt-devel,mhash,mhash-devel,mcrypt' \
--post-install /server/scripts/lnmp-init.sh \
/application /usr/local/libiconv/ /app/logs/ /data0/ /server/

ClloudBoot 之 YUM仓库搭建

CloudBootSiffre 发表了文章 • 0 个评论 • 1377 次浏览 • 2016-01-26 11:02 • 来自相关话题

YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源。网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。

相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性。有了局域网中的YUM源服务器,即便在Internet连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。
 
我们将针对以下两种方式进行讲解:







 
一、 自己制作或单独下载的RPM包
 
1. 创建yum仓库目录mkdir -p /application/yum/centos6.6/x86_64/2.上传rpm包到此目录,此目录下面还可以包括文件夹cd /application/yum/centos6.6/x86_64/
rz -y3.安装createrepo软件yum -y install createrepo4.初始化repodata索引文件createrepo -pdo /application/yum/centos6.6/x86_64/ /application/yum/centos6.6/x86_64/



5.提供yum服务# 可以用Apache或nginx提供web服务,但用Python的http模块更简单,适用于内网环境
cd /application/yum/centos6.6/x86_64/
python -m SimpleHTTPServer 80 &>/dev/null &
可以通过浏览器输入本机IP查看。6.添加新的rpm包
只下载软件不安装
yumdownloader pcre-devel openssl-devel
 每加入一个rpm包就要更新一下。
createrepo --update /application/yum/centos6.6/x86_64/7.平时yum安装软件时不删除安装包# cat /etc/yum.conf
keepcache=1
# 安装包存储目录
cachedir=/var/cache/yum/$basearch/$releasever
# /var/cache/yum/x86_64/6/base/packages8.客户端配置# cd /etc/yum.repos.d
vim Siffre.repo
[Siffre]
name=Server
baseurl=http://10.0.0.8
enable=1
gpgcheck=0
指定使用Siffre库
yum --enablerepo=Siffre --disablerepo=base,extras,updates,epel list
上面是临时使用内网yum源,想永久并简单使用yum -y install lrzsz命令,就需要修改配置文件将默认的repo文件关闭。
cd /etc/yum.repos.d/
vim CentOS-Base.repo
# 在每一个启动的源加上
# enabled=0 #改为1就启用,没有此参数也是启用。
[base]
…………
enabled=0
[updates]
…………
enabled=0
[extras]
…………
enabled=0
# 还有其他开启的仓库就使用这个办法关闭。二、镜像yum源

上面只是将自己制作的rpm包,放入yum源。但还有一种企业需求,说的更具体一点,平时学生上课yum安装软件都是从公网下载的,占用带宽,因此在学校里搭建一个内网yum服务器,但又考虑到学生回家也要使用yum安装软件,如果yum软件的数据库文件repodata不一样,就会有问题。因此我想到的解决方法就是直接使用公网yum源的repodata。

镜像同步公网yum源:
上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。http://mirrors.ustc.edu.cn/status/CentOS官方标准源:rsync://mirrors.ustc.edu.cn/centos/epel源:rsync://mirrors.ustc.edu.cn/epel/
 同步命令:
使用rsync同步yum源,为了节省带宽、磁盘和下载时间,我只同步了CentOS6的rpm包,这样所有的rpm包只占用了21G,全部同步需要300G左右。
同步base源,小技巧,我们安装系统的光盘镜像含有部分rpm包,大概3G,这些就不用重新下载。
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/
 epel源
/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/学生使用内网yum源方法:
可以自建一个内网dns,如果没有,可使用hosts解析
echo '192.168.0.200 mirrors.aliyun.com' >>/etc/hosts
结果展示
# du -sh yum_data
21G yum_data
# tree -L 3 yum_data/
yum_data/
├── centos
│ ├── 6
│ │ ├── extras
│ │ ├── os
│ │ └── updates
│ └── RPM-GPG-KEY-CentOS-6
├── epel
│ └── 6
│ └── x86_64
 
 
  查看全部
YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源。网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。

相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性。有了局域网中的YUM源服务器,即便在Internet连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。
 
我们将针对以下两种方式进行讲解:


screenshot.png


 
一、 自己制作或单独下载的RPM包
 
1. 创建yum仓库目录
mkdir -p /application/yum/centos6.6/x86_64/
2.上传rpm包到此目录,此目录下面还可以包括文件夹
cd /application/yum/centos6.6/x86_64/
rz -y
3.安装createrepo软件
yum -y install createrepo
4.初始化repodata索引文件
createrepo -pdo /application/yum/centos6.6/x86_64/ /application/yum/centos6.6/x86_64/



5.提供yum服务
# 可以用Apache或nginx提供web服务,但用Python的http模块更简单,适用于内网环境
cd /application/yum/centos6.6/x86_64/
python -m SimpleHTTPServer 80 &>/dev/null &
可以通过浏览器输入本机IP查看。
6.添加新的rpm包
  • 只下载软件不安装

yumdownloader pcre-devel openssl-devel

  •  每加入一个rpm包就要更新一下。

createrepo --update /application/yum/centos6.6/x86_64/
7.平时yum安装软件时不删除安装包
# cat /etc/yum.conf
keepcache=1
# 安装包存储目录
cachedir=/var/cache/yum/$basearch/$releasever
# /var/cache/yum/x86_64/6/base/packages
8.客户端配置
# cd /etc/yum.repos.d
vim Siffre.repo
[Siffre]
name=Server
baseurl=http://10.0.0.8
enable=1
gpgcheck=0

  • 指定使用Siffre库

yum --enablerepo=Siffre --disablerepo=base,extras,updates,epel list

  • 上面是临时使用内网yum源,想永久并简单使用yum -y install lrzsz命令,就需要修改配置文件将默认的repo文件关闭。

 cd /etc/yum.repos.d/
vim CentOS-Base.repo
# 在每一个启动的源加上
# enabled=0 #改为1就启用,没有此参数也是启用。
[base]
…………
enabled=0
[updates]
…………
enabled=0
[extras]
…………
enabled=0
# 还有其他开启的仓库就使用这个办法关闭。
二、镜像yum源

上面只是将自己制作的rpm包,放入yum源。但还有一种企业需求,说的更具体一点,平时学生上课yum安装软件都是从公网下载的,占用带宽,因此在学校里搭建一个内网yum服务器,但又考虑到学生回家也要使用yum安装软件,如果yum软件的数据库文件repodata不一样,就会有问题。因此我想到的解决方法就是直接使用公网yum源的repodata。

镜像同步公网yum源:
  • 上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。
  • http://mirrors.ustc.edu.cn/status/
  • CentOS官方标准源:rsync://mirrors.ustc.edu.cn/centos/
  • epel源:rsync://mirrors.ustc.edu.cn/epel/

 同步命令:
  • 使用rsync同步yum源,为了节省带宽、磁盘和下载时间,我只同步了CentOS6的rpm包,这样所有的rpm包只占用了21G,全部同步需要300G左右。

  • 同步base源,小技巧,我们安装系统的光盘镜像含有部分rpm包,大概3G,这些就不用重新下载。

/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/

  •  epel源

/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/
学生使用内网yum源方法:
  • 可以自建一个内网dns,如果没有,可使用hosts解析

echo '192.168.0.200 mirrors.aliyun.com' >>/etc/hosts

  • 结果展示

# du -sh yum_data
21G yum_data
# tree -L 3 yum_data/
yum_data/
├── centos
│ ├── 6
│ │ ├── extras
│ │ ├── os
│ │ └── updates
│ └── RPM-GPG-KEY-CentOS-6
├── epel
│ └── 6
│ └── x86_64

 
 
 

CloudBoot 之 Cobbler

CloudBootSiffre 发表了文章 • 0 个评论 • 1332 次浏览 • 2016-01-22 16:38 • 来自相关话题

一、Cobbler介绍

1.Cobbler

Cobbler是一个快速网络安装操作系统的服务软件。该工具使用Python开发,小巧轻便,使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP、DNS以及yum仓库,构造系统ISO镜像。

Cobbler命令行管理和Web界面管理,还提供了API接口,可以方便二次开发使用。

Cobbler 可以支持PXE启动, 操作系统重新安装, 以及虚拟化客户机创建,包括Xen, KVM or VMware. Cobbler透过koan程序以支持虚拟化客户机安装。Cobbler可以支持管理复杂网路环境,如创建在链路聚合以太网的桥接环境。

Cobbler提供以下服务集成:
PXE服务支持DHCP服务管理DNS服务管理电源管理KickStart服务支持Yum仓库管理

2. 使用和支持Cobbler的组织











3.系统支持

参见官网:https://cobbler.github.io/manuals/2.6.0/1/2_-_Distribution_Support.html
 
4. 常用架构






5.Cobbler工作流程






6.Cobbler模型






二、实验环境
Cobbler服务器系统:CentOS 6.7 64位 【VMWare】
 
IP地址:192.168.16.128

需要安装部署的Linux系统:
eth0(第一块网卡,用于外网)IP地址段:192.168.16.129-192.168.16.135
 
子网掩码:255.255.255.0
 
网关:192.168.16.1
 
DNS:8.8.8.8
 
所有服务器均支持PXE网络启动
 
三、Cobbler安装和部署
 
3.1 Cobbler安装和环境部署

3.1.1Cobbler环境准备

前提:
需要一个DVD或ISO文件的操作系统的分布;服务器有足够的本地磁盘可用空间在/var/www/cobbler解压缩DVD/ISO;服务器和客户端都有一个共同的IP网络;这个网络上的DHCP服务器是唯一的实例;在此网络上的客户端是支持PXE网络启动;

3.1.2 定义Yum源

对于CentOS本身源,可根据自己所在地选择离自己进的镜像源,比如mirrors.163.com或mirrors.sohu.com

相关配置文件: /etc/yum.repos.d/CentOS-Base.repo,采用网易的源cd /etc/yum.repos.d/

mkdir backup

mv *.repo ./backup

wget -c -O CentOS-Base.repo
http://mirrors.163.com/.help/CentOS6-Base-163.repo

yum list注:搭建本地Yum仓库,参考这里:http://jcenter.idcos.com/?/article/28
 
3.1.3 安装EPEL源

cobbler不在CentOS的基本源中,需要导入EPEL源升级软件包,确保epel-release包的版本为最新Centos5 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos5 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos6 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos6 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm
安装
rpm -Uvh 'http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm'

yum update (升级所有包,改变软件设置和系统设置,系统版本内核都升级)

yum upgrade (升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变)
检查是否安装
yum list|grep -E "^epel"

epel-release.noarch 6-8 installed3.1.4 关闭Selinux和iptables防火墙
关闭防火墙
#Cobbler会使用到好几个端口,为了简化,直接把iptables关闭
chkconfig ip6tables off
chkconfig iptables off
/etc/init.d/ip6tables stop
/etc/init.d/iptables stop
关闭Selinux
sed -i '/^SELINUX=/ s/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
重启系统生效
reboot3.2 Cobbler安装和配置

3.2.1安装Cobbler
安装Cobbler包(需要支持web,则安装cobbler-web)
yum install -y cobbler cobbler-web
安装Cobbler相关包
yum install -y tftp-server xinetd dhcp httpd rsync
安装运行Cobbler需要的软件包
yum install -y pykickstart debmirror python-ctypes cma注:
如果要部署debian/ubuntu系统,则需要debmirror软件包;想使用电源管理功能的话需要安装cman或fence-agents;如果需要管理DNS,这需要安装bind软件包;打开服务需要使用的端口如下:
udp ———> 69 ———> tftpudp ———> 53 ———> dnstcp ———> 80/443 ———> web【http】dhcp ———> 67 68
 
启动Cobbler
/etc/init.d/cobblerd start
启动完后,cobbler check命令检查错误【以下是常见错误】
cobbler checkThe following are potential configuration items that you may want to fix:
#错误指出我们的cobbler不应该是本地的IP地址,而是一个可以被解析的hostname或者IP

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.
#错误指出next_server的IP地址不应该是127.0.0.1的主机地址,而应该是一个真正的tftp服务器地址

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.
#错误是不一定要联网下载某些程序,而安装syslinux就可以;【安装完syslinux 问题依旧,可直接忽略...】

3 : 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.
#更改tftp和rsync由cobbler管理

4 : change 'disable' to 'no' in /etc/xinetd.d/rsync
#debmrror没有定义好,yum install 安装即可

5 : debmirror package is not installed, it will be required to manage debian deployments and repositories
#需要额外安装pykickstart

6 : ksvalidator was not found, install pykickstart
#cobbler安装完成后的管理员密码需要替换,因为所有安装后的密码都是一致的

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
#没有fencing设备,为可选的

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.3.2.2配置Cobbler

3.2.2.1设置HTTP服务
修改HTTP配置文件
vim /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1:80
启用wsgi模块【失败—可忽略】需要确认mod_wsgi已经正确安装,否则需要手动安装yum -y install mod_wsgi
rpm -qa |grep wsgi #检查
mod_wsgi-3.2-7.el6.x86_64
启用wsgi模块只需要取消/etc/httpd/conf.d/wsgi.conf文件中 LoadModule wsgi_module modules/mod_wsgi.so 行的注释
sed -i 's*#LoadModule*LoadModule*g' /etc/httpd/conf.d/wsgi.conf
cat /etc/httpd/conf.d/wsgi.conf #查看
LoadModule wsgi_module modules/mod_wsgi.so3.2.2.2配置tftp和rsync

修改rsync和tftp这两个服务的xinetd配置,只需修改rsync和tftp的配置文件,讲disable = yes 修改为 disable = no来开启tftp 和 rsync 服务的开机自启动sed -i 's/ disable = yes/ disable = no/' /etc/xinetd.d/tftp
sed -i 's/ disable = yes/ disable = no/' /etc/xinetd.d/rsync
/etc/init.d/xinetd restart3.2.2.3 配置cobbler主配置文件

在启动Cobbler服务之前,你需要修改一些配置文件。在修改每一个文件之前最好先备份下当前的文件。

Cobblerd的配置文件为/etc/cobbler/settings ,这个文件是YAML信息的格式文件。

根据需要修改 cobbler主配置文件: /etc/cobbler/settings

Server 和 Next_Server
server 选项设置IP用于为cobbler 服务器指定地址,请不要使用0.0.0.0,设置一个你希望和cobbler服务器通过http和tftp等协议链接的IP
sed -i 's/server: 127.0.0.1/server: 192.168.21.128/g' /etc/cobbler/settings
next_server选项是DHCP/PXE网络引导文件被下载的TFTP服务器的IP,它将和server设置为同一个IP
sed -i 's/next_server: 127.0.0.1/next_server: 192.168.21.128 /g' /etc/cobbler/settings
修改后,查看结果
grep -E "^server|next_server" /etc/cobbler/settings
next_server: 192.168.16.130
server: 192.168.16.1303.2.2.4 Cobbler管理rsync 和 dhcp服务

为了pxe的启动,需要一个DHCP服务器地址,并直接引导系统,它可以在网络中下载引导文件到TFTP的服务器,cobbler可以通过manage_dhcp的设置来进行管理,让cobbler来管理dhcp服务,在做自定义配置时,需要修改dhcp相关配置,以配合PXE启动用,编辑文件/etc/cobbler/settings 
manage_dhcp: 1 (注:默认为0,表示不进行管理dhcp服务,可以修改为1,对其进行管理。此为使cobbler管理dhcp也就是后面用于同步更新配置信息[cobbler sync]) 默认为0,不对rsync进行管理,可以修改为1 进行管理
sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/setting
修改后,查看结果
grep -E "^manage_dhcp|^manage_rsync" /etc/cobbler/settings
manage_dhcp: 1
manage_rsync: 13.2.3 配置cobbler的web环境
修改认证文件
grep "module = authn_configfile" /etc/cobbler/modules.conf
module = authn_configfile # 修改认证方式为密码文件类型
用户和密码
htdigest /etc/cobbler/users.digest "Cobbler" tech
#添加tech用户,提示输入2遍密码确认
Adding user tech in realm Cobbler
New password: 123123 # 这里我设置的密码是 123123
Re-type new password: 123123
生成cobbler安装系统root初始密码
openssl passwd -1 -salt 'random-phrase-here' ' 1234567890' # 该密码是用来登录通过cobbler安装后新机器的密码
$1$random-p$RkqDMTpuNlZZhJ7moLn3Q
将上面的加密串加入cobbler配置文件中
vim /etc/cobbler/settings
#修改为如下配置
default_password_crypted: " $1$random-p$RkqDMTpuNlZZhJ7moLn3Q."
查看
grep "default_password" /etc/cobbler/settings
default_password_crypted: " $1$random-p$RkqDMTpuNlZZhJ7moLn3Q."3.2.4 配置dhcp与cobbler相关服务
做任何修改操作前,先备份
cp /etc/cobbler/dhcp.template{,.bak}
ll /etc/cobbler/dhcp.template*
-rw-r--r-- 1 root root 2946 Jul 18 2014 /etc/cobbler/dhcp.template
-rw-r--r-- 1 root root 2946 Jul 7 17:01 /etc/cobbler/dhcp.template.bak
修改dhcp配置文件
vim /etc/cobbler/dhcp.template

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;# 需要修改192.168.16.0为自己网段
subnet 192.168.16.0 netmask 255.255.255.0 {
option routers 192.168.16.1; # 修改自己的路由
option domain-name-servers 8.8.8.8; # 域名服务器地址
option subnet-mask 255.255.255.0; # 子网掩码
range dynamic-bootp 192.168.16.140 192.168.16.250;#指定IP范围
filename "/pxelinux.0";
default-lease-time 21600; #缺省租约时间
max-lease-time 43200; #最大租约时间
next-server 192.168.16.130; #指定引导服务器【cobbler服务器IP】
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";
}
}
}其余部分维持现状,将上述内容拷贝到/etc/dhcp/dhpcd.conf里。
设置debmirror
#注释掉@dists和@arches的行
sed -i -e 's|@dists=.*|#@dists=|' /etc/debmirror.conf
sed -i -e 's|@arches=.*|#@arches=|' /etc/debmirror.conf
下载引导操作系统文件
#加载部分缺失的网络boot-loaders
cobbler get-loaders
检查Cobbler配置
cobbler check

The following are potential configuration items that you may want to fix:
#dhcpd没有运行
1 : service dhcpd is not running
#执行cobbler get-loaders 系统将自动下载loader程序
2 : 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.

Restart cobblerd and then run 'cobbler sync' to apply changes
DHCP启动成功后,执行sync同步得到如下结果表示成功
cobbler sync

task started: 2014-12-29_184104_sync
task started (id=Sync, time=Mon Dec 29 18:41:04 2014)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/images/CentOS6.6-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/images/CentOS6.6-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
trying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
copying: /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
copying: /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
trying hardlink /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying distros to tftpboot
copying files for distro: CentOS6.6-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS6.6-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CentOS6.6-x86_64/initrd.img
copying images
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS6.6-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CentOS6.6-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CentOS6.6-x86_64/initrd.img
Writing template files for CentOS6.6-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: CentOS6.6-x86_64
cleaning link caches
rendering Rsync files
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout: Shutting down dhcpd: [ OK ]
Starting dhcpd: [ OK ]

received on stderr:
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE *** → 出现此行提示,表示sync同步dhcp成功3.2.5重启cobbler和更新相关配置
重启服务
/etc/init.d/cobblerd restart
同步最新cobbler配置,它会根据配置自动修改dhcp,bind等服务,因此我称之为容器的原因
cobbler sync # 同步配置文件到dhcp服务器
启动相关服务并设置开机启动
chkconfig httpd on
chkconfig xinetd on
chkconfig cobblerd on
chkconfig dhcpd on
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/cobblerd restart
/etc/init.d/dhcpd restart
设置Cobbler相关服务启动脚本
 vim /etc/init.d/coobler

#!/bin/sh
# chkconfig: - 80 90
# description:cobbler
case $1 in
start)
/etc/init.d/httpd start
/etc/init.d/xinetd start
/etc/init.d/dhcpd start
/etc/init.d/cobblerd start
;;
stop)
/etc/init.d/httpd stop
/etc/init.d/xinetd stop
/etc/init.d/dhcpd stop
/etc/init.d/cobblerd stop
;;
restart)
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/dhcpd restart
/etc/init.d/cobblerd restart
;;
status)
/etc/init.d/httpd status
/etc/init.d/xinetd status
/etc/init.d/dhcpd status
/etc/init.d/cobblerd status
;;
sync)
cobbler sync
;;
*)
echo "Input error,please in put 'start|stop|restart|status|sync'!";
exit 2>&1 >/dev/null &
;;
esac
EOF
添加脚本执行权限
chmod +x /etc/rc.d/init.d/cobbler
添加开机启动
chkconfig cobbler on
重启
cobblerservice cobbler restart
挂载系统安装镜像到http服务器站点目录
上传ISO镜像到服务器的/server/iso/目录创建目录/var/www/html/os/{CentOS-6.6-x86_64}
mkdir -p /var/www/html/os/CentOS-6.6-x86_64 # 创建挂载目录
提示:如果是本地iso镜像则挂载用 loop方式; 如果是挂载光盘则直接挂载到指定目录即可
mount -t iso9660 -o loop /root/CentOS-6.6-x86_64-bin-DVD1.iso /var/www/html/os/CentOS-6.6-x86_64/

mount /dev/cdrom /var/www/html/os/CentOS-6.6-x86_64/
挂载完之后,要编辑开机自挂载项
vi /etc/fstab
/server/iso/CentOS-6.6-x86_64-bin-DVD1.iso /var/www/html/os/CentOS-6.6-x86_64 iso9660 defaults 0 0
或者
/dev/cdrom /var/www/html/os/CentOS-6.6-x86_64 iso9660 defaults 0 0备注:
iso9660使用df -T 查看设备 卸载:umount /var/www/html/os/CentOS-6.5-x86_64重复上面的操作,把自己需要安装的CentOS系统镜像文件都挂载到/var/www/html/os/目录下
 
例如: CentOS-5.10-x86_64-bin-DVD-1of2.iso CentOS-7.0-1406-x86_64-DVD.iso
 
 导入系统镜像到cobbler

从DVD中导入客户端的OS; 将自动设置了“x86_64”,并将其命名为CentOS6.6-x86_64,导入需要时间,可查看/var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/目录文件生成情况cobbler import --path=/var/www/html/os/CentOS-6.6-x86_64 --name=CentOS-6.6-x86_64 --arch=x86_64
命令格式:cobbler import --path=镜像路径 -- name=安装引导名 --arch=32位或64位
参数说明:
--name 为安装源定义一个名字
--arch 指定安装源是32位还是64位、ia64, 目前支持的选项有: x86│x86_64│ia64导入成功的结果如下:task started: 2014-12-28_214043_import
task started (id=Media import, time=Sun Dec 28 21:40:43 2014)
Found a candidate signature: breed=redhat, version=rhel6
Found a matching signature: breed=redhat, version=rhel6
Adding distros from path /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64:
creating new distro: CentOS-6.6-x86_64
trying symlink: /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64 -> /var/www/cobbler/links/CentOS-6.6-x86_64
creating new profile: CentOS-6.6-x86_64
associating repos
checking for rsync repo(s)
checking for rhn repo(s)
checking for yum repo(s)
sta将需要安装系统的服务器网卡启用 PXE,启动服务器从 PXE 引导 默认从本地硬盘引导,可以修改,建议还是保持此默认 rting descent into /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64 for CentOS-6.6-x86_64
processing repo at : /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64
need to process repo/comps: /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64
looking for /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/repodata
*** TASK COMPLETE ***四、安装系统
 
4.1 命令行安装
 
将需要安装系统的服务器网卡启用 PXE,启动服务器从 PXE 引导 默认从本地硬盘引导,可以修改,建议还是保持此默认 。

选择对应的系统即可安装:




 
4.2 Web安装
 
Cobbler web 界面是一个很好的前端,非常容易管理 Cobbler,可以添加和删除 system distro profile,可 以 查 看 、 编 辑 distros, profiles,subprofiles, systems, repos 、 kickstart 文件 。
 
浏览器访问登录页面: https://ip/cobbler_web ,输入用户名密码即可





 
登录后的页面





 
web 管理相对易于使用管理这里就不再赘述。 
 
====>Cobbler就介绍到这里了,详情可参见官方网站:https://cobbler.github.io/manuals/2.6.0/ 查看全部
一、Cobbler介绍

1.Cobbler

Cobbler是一个快速网络安装操作系统的服务软件。该工具使用Python开发,小巧轻便,使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP、DNS以及yum仓库,构造系统ISO镜像。

Cobbler命令行管理和Web界面管理,还提供了API接口,可以方便二次开发使用。

Cobbler 可以支持PXE启动, 操作系统重新安装, 以及虚拟化客户机创建,包括Xen, KVM or VMware. Cobbler透过koan程序以支持虚拟化客户机安装。Cobbler可以支持管理复杂网路环境,如创建在链路聚合以太网的桥接环境。

Cobbler提供以下服务集成:
  • PXE服务支持
  • DHCP服务管理
  • DNS服务管理
  • 电源管理
  • KickStart服务支持
  • Yum仓库管理


2. 使用和支持Cobbler的组织

1.png


2.png


3.系统支持

参见官网:https://cobbler.github.io/manuals/2.6.0/1/2_-_Distribution_Support.html
 
4. 常用架构

cobbler(1).jpg


5.Cobbler工作流程

流程(3).jpg


6.Cobbler模型

3.png


二、实验环境
  • Cobbler服务器系统:CentOS 6.7 64位 【VMWare】

 
  • IP地址:192.168.16.128


需要安装部署的Linux系统:
  • eth0(第一块网卡,用于外网)IP地址段:192.168.16.129-192.168.16.135

 
  • 子网掩码:255.255.255.0

 
  • 网关:192.168.16.1

 
  • DNS:8.8.8.8

 
  • 所有服务器均支持PXE网络启动

 
三、Cobbler安装和部署
 
3.1 Cobbler安装和环境部署

3.1.1Cobbler环境准备

前提:

  • 需要一个DVD或ISO文件的操作系统的分布;
  • 服务器有足够的本地磁盘可用空间在/var/www/cobbler解压缩DVD/ISO;
  • 服务器和客户端都有一个共同的IP网络;
  • 这个网络上的DHCP服务器是唯一的实例;
  • 在此网络上的客户端是支持PXE网络启动;


3.1.2 定义Yum源

对于CentOS本身源,可根据自己所在地选择离自己进的镜像源,比如mirrors.163.com或mirrors.sohu.com

相关配置文件: /etc/yum.repos.d/CentOS-Base.repo,采用网易的源
cd /etc/yum.repos.d/

mkdir backup

mv *.repo ./backup

wget -c -O CentOS-Base.repo
http://mirrors.163.com/.help/CentOS6-Base-163.repo

yum list
注:搭建本地Yum仓库,参考这里:http://jcenter.idcos.com/?/article/28
 
3.1.3 安装EPEL源

cobbler不在CentOS的基本源中,需要导入EPEL源升级软件包,确保epel-release包的版本为最新
Centos5 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos5 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos6 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos6 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

  • 安装

rpm -Uvh 'http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm'

yum update (升级所有包,改变软件设置和系统设置,系统版本内核都升级)

yum upgrade (升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变)

  • 检查是否安装

yum list|grep -E "^epel"

epel-release.noarch 6-8 installed
3.1.4 关闭Selinux和iptables防火墙
  • 关闭防火墙

#Cobbler会使用到好几个端口,为了简化,直接把iptables关闭
chkconfig ip6tables off
chkconfig iptables off
/etc/init.d/ip6tables stop
/etc/init.d/iptables stop

  • 关闭Selinux

sed -i '/^SELINUX=/ s/^SELINUX=.*/SELINUX=disabled/g'  /etc/selinux/config

  • 重启系统生效

reboot
3.2 Cobbler安装和配置

3.2.1安装Cobbler
  • 安装Cobbler包(需要支持web,则安装cobbler-web)

yum install -y cobbler cobbler-web

  • 安装Cobbler相关包

yum install -y tftp-server xinetd dhcp httpd rsync

  • 安装运行Cobbler需要的软件包

yum install -y pykickstart debmirror python-ctypes cma
注:
  • 如果要部署debian/ubuntu系统,则需要debmirror软件包;
  • 想使用电源管理功能的话需要安装cman或fence-agents;
  • 如果需要管理DNS,这需要安装bind软件包;
  • 打开服务需要使用的端口如下:

  1. udp ———> 69 ———> tftp
  2. udp ———> 53 ———> dns
  3. tcp ———> 80/443 ———> web【http】
  4. dhcp ———> 67 68

 
  • 启动Cobbler

/etc/init.d/cobblerd start

  • 启动完后,cobbler check命令检查错误【以下是常见错误】

cobbler check
The following are potential configuration items that you may want to fix:
#错误指出我们的cobbler不应该是本地的IP地址,而是一个可以被解析的hostname或者IP

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.
#错误指出next_server的IP地址不应该是127.0.0.1的主机地址,而应该是一个真正的tftp服务器地址

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.
#错误是不一定要联网下载某些程序,而安装syslinux就可以;【安装完syslinux 问题依旧,可直接忽略...】

3 : 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.
#更改tftp和rsync由cobbler管理

4 : change 'disable' to 'no' in /etc/xinetd.d/rsync
#debmrror没有定义好,yum install 安装即可

5 : debmirror package is not installed, it will be required to manage debian deployments and repositories
#需要额外安装pykickstart

6 : ksvalidator was not found, install pykickstart
#cobbler安装完成后的管理员密码需要替换,因为所有安装后的密码都是一致的

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
#没有fencing设备,为可选的

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.
3.2.2配置Cobbler

3.2.2.1设置HTTP服务
  • 修改HTTP配置文件

vim /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1:80

  • 启用wsgi模块【失败—可忽略】
  • 需要确认mod_wsgi已经正确安装,否则需要手动安装yum -y install mod_wsgi

rpm -qa |grep wsgi #检查
mod_wsgi-3.2-7.el6.x86_64

  • 启用wsgi模块只需要取消/etc/httpd/conf.d/wsgi.conf文件中 LoadModule wsgi_module modules/mod_wsgi.so 行的注释

sed -i 's*#LoadModule*LoadModule*g' /etc/httpd/conf.d/wsgi.conf
cat /etc/httpd/conf.d/wsgi.conf #查看
LoadModule wsgi_module modules/mod_wsgi.so
3.2.2.2配置tftp和rsync

修改rsync和tftp这两个服务的xinetd配置,只需修改rsync和tftp的配置文件,讲disable = yes 修改为 disable = no来开启tftp 和 rsync 服务的开机自启动
sed -i 's/ disable = yes/ disable = no/' /etc/xinetd.d/tftp
sed -i 's/ disable = yes/ disable = no/' /etc/xinetd.d/rsync
/etc/init.d/xinetd restart
3.2.2.3 配置cobbler主配置文件

在启动Cobbler服务之前,你需要修改一些配置文件。在修改每一个文件之前最好先备份下当前的文件。

Cobblerd的配置文件为/etc/cobbler/settings ,这个文件是YAML信息的格式文件。

根据需要修改 cobbler主配置文件: /etc/cobbler/settings

Server 和 Next_Server
  • server 选项设置IP用于为cobbler 服务器指定地址,请不要使用0.0.0.0,设置一个你希望和cobbler服务器通过http和tftp等协议链接的IP

sed -i 's/server: 127.0.0.1/server: 192.168.21.128/g' /etc/cobbler/settings

  • next_server选项是DHCP/PXE网络引导文件被下载的TFTP服务器的IP,它将和server设置为同一个IP

sed -i 's/next_server: 127.0.0.1/next_server: 192.168.21.128 /g' /etc/cobbler/settings

  • 修改后,查看结果

grep -E "^server|next_server" /etc/cobbler/settings
next_server: 192.168.16.130
server: 192.168.16.130
3.2.2.4 Cobbler管理rsync 和 dhcp服务

为了pxe的启动,需要一个DHCP服务器地址,并直接引导系统,它可以在网络中下载引导文件到TFTP的服务器,cobbler可以通过manage_dhcp的设置来进行管理,让cobbler来管理dhcp服务,在做自定义配置时,需要修改dhcp相关配置,以配合PXE启动用,编辑文件/etc/cobbler/settings 
  • manage_dhcp: 1 (注:默认为0,表示不进行管理dhcp服务,可以修改为1,对其进行管理。此为使cobbler管理dhcp也就是后面用于同步更新配置信息[cobbler sync]) 默认为0,不对rsync进行管理,可以修改为1 进行管理

sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/setting

  • 修改后,查看结果

grep -E "^manage_dhcp|^manage_rsync" /etc/cobbler/settings
manage_dhcp: 1
manage_rsync: 1
3.2.3 配置cobbler的web环境
  • 修改认证文件

grep "module = authn_configfile" /etc/cobbler/modules.conf
module = authn_configfile # 修改认证方式为密码文件类型

  • 用户和密码

htdigest /etc/cobbler/users.digest "Cobbler" tech
#添加tech用户,提示输入2遍密码确认
Adding user tech in realm Cobbler
New password: 123123 # 这里我设置的密码是 123123
Re-type new password: 123123

  • 生成cobbler安装系统root初始密码

openssl passwd -1 -salt 'random-phrase-here' ' 1234567890' # 该密码是用来登录通过cobbler安装后新机器的密码
$1$random-p$RkqDMTpuNlZZhJ7moLn3Q

  • 将上面的加密串加入cobbler配置文件中

vim /etc/cobbler/settings
#修改为如下配置
default_password_crypted: " $1$random-p$RkqDMTpuNlZZhJ7moLn3Q."

  • 查看

grep "default_password" /etc/cobbler/settings
default_password_crypted: " $1$random-p$RkqDMTpuNlZZhJ7moLn3Q."
3.2.4 配置dhcp与cobbler相关服务
  • 做任何修改操作前,先备份

cp /etc/cobbler/dhcp.template{,.bak}
ll /etc/cobbler/dhcp.template*
-rw-r--r-- 1 root root 2946 Jul 18 2014 /etc/cobbler/dhcp.template
-rw-r--r-- 1 root root 2946 Jul 7 17:01 /etc/cobbler/dhcp.template.bak

  • 修改dhcp配置文件

vim /etc/cobbler/dhcp.template 

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;# 需要修改192.168.16.0为自己网段
subnet 192.168.16.0 netmask 255.255.255.0 {
option routers 192.168.16.1; # 修改自己的路由
option domain-name-servers 8.8.8.8; # 域名服务器地址
option subnet-mask 255.255.255.0; # 子网掩码
range dynamic-bootp 192.168.16.140 192.168.16.250;#指定IP范围
filename "/pxelinux.0";
default-lease-time 21600; #缺省租约时间
max-lease-time 43200; #最大租约时间
next-server 192.168.16.130; #指定引导服务器【cobbler服务器IP】
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";
}
}
}
其余部分维持现状,将上述内容拷贝到/etc/dhcp/dhpcd.conf里。
  • 设置debmirror

#注释掉@dists和@arches的行
sed -i -e 's|@dists=.*|#@dists=|' /etc/debmirror.conf
sed -i -e 's|@arches=.*|#@arches=|' /etc/debmirror.conf

  • 下载引导操作系统文件

#加载部分缺失的网络boot-loaders
cobbler get-loaders

  • 检查Cobbler配置

cobbler check  

The following are potential configuration items that you may want to fix:
#dhcpd没有运行
1 : service dhcpd is not running
#执行cobbler get-loaders 系统将自动下载loader程序
2 : 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.

Restart cobblerd and then run 'cobbler sync' to apply changes

  • DHCP启动成功后,执行sync同步得到如下结果表示成功

cobbler sync

task started: 2014-12-29_184104_sync
task started (id=Sync, time=Mon Dec 29 18:41:04 2014)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/images/CentOS6.6-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/images/CentOS6.6-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
trying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
copying: /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
copying: /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
trying hardlink /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying distros to tftpboot
copying files for distro: CentOS6.6-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS6.6-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CentOS6.6-x86_64/initrd.img
copying images
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS6.6-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CentOS6.6-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CentOS6.6-x86_64/initrd.img
Writing template files for CentOS6.6-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: CentOS6.6-x86_64
cleaning link caches
rendering Rsync files
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout: Shutting down dhcpd: [ OK ]
Starting dhcpd: [ OK ]

received on stderr:
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE *** → 出现此行提示,表示sync同步dhcp成功
3.2.5重启cobbler和更新相关配置
  • 重启服务

/etc/init.d/cobblerd restart

  • 同步最新cobbler配置,它会根据配置自动修改dhcp,bind等服务,因此我称之为容器的原因

cobbler sync # 同步配置文件到dhcp服务器

  • 启动相关服务并设置开机启动

chkconfig httpd on
chkconfig xinetd on
chkconfig cobblerd on
chkconfig dhcpd on
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/cobblerd restart
/etc/init.d/dhcpd restart

  • 设置Cobbler相关服务启动脚本

 
vim /etc/init.d/coobler

#!/bin/sh
# chkconfig: - 80 90
# description:cobbler
case $1 in
start)
/etc/init.d/httpd start
/etc/init.d/xinetd start
/etc/init.d/dhcpd start
/etc/init.d/cobblerd start
;;
stop)
/etc/init.d/httpd stop
/etc/init.d/xinetd stop
/etc/init.d/dhcpd stop
/etc/init.d/cobblerd stop
;;
restart)
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/dhcpd restart
/etc/init.d/cobblerd restart
;;
status)
/etc/init.d/httpd status
/etc/init.d/xinetd status
/etc/init.d/dhcpd status
/etc/init.d/cobblerd status
;;
sync)
cobbler sync
;;
*)
echo "Input error,please in put 'start|stop|restart|status|sync'!";
exit 2>&1 >/dev/null &
;;
esac
EOF

  • 添加脚本执行权限

chmod +x /etc/rc.d/init.d/cobbler

  • 添加开机启动

chkconfig cobbler on

  • 重启

cobblerservice cobbler restart

  • 挂载系统安装镜像到http服务器站点目录

  1. 上传ISO镜像到服务器的/server/iso/目录
  2. 创建目录/var/www/html/os/{CentOS-6.6-x86_64}

mkdir -p /var/www/html/os/CentOS-6.6-x86_64    # 创建挂载目录
提示:如果是本地iso镜像则挂载用 loop方式; 如果是挂载光盘则直接挂载到指定目录即可
mount -t iso9660 -o loop /root/CentOS-6.6-x86_64-bin-DVD1.iso /var/www/html/os/CentOS-6.6-x86_64/

mount /dev/cdrom /var/www/html/os/CentOS-6.6-x86_64/
挂载完之后,要编辑开机自挂载项
vi /etc/fstab
/server/iso/CentOS-6.6-x86_64-bin-DVD1.iso /var/www/html/os/CentOS-6.6-x86_64 iso9660 defaults 0 0
或者
/dev/cdrom /var/www/html/os/CentOS-6.6-x86_64 iso9660 defaults 0 0
备注:
  • iso9660使用df -T 查看设备 卸载:umount /var/www/html/os/CentOS-6.5-x86_64
  • 重复上面的操作,把自己需要安装的CentOS系统镜像文件都挂载到/var/www/html/os/目录下

 
  • 例如: CentOS-5.10-x86_64-bin-DVD-1of2.iso CentOS-7.0-1406-x86_64-DVD.iso

 
 导入系统镜像到cobbler

从DVD中导入客户端的OS; 将自动设置了“x86_64”,并将其命名为CentOS6.6-x86_64,导入需要时间,可查看/var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/目录文件生成情况
cobbler import --path=/var/www/html/os/CentOS-6.6-x86_64 --name=CentOS-6.6-x86_64 --arch=x86_64 
命令格式:cobbler import --path=镜像路径 -- name=安装引导名 --arch=32位或64位
参数说明:
--name 为安装源定义一个名字
--arch 指定安装源是32位还是64位、ia64, 目前支持的选项有: x86│x86_64│ia64
导入成功的结果如下:
task started: 2014-12-28_214043_import
task started (id=Media import, time=Sun Dec 28 21:40:43 2014)
Found a candidate signature: breed=redhat, version=rhel6
Found a matching signature: breed=redhat, version=rhel6
Adding distros from path /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64:
creating new distro: CentOS-6.6-x86_64
trying symlink: /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64 -> /var/www/cobbler/links/CentOS-6.6-x86_64
creating new profile: CentOS-6.6-x86_64
associating repos
checking for rsync repo(s)
checking for rhn repo(s)
checking for yum repo(s)
sta将需要安装系统的服务器网卡启用 PXE,启动服务器从 PXE 引导 默认从本地硬盘引导,可以修改,建议还是保持此默认 rting descent into /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64 for CentOS-6.6-x86_64
processing repo at : /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64
need to process repo/comps: /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64
looking for /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/repodata
*** TASK COMPLETE ***
四、安装系统
 
4.1 命令行安装
 
将需要安装系统的服务器网卡启用 PXE,启动服务器从 PXE 引导 默认从本地硬盘引导,可以修改,建议还是保持此默认

选择对应的系统即可安装:
15.png

 
4.2 Web安装
 
Cobbler web 界面是一个很好的前端,非常容易管理 Cobbler,可以添加和删除 system distro profile,可 以 查 看 、 编 辑 distros, profiles,subprofiles, systems, repos 、 kickstart 文件 。
 
浏览器访问登录页面https://ip/cobbler_web ,输入用户名密码即可

screenshot_2.png

 
登录后的页面

screenshot.png

 
web 管理相对易于使用管理这里就不再赘述。 
 
====>Cobbler就介绍到这里了,详情可参见官方网站:https://cobbler.github.io/manuals/2.6.0/

CloudBoot 之 PXE+KickStart图形化

CloudBootSiffre 发表了文章 • 0 个评论 • 879 次浏览 • 2016-01-22 15:00 • 来自相关话题

1.安装软件yum install system-config-kickstart -y2.打开软件





界面如下:






操作如下:











进行分区操作:






























生成一个ks.cfg文件,位置在root用户家目录中:





使用http,需要将目录拷贝到/var/www/html/下,为方便,直接在/var/www/html/下建立文件夹11:





然后把root下的ks.cfg拷贝到/var/www/html/11中,查看





修改tftp文件
vim /var/lib/tftpboot/pxelinux.cfg/default

#default vesamenu.c32
default linux #需要修改
prompt 1 #需要修改
省略...

label linux

menu
label ^Install or upgrade an existing system

menu
default

kernel
vmlinuz

append
initrd=initrd.img ks=http://10.0.0.1/11/ks.cfg #添加ks.cfg路径

label vesa

menu
label Install system with ^basic video driver

kernel
vmlinuz

append
initrd=initrd.img nomodeset

label rescue

menu
label ^Rescue installed system

kernel
vmlinuz

append
initrd=initrd.img rescue

label local

menu
label Boot from ^local drive

localboot
0xffff

label memtest86

menu
label ^Memory test

kernel
memtest

append –
保存退出,重启服务
service xinted restart





如果要让linux在安装时提示选择界面安装,需要我们从光盘中的isolinux中拷贝Vesamenu.c32文件到/var/lib/tftpbopot/下:





拷贝
cp vesamenu.c32 /var/lib/tftpboot





修改tftp的配置文件,启用default vesamenu.c32




重启动服务
service xinetd restart
安装服务器





  查看全部
1.安装软件
yum install system-config-kickstart  -y
2.打开软件
图片_1.png


界面如下:

图片_2.png


操作如下:

图片_3.png


图片_4.png


进行分区操作:

图片_5.png


图片_6.png


图片_7.png


图片_8.png


图片_9.png


图片_10.png

  • 生成一个ks.cfg文件,位置在root用户家目录中:


图片_11.png

  • 使用http,需要将目录拷贝到/var/www/html/下,为方便,直接在/var/www/html/下建立文件夹11:


图片_12.png

  • 然后把root下的ks.cfg拷贝到/var/www/html/11中,查看


图片_13.png

  • 修改tftp文件

vim /var/lib/tftpboot/pxelinux.cfg/default

#default vesamenu.c32
default linux #需要修改
prompt 1 #需要修改
省略...

label linux

menu
label ^Install or upgrade an existing system

menu
default

kernel
vmlinuz

append
initrd=initrd.img ks=http://10.0.0.1/11/ks.cfg #添加ks.cfg路径

label vesa

menu
label Install system with ^basic video driver

kernel
vmlinuz

append
initrd=initrd.img nomodeset

label rescue

menu
label ^Rescue installed system

kernel
vmlinuz

append
initrd=initrd.img rescue

label local

menu
label Boot from ^local drive

localboot
0xffff

label memtest86

menu
label ^Memory test

kernel
memtest

append –

  • 保存退出,重启服务

service xinted restart





  • 如果要让linux在安装时提示选择界面安装,需要我们从光盘中的isolinux中拷贝Vesamenu.c32文件到/var/lib/tftpbopot/下:


图片_14.png

  • 拷贝

cp vesamenu.c32  /var/lib/tftpboot





  • 修改tftp的配置文件,启用default vesamenu.c32

图片_15.png

  • 重启动服务

service xinetd  restart

  • 安装服务器


图片_16.png

 

CloudBoot 之 PXE+Kickstart命令行

CloudBootSiffre 发表了文章 • 0 个评论 • 1391 次浏览 • 2016-01-22 14:04 • 来自相关话题

1.导言

从事Linux系统运维工作的朋友们,经常会遇到一些苦逼的工作:装物理机、装虚拟机。由于厂商比较多,各家公司根据不同的业务采购的机器也是各不相同的,而且还要在短时间内完成。以前我们基本用的都是PXE+KickStart和Cobbler的方式来装操作系统,今天主要是介绍PXE+KickStart,内容如下:

2. 通用基础知识

2.1 系统安装方式

光盘安装系统

U盘安装系统

网络安装系统

绝大多数的机器都是托管在运营商机房的,到现场去装系统成本太大,太浪费时间,目前都是采用远程的网络式装机:





 
2.2 DHCP的工作过程

对于学习 DHCP来说,很重要的一部分就是对于DHCP工作过程的理解。那么首先DHCP分为两个部分:一个是服务器端,另一个是客户端。所有客户机的IP地址设 定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP地址。

DHCP服务器提供三 种IP分配方式:自动分配(Automatic Allocation)、动态分配(Dynamic Allocation)和手动分配。自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用,而手动分配是由DHCP服务器管理员专门指定IP地址。

DHCP客户机在启动时,会搜寻网络中是否存在DHCP服务器。如果找到,则给 DHCP服务器发送一个请求。DHCP服务器接到请求后,为DHCP客户机选择TCP/IP配置的参数,并把这些参数发送给客户端。如果已配置冲突检测设置,则 DHCP 服务器在将租约中的地址提供给客户机之前会试用Ping测试作用域中每个可用地址的连通性。这可确保提供给客户的每个IP地址都没有被使用手动 TCP/IP配置的另一台非 DHCP 计算机使用。

根据客户端是否第一次登录网络,DHCP的工作形式会有所不同。客户端从DHCP服务器上获得IP地址的整个过程分为以下六个步骤:
寻找DHCP服务器

当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会介绍这个广播信息,但只有DHCP服务器才会做出响应。





分配IP地址
在网络中接收到DHCP discover发现信息的DHCP服务器都会做出相应,它从尚未分配的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含分配的IP地址和其他设置的DHCP offer提供信息。





接受IP地址
DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。





IP地址分配确认
当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的 服务器外,其他的DHCP服务器将收回曾经提供的IP地址。





重新登录
以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCPdiscover发现信息来请求新的IP地址。





 
1.客户端重新登录





 
2.如果客户端DHCP request 内的IP地址在服务器端没有被使用,DHCP服务器回复DHCP ACK继续使用IP





 
3.如果客户端DHCP request 内的IP地址在服务器端已被使用,DHCP服务器回复DHCP NACK告诉客户端IP已被使用





 
4.客户端重新开始DHCP流程





 
5.更新租约
DHCP 服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。





 
2.3 TFTP简介

TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。下面就详细介绍一下linux服务器端tftp-server的配置。
安装tftp服务器
 
需要安装xinetd、tftp和tftp-server 3个软件

1)如果能上网,通过yum安装:sudo yum install xinetd
sudo yum install tftp
sudo yum install tftp-server2)如果不能上网,可以直接安装提供的rpm包:sudo rpm -ivh xinetd-<?xml:namespace prefix = st1 />2.3.14-18.fc9.i386.rpm
sudo rpm -ivh tftp-0.48-3.fc9.i386.rpm
sudo rpm -ivh tftp-server-0.48-3.fc9.i386.rpm
配置tftp服务器 修改/etc/xinetd.d/tftp文件,将其中的disable=yes改为disable=no
 主要是设置TFTP服务器的根目录,开启服务。修改后的文件如下:
service tftp
{ socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /home/mike/tftpboot -c
disable =no
per_source =11
cps =100 2
flags =IPv4
}
说明:修改项server_args= -s <path> -c,其中<path>处可以改为你的tftp-server的根目录,参数-s指定chroot,-c指定了可以创建文件。
启动tftp服务器并关闭防火墙
/etc/init.d/iptables stop //关闭防火墙
sudo /sbin/service xinetd start
或service xinetd restart
/etc/init.d/xinetd start
看到启动[OK]就可以了
查看tftp服务是否开启
netstat -a | grep tftp
显示结果为
udp 0 0 *:tftp *:*
表明服务已经开启,就表明tftp配置成功了。
tftp使用 -复制一个文件到tftp服务器目录,然后在主机启动tftp软件,进行简单测试。
tftp 192.168.1.2
tftp>get <download file>
tftp>put <upload file>
tftp>q
-tftp命令用法如下
tftp your-ip-address
【进入TFTP操作】
connect:连接到远程tftp服务器
mode:文件传输模式
put:上传文件
get:下载文件
quit:退出
verbose:显示详细的处理信息
tarce:显示包路径
status:显示当前状态信息
binary:二进制传输模式
ascii:ascii传送模式
rexmt:设置包传输的超时时间
timeout:设置重传的超时时间
help:帮助信息
?:帮助信息
Busybox中tftp命令的用法命令格式为:
tftp [option] ... host [port]
如果要下载或上传文件的话是一定要用这些option的。成都明诚科技。
-g表示下载文件(get)
-p表示上传文件(put)
-l表示本地文件名(local file)
-r表示远程主机的文件名(remote file)
例如,要从远程主机192.168.1.2上下载embedexpert,则应输入以下命令
tftp -g -r embedexpert 192.168.1.2




2.4 什么是PXE?

预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)是让计算机通过网卡独立地使用数据设备(如硬盘)或者安装操作系统。PXE当初是作为Intel的有线管理体系的一部分,Intel和 Systemsoft于1999年9月20日公布其规格(版本2.1)。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。PXE 客户机(client)这个术语是指机器在PXE启动过程中的角色。一个PXE 客户机(client)可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。

客户机的固件为接受到可用的PXE启动服务器,要在网络中尝试找出PXE重定向服务(DHCP代理)。在分析返回的包后,固件会向合适的启动服务器询问网络自检程序(NBP)的路径,并且通过TFTP协议下载到电脑的内存中,有可能会去校验它,最后执行它。当只有全部的PXE 客户机(client)只使用一个NBP时,全部的PXE 客户机可能会被指定是用BOOTP协议,从而不需要DHCP代理,但是仍然需要TFTP启动服务。

PXE 协议大致上结合了DHCP和TFTP,虽然都有在两者上面有改进。DHCP用于查找合适的启动服务器,TFTP用于下载初始引导程序和附加文件。为了开始一个PXE自检会话,PXE固件广播一个带有明确的PXE选项DHCPDISCOVER包(扩展DHCPDISCOVER)到67/UDP端口(DHCP服务器端口)。PXE选项是PXE固件有PXE能力的鉴定,但是会被一般的DHCP服务忽略。当固件受到从这样的服务受到DHCPOFFER包时,它会通过要求其提供配置信息来自我配置。

当 PXE 重定向服务 (DHCP代理) 收到一个 扩展DHCPDISCOVER 包时,它会通过发送一个带有明确的PXE选项DHCPDISCOVER包到PXE客户机的68/UDP端口 (DHCP 客户机端口)来回答。 一个扩展DHCPDISCOVER包主要包含:
一个PXE发现控制领域,以决定是使用多播,广播(网路)或单播来联系PXE启动服务器。 一个列出可用的PXE启动服务器类型的地址表。 一个代表每个一个PXE启动服务器类型的条目单。 一个带有带有提示用户按下哪一个键来看到启动菜单的PXE启动菜单。一个超过多长时间就启动第一启动菜单的超时数值。

一个DHCP代理服务可能在相同的主机上运行一个标准的DHCP服务器。尽管两个服务不可以共享67/UDP 端口,DHCP代理服务在4011/UDP 端口上运行,要求从客户端来的DHCPDISCOVER 包变成DHCPREQUEST 包。标准DHCP服务在其发送的DHCPOFFER 包中加入特殊的PXE 选项组合,这样PXE客户端知道可以在同一个主机的 4011/UDP 端口找到一个DHCP代理服务。

和一个正在启动系统的启动服务联系必须有一个IP地址(可能来自DHCP服务)。通过多播或单播一个带有特殊的PXE选项的 DHCPREQUEST 包(扩展DHCPREQUEST包)到 4011/UDP端口,或者广播(网路)这种包到 67/UDP端口。这种包包含有PXE启动服务类型和PXE启动层,一个守护进程允许运行多个启动服务类型。 一个扩展 DHCPREQUEST包可能是一个DHCPINFORM包。
 
简单总结一下,
PXE Client发送广播包请求DHCP分配IP地址DHCP Server回复请求,给出IP地址以及Boot Server的地址PXE下载引导文件执行引导程序
 
注:kickstart不在这里详述,参考地址:http://linux.vbird.org/linux_enterprise/0120installation.php

3.PXE + Kickstart自动化安装操作系统实践

前提准备:
DHCP服务器
 
TFTP服务器
 
KickStart所生成的ks.cfg配置文件
 
一台存放系统安装文件的服务器,如NFS、HTTP、或FTP服务器
 
一个带有PXE支持网卡的主机。

3.1 查看当前操作系统版本cat /etc/redhat-release
CentOS release 6.7 (Final)3.2 准备环境
可以连接网络关闭防火墙
/etc/init.d/iptables stop
关闭selinux,临时关闭会不生效,建议修改配置文件后,重启操作系统
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config3.3 安装DHCP服务
安装DHCP
yum -y install dhcp
修改配置文件
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #拷贝dhcp配置文件#修改配置文件/etc/dhcpd/dhcpd.conf;添加如下
ddns-update-style none;
ignore client-updates;
subnet 10.0.0.0 netmask 255.255.255.0 {
range
10.0.0.100 10.0.0.200;
option
subnet-mask 255.255.255.0;
option
domain-name “internal.example.org”;
default-lease-time 600;
max-lease-time 7200;
next-server
10.0.0.3;
filename
“/pxelinux.0”;
}修改/etc/sysconfig/dhcpd配置文件,表示dhcp将只在eth0网络接口上提供DHCP服务cat /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth0
启动dhcpd服务
/etc/init.d/dhcpd startDHCP注释:
ddns-update-style none; #设置与DHCP服务相关联的DNS数据动态更新模式,实际的DHCP应用中很少用改参数,设置为none即可。
ignore client-updates; #不允许客户机更新DNS记录
subnet 172.16.10.0 netmask
255.255.255.0 {
range 172.16.10.100 172.16.10.200; #可分配的起始IP-结束IP
option subnet-mask 255.255.255.0; #设置netmask
default-lease-time 21600; #设置默认的IP租用期限
max-lease-time 43200; #设置最大的IP租用期限
next-server 172.16.10.20; #告知客户端TFTP服务器ip
filename “/pxelinux.0”; #告知客户端从TFTP根目录下载pexlinux.0
}3.4 安装TFTP服务
安装tftp-server服务
yum -y install tftp-server
修改配置文件/etc/xinetd.d/tftp disabled修改为no
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
}
启动服务xinetd代理服务
/etc/init.d/xinetd start
3.6 PXE配置引导

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。如果没有找到pxelinux.0这个文件,可以安装一下。
安装
syslinuxyum -y install syslinux
复制配置文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp -a /var/www/html/centos6/isolinux/ * /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/centos6/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
添加如下,配置文件
cat /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 0
label ks
kernel
vmlinuz
append
initrd=initrd.img ks=http://10.0.0.3/config/Centos6-ks.cfg ksdevice=eth0
# ksdevice=eth0代表当客户端有多块网卡的时候,要实现自动化需要设置从eth0安装,不指定的话,安装的时候系统会让你选择,那就不叫全自动化了。
PXE配置文件default解析
cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 #默认加载一个菜单
#prompt 1 #开启会显示命令行’boot:’ 提示符。prompt值为0时则不提示,将会直接启动’default’参数中指定的内容
timeout 600#timeout时间是引导等待用户手动选择的时间,设为1可直接引导,单位为1/10秒。
display boot.msg
#菜单背景图片、标题、颜色。
menu background splash.jpg
menu title Welcome to CentOS 6.7!
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
#lable指定在boot:提示符下输入的关键字,比如boot:linux[ENTER],这个会启动lable
linux下标记的kernel和initrd.img文件
label linux#一个标签就是前面图片的一行选项。
menu
label ^Install or upgrade an existing system
menu
default
kernel
vmlinuz #指定要启动的内核。同样要注意路径,默认是/tftpboot目录
append
initrd=initrd.img #指定追加给内核的参数,initrd.img是一个最小的linux系统
label vesa
menu
label Install system with ^basic video driver
kernel
vmlinuz
append
initrd=initrd.img nomodeset
label rescue
menu
label ^Rescue installed system
kernel
vmlinuz
append
initrd=initrd.img rescue
label local
menu
label Boot from ^local drive
localboot
0xffff
label memtest86
menu
label ^Memory test
kernel
memtest
append –
上传kscfg配置文件
grub-crypt #配置root使用密码,加入修改Centos6-ks.cfg文件Password:
Retype password:
$6$006TOzR9rk18CPQw$t/xTyZEw60OWqAho.J1oj3PRo2ib93blCIlVuFCPc6/fuCADB02LKHfNV4x7jtpNAX98TK3K8Zpem8Qkv92111
创建配置文件及优化脚本站点目录
mkdir /var/www/html/config
查看文件
cat /var/www/html/config/Centos6-ks.cfginstall #安装
url –url=”http://10.0.0.3/centos6″ #系统文件地址,这里使用http
text #文本界面安装
lang en_US.UTF-8 #语言
keyboard us #键盘
zerombr #清空mbr
bootloader –location=mbr –driveorder=sda
–append=”crashkernel=auto rhgb quiet” #引导加载程序参数
network –bootproto=dhcp –device=eth1
–onboot=yes –noipv6 –hostname=CentOS6 #eth1网络配置
timezone –utc Asia/Shanghai #时区
authconfig –enableshadow –passalgo=sha512 #验证配置
rootpw–iscrypted $6$006TOzR9rk18CPQw$t/xTyZEw60OWqAho.J1oj3PRo2ib93blCIlVuFCPc6/fuCADB02LKHfNV4x7jtpNAX98TK3K8Zpem8Qkv92111
#root密码,使用grub-crypt生成
clearpart –all –initlabel #清空分区
part /boot –fstype=ext4 –asprimary –size=100 #分区/boot
100M
part swap –size=1500 #分区swap
1500M
part / –fstype=ext4 –grow –asprimary
–size=200 #分区/ 所有
firstboot –disable #关闭一系列服务
selinux –disabled
firewall –disabled
logging –level=info #日志记录等级info级别
reboot #重启
%packages #包组–软件名
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%post #安装完执行脚本
wget -O /tmp/optimization.sh http://10.0.0.3/config/optimization.sh
&>/dev/null #下载脚本,然后执行
/bin/sh /tmp/optimization.sh #执行脚本
%end


3.7 安装服务器

需要和pxe服务器内网同网段,开机通过dhcp自动获取,然后自动开始装机





















===>到此,PXE+KickStart安装方式就结束了,图形化安装参考这里http://jcenter.idcos.com/?/article/26,是不是很麻烦呢? 查看全部
1.导言

从事Linux系统运维工作的朋友们,经常会遇到一些苦逼的工作:装物理机、装虚拟机。由于厂商比较多,各家公司根据不同的业务采购的机器也是各不相同的,而且还要在短时间内完成。以前我们基本用的都是PXE+KickStart和Cobbler的方式来装操作系统,今天主要是介绍PXE+KickStart,内容如下:

2. 通用基础知识

2.1 系统安装方式

光盘安装系统

U盘安装系统

网络安装系统

绝大多数的机器都是托管在运营商机房的,到现场去装系统成本太大,太浪费时间,目前都是采用远程的网络式装机:

1.png

 
2.2 DHCP的工作过程

对于学习 DHCP来说,很重要的一部分就是对于DHCP工作过程的理解。那么首先DHCP分为两个部分:一个是服务器端,另一个是客户端。所有客户机的IP地址设 定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP地址。

DHCP服务器提供三 种IP分配方式:自动分配(Automatic Allocation)、动态分配(Dynamic Allocation)和手动分配。自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用,而手动分配是由DHCP服务器管理员专门指定IP地址。

DHCP客户机在启动时,会搜寻网络中是否存在DHCP服务器。如果找到,则给 DHCP服务器发送一个请求。DHCP服务器接到请求后,为DHCP客户机选择TCP/IP配置的参数,并把这些参数发送给客户端。如果已配置冲突检测设置,则 DHCP 服务器在将租约中的地址提供给客户机之前会试用Ping测试作用域中每个可用地址的连通性。这可确保提供给客户的每个IP地址都没有被使用手动 TCP/IP配置的另一台非 DHCP 计算机使用。

根据客户端是否第一次登录网络,DHCP的工作形式会有所不同。客户端从DHCP服务器上获得IP地址的整个过程分为以下六个步骤:
  • 寻找DHCP服务器


当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会介绍这个广播信息,但只有DHCP服务器才会做出响应。

2.png

  • 分配IP地址

在网络中接收到DHCP discover发现信息的DHCP服务器都会做出相应,它从尚未分配的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含分配的IP地址和其他设置的DHCP offer提供信息。

3.png

  • 接受IP地址

DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。

4.png

  • IP地址分配确认

当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的 服务器外,其他的DHCP服务器将收回曾经提供的IP地址。

5.png

  • 重新登录

以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCPdiscover发现信息来请求新的IP地址。

6.png

 
1.客户端重新登录

6.png

 
2.如果客户端DHCP request 内的IP地址在服务器端没有被使用,DHCP服务器回复DHCP ACK继续使用IP

7.png

 
3.如果客户端DHCP request 内的IP地址在服务器端已被使用,DHCP服务器回复DHCP NACK告诉客户端IP已被使用

8.png

 
4.客户端重新开始DHCP流程

9.png

 
5.更新租约
DHCP 服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

10.png

 
2.3 TFTP简介

TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。下面就详细介绍一下linux服务器端tftp-server的配置。
  • 安装tftp服务器

 
  • 需要安装xinetd、tftp和tftp-server 3个软件


1)如果能上网,通过yum安装:
sudo yum install xinetd
sudo yum install tftp
sudo yum install tftp-server
2)如果不能上网,可以直接安装提供的rpm包:
sudo rpm -ivh xinetd-<?xml:namespace prefix = st1 />2.3.14-18.fc9.i386.rpm
sudo rpm -ivh tftp-0.48-3.fc9.i386.rpm
sudo rpm -ivh tftp-server-0.48-3.fc9.i386.rpm

  • 配置tftp服务器 修改/etc/xinetd.d/tftp文件,将其中的disable=yes改为disable=no

 
主要是设置TFTP服务器的根目录,开启服务。修改后的文件如下:
service tftp
{ socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /home/mike/tftpboot -c
disable =no
per_source =11
cps =100 2
flags =IPv4
}
说明:修改项server_args= -s <path> -c,其中<path>处可以改为你的tftp-server的根目录,参数-s指定chroot,-c指定了可以创建文件。

  • 启动tftp服务器并关闭防火墙

/etc/init.d/iptables stop //关闭防火墙
sudo /sbin/service xinetd start
或service xinetd restart
/etc/init.d/xinetd start
看到启动[OK]就可以了

  • 查看tftp服务是否开启

netstat -a | grep tftp
显示结果为
udp 0 0 *:tftp *:*
表明服务已经开启,就表明tftp配置成功了。

  • tftp使用 -复制一个文件到tftp服务器目录,然后在主机启动tftp软件,进行简单测试。

tftp 192.168.1.2
tftp>get <download file>
tftp>put <upload file>
tftp>q

  • -tftp命令用法如下

tftp your-ip-address
【进入TFTP操作】
connect:连接到远程tftp服务器
mode:文件传输模式
put:上传文件
get:下载文件
quit:退出
verbose:显示详细的处理信息
tarce:显示包路径
status:显示当前状态信息
binary:二进制传输模式
ascii:ascii传送模式
rexmt:设置包传输的超时时间
timeout:设置重传的超时时间
help:帮助信息
?:帮助信息

  • Busybox中tftp命令的用法命令格式为:

tftp [option] ... host [port]
如果要下载或上传文件的话是一定要用这些option的。成都明诚科技。
-g表示下载文件(get)
-p表示上传文件(put)
-l表示本地文件名(local file)
-r表示远程主机的文件名(remote file)
例如,要从远程主机192.168.1.2上下载embedexpert,则应输入以下命令
tftp -g -r embedexpert 192.168.1.2




2.4 什么是PXE?

预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)是让计算机通过网卡独立地使用数据设备(如硬盘)或者安装操作系统。PXE当初是作为Intel的有线管理体系的一部分,Intel和 Systemsoft于1999年9月20日公布其规格(版本2.1)。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。PXE 客户机(client)这个术语是指机器在PXE启动过程中的角色。一个PXE 客户机(client)可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。

客户机的固件为接受到可用的PXE启动服务器,要在网络中尝试找出PXE重定向服务(DHCP代理)。在分析返回的包后,固件会向合适的启动服务器询问网络自检程序(NBP)的路径,并且通过TFTP协议下载到电脑的内存中,有可能会去校验它,最后执行它。当只有全部的PXE 客户机(client)只使用一个NBP时,全部的PXE 客户机可能会被指定是用BOOTP协议,从而不需要DHCP代理,但是仍然需要TFTP启动服务。

PXE 协议大致上结合了DHCP和TFTP,虽然都有在两者上面有改进。DHCP用于查找合适的启动服务器,TFTP用于下载初始引导程序和附加文件。为了开始一个PXE自检会话,PXE固件广播一个带有明确的PXE选项DHCPDISCOVER包(扩展DHCPDISCOVER)到67/UDP端口(DHCP服务器端口)。PXE选项是PXE固件有PXE能力的鉴定,但是会被一般的DHCP服务忽略。当固件受到从这样的服务受到DHCPOFFER包时,它会通过要求其提供配置信息来自我配置。

当 PXE 重定向服务 (DHCP代理) 收到一个 扩展DHCPDISCOVER 包时,它会通过发送一个带有明确的PXE选项DHCPDISCOVER包到PXE客户机的68/UDP端口 (DHCP 客户机端口)来回答。 一个扩展DHCPDISCOVER包主要包含:
  • 一个PXE发现控制领域,以决定是使用多播,广播(网路)或单播来联系PXE启动服务器。 
  • 一个列出可用的PXE启动服务器类型的地址表。 
  • 一个代表每个一个PXE启动服务器类型的条目单。 
  • 一个带有带有提示用户按下哪一个键来看到启动菜单的PXE启动菜单。
  • 一个超过多长时间就启动第一启动菜单的超时数值。


一个DHCP代理服务可能在相同的主机上运行一个标准的DHCP服务器。尽管两个服务不可以共享67/UDP 端口,DHCP代理服务在4011/UDP 端口上运行,要求从客户端来的DHCPDISCOVER 包变成DHCPREQUEST 包。标准DHCP服务在其发送的DHCPOFFER 包中加入特殊的PXE 选项组合,这样PXE客户端知道可以在同一个主机的 4011/UDP 端口找到一个DHCP代理服务。

和一个正在启动系统的启动服务联系必须有一个IP地址(可能来自DHCP服务)。通过多播或单播一个带有特殊的PXE选项的 DHCPREQUEST 包(扩展DHCPREQUEST包)到 4011/UDP端口,或者广播(网路)这种包到 67/UDP端口。这种包包含有PXE启动服务类型和PXE启动层,一个守护进程允许运行多个启动服务类型。 一个扩展 DHCPREQUEST包可能是一个DHCPINFORM包。
 
简单总结一下,
  • PXE Client发送广播包请求DHCP分配IP地址DHCP 
  • Server回复请求,给出IP地址以及Boot 
  • Server的地址PXE下载引导文件执行引导程序

 
注:kickstart不在这里详述,参考地址:http://linux.vbird.org/linux_enterprise/0120installation.php

3.PXE + Kickstart自动化安装操作系统实践

前提准备:
  • DHCP服务器

 
  • TFTP服务器

 
  • KickStart所生成的ks.cfg配置文件

 
  • 一台存放系统安装文件的服务器,如NFS、HTTP、或FTP服务器

 
  • 一个带有PXE支持网卡的主机。


3.1 查看当前操作系统版本
cat /etc/redhat-release
CentOS release 6.7 (Final)
3.2 准备环境
  • 可以连接网络
  • 关闭防火墙

/etc/init.d/iptables stop

  • 关闭selinux,临时关闭会不生效,建议修改配置文件后,重启操作系统

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
3.3 安装DHCP服务
  • 安装DHCP

yum -y install dhcp

  • 修改配置文件

cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #拷贝dhcp配置文件
#修改配置文件/etc/dhcpd/dhcpd.conf;添加如下
ddns-update-style none;
ignore client-updates;
subnet 10.0.0.0 netmask 255.255.255.0 {
range
10.0.0.100 10.0.0.200;
option
subnet-mask 255.255.255.0;
option
domain-name “internal.example.org”;
default-lease-time 600;
max-lease-time 7200;
next-server
10.0.0.3;
filename
“/pxelinux.0”;
}修改/etc/sysconfig/dhcpd配置文件,表示dhcp将只在eth0网络接口上提供DHCP服务cat /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth0

  • 启动dhcpd服务

/etc/init.d/dhcpd start
DHCP注释:
ddns-update-style none; #设置与DHCP服务相关联的DNS数据动态更新模式,实际的DHCP应用中很少用改参数,设置为none即可。
ignore client-updates; #不允许客户机更新DNS记录
subnet 172.16.10.0 netmask
255.255.255.0 {
range 172.16.10.100 172.16.10.200; #可分配的起始IP-结束IP
option subnet-mask 255.255.255.0; #设置netmask
default-lease-time 21600; #设置默认的IP租用期限
max-lease-time 43200; #设置最大的IP租用期限
next-server 172.16.10.20; #告知客户端TFTP服务器ip
filename “/pxelinux.0”; #告知客户端从TFTP根目录下载pexlinux.0
}
3.4 安装TFTP服务
  • 安装tftp-server服务

yum -y install tftp-server

  • 修改配置文件/etc/xinetd.d/tftp disabled修改为no

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
}

  • 启动服务xinetd代理服务

/etc/init.d/xinetd start

3.6 PXE配置引导

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。如果没有找到pxelinux.0这个文件,可以安装一下。
  • 安装

syslinuxyum -y install syslinux

  • 复制配置文件

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp -a /var/www/html/centos6/isolinux/ * /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/centos6/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

  • 添加如下,配置文件

cat /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 0
label ks
kernel
vmlinuz
append
initrd=initrd.img ks=http://10.0.0.3/config/Centos6-ks.cfg ksdevice=eth0
# ksdevice=eth0代表当客户端有多块网卡的时候,要实现自动化需要设置从eth0安装,不指定的话,安装的时候系统会让你选择,那就不叫全自动化了。

  • PXE配置文件default解析

cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 #默认加载一个菜单
#prompt 1 #开启会显示命令行’boot:’ 提示符。prompt值为0时则不提示,将会直接启动’default’参数中指定的内容
timeout 600#timeout时间是引导等待用户手动选择的时间,设为1可直接引导,单位为1/10秒。
display boot.msg
#菜单背景图片、标题、颜色。
menu background splash.jpg
menu title Welcome to CentOS 6.7!
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
#lable指定在boot:提示符下输入的关键字,比如boot:linux[ENTER],这个会启动lable
linux下标记的kernel和initrd.img文件
label linux#一个标签就是前面图片的一行选项。
menu
label ^Install or upgrade an existing system
menu
default
kernel
vmlinuz #指定要启动的内核。同样要注意路径,默认是/tftpboot目录
append
initrd=initrd.img #指定追加给内核的参数,initrd.img是一个最小的linux系统
label vesa
menu
label Install system with ^basic video driver
kernel
vmlinuz
append
initrd=initrd.img nomodeset
label rescue
menu
label ^Rescue installed system
kernel
vmlinuz
append
initrd=initrd.img rescue
label local
menu
label Boot from ^local drive
localboot
0xffff
label memtest86
menu
label ^Memory test
kernel
memtest
append –

  • 上传kscfg配置文件

grub-crypt #配置root使用密码,加入修改Centos6-ks.cfg文件
Password:
Retype password:
$6$006TOzR9rk18CPQw$t/xTyZEw60OWqAho.J1oj3PRo2ib93blCIlVuFCPc6/fuCADB02LKHfNV4x7jtpNAX98TK3K8Zpem8Qkv92111

  • 创建配置文件及优化脚本站点目录

mkdir /var/www/html/config

  • 查看文件

cat /var/www/html/config/Centos6-ks.cfg
install #安装
url –url=”http://10.0.0.3/centos6″ #系统文件地址,这里使用http
text #文本界面安装
lang en_US.UTF-8 #语言
keyboard us #键盘
zerombr #清空mbr
bootloader –location=mbr –driveorder=sda
–append=”crashkernel=auto rhgb quiet” #引导加载程序参数
network –bootproto=dhcp –device=eth1
–onboot=yes –noipv6 –hostname=CentOS6 #eth1网络配置
timezone –utc Asia/Shanghai #时区
authconfig –enableshadow –passalgo=sha512 #验证配置
rootpw–iscrypted $6$006TOzR9rk18CPQw$t/xTyZEw60OWqAho.J1oj3PRo2ib93blCIlVuFCPc6/fuCADB02LKHfNV4x7jtpNAX98TK3K8Zpem8Qkv92111
#root密码,使用grub-crypt生成
clearpart –all –initlabel #清空分区
part /boot –fstype=ext4 –asprimary –size=100 #分区/boot
100M
part swap –size=1500 #分区swap
1500M
part / –fstype=ext4 –grow –asprimary
–size=200 #分区/ 所有
firstboot –disable #关闭一系列服务
selinux –disabled
firewall –disabled
logging –level=info #日志记录等级info级别
reboot #重启
%packages #包组–软件名
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%post #安装完执行脚本
wget -O /tmp/optimization.sh http://10.0.0.3/config/optimization.sh
&>/dev/null #下载脚本,然后执行
/bin/sh /tmp/optimization.sh #执行脚本
%end


3.7 安装服务器

需要和pxe服务器内网同网段,开机通过dhcp自动获取,然后自动开始装机

12.png


13.png


14.png


15.png


===>到此,PXE+KickStart安装方式就结束了,图形化安装参考这里http://jcenter.idcos.com/?/article/26,是不是很麻烦呢?

CloudBoot如何从v1.0升级到v1.1?

CloudBoot凌枫 发表了文章 • 0 个评论 • 689 次浏览 • 2016-01-21 16:25 • 来自相关话题

第一步:更新Server和UI:编译文件安装的从这里下载更新:
源1:http://pan.baidu.com/s/1o6WJpZO 密码: i8z8  (md5:7c8791b4c68b7906dd18858b332909e5)
源2:https://github.com/idcos/osins ... g/1.1
 
源码安装的从这里下载更新:
1.从https://github.com/idcos/osinstall-server 获取最新server代码,重新编译(gb build)
2.从https://github.com/idcos/osinstall-ui 获取最新代码,重新编译(ember build --prod)
 
 
第二步:数据库升级,请执行以下SQL语句:ALTER TABLE `hardwares` ADD `source` VARCHAR(255) NULL , ADD `version` VARCHAR(255) NULL , ADD `status` ENUM('Pending', 'Success', 'Failure') NULL DEFAULT 'Success' ;
 
做完前面两步,即升级完毕! 
 
 
 
 
  查看全部
第一步:更新Server和UI:编译文件安装的从这里下载更新
源1:http://pan.baidu.com/s/1o6WJpZO 密码: i8z8  (md5:7c8791b4c68b7906dd18858b332909e5)
源2:https://github.com/idcos/osins ... g/1.1
 
源码安装的从这里下载更新
1.从https://github.com/idcos/osinstall-server 获取最新server代码,重新编译(gb build)
2.从https://github.com/idcos/osinstall-ui 获取最新代码,重新编译(ember build --prod)
 
 
第二步:数据库升级,请执行以下SQL语句:
ALTER TABLE `hardwares` ADD `source` VARCHAR(255) NULL , ADD `version` VARCHAR(255) NULL , ADD `status` ENUM('Pending', 'Success', 'Failure') NULL DEFAULT 'Success' ;

 
做完前面两步,即升级完毕! 
 
 
 
 
 

CloudBoot V1.1新特性

CloudBoot凌枫 发表了文章 • 0 个评论 • 503 次浏览 • 2016-01-21 16:20 • 来自相关话题

版本:v1.1
 
ChangeLog:
设置默认主页,直接访问http://localhost 即可访问主页
解决Server未启动时,访问主页白屏的问题
增加Server端成功启动后console输出"The server is running."信息提示
增加面向厂商的设备型号导入、导出功能
增加面向用户的硬件配置导入、导出功能
Agent上报设备型号时,增加校验其是否在硬件配置库
增加不支持低版本浏览器的信息提示
增加默认级别的日志输出
Agent增加开发者模式
 
如何升级到v1.1?
http://jcenter.idcos.com/?/article/24
 
  查看全部
版本:v1.1
 
ChangeLog:
设置默认主页,直接访问http://localhost 即可访问主页
解决Server未启动时,访问主页白屏的问题
增加Server端成功启动后console输出"The server is running."信息提示
增加面向厂商的设备型号导入、导出功能
增加面向用户的硬件配置导入、导出功能
Agent上报设备型号时,增加校验其是否在硬件配置库
增加不支持低版本浏览器的信息提示
增加默认级别的日志输出
Agent增加开发者模式
 
如何升级到v1.1?
http://jcenter.idcos.com/?/article/24
 
 

CloudBoot 安装操作系统流程

CloudBootSiffre 发表了文章 • 0 个评论 • 2613 次浏览 • 2016-01-20 18:52 • 来自相关话题

一、部署
 1.Linux系统环境依赖

当前安装环境是基于CentOS 6.7 update到最新,内核版本:2.6.32-573.el6.x86_64版本
用户需要下载对应的版本系统,然后安装并关闭iptables和selinux。
检查防火墙状态
# service iptables status
若防火墙已开启,请手动关闭
# service iptables stop
设置开机自启动(关闭)
# chkconfig iptables off
检查SELINUX状态
# sestatus
若提示为enabled则需要手动关闭SELINUX
# cat /etc/sysconfig/selinux # This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.SELINUXTYPE=targeted修改SELINUX=disabled,然后需要重启操作系统才能生效。
 
2.安装dhcp服务

网络启动依赖dhcp服务,并且需要配置pxe启动参数。
安装dhcp
# yum install dhcp -y
设置开机自启动
# chkconfig dhcpd on [size=13]#开启[/size]


配置dhcp服务,具体配置格式可参考默认的模板文件,网段根据自己的实际情况修改默认配置
#cat /etc/dhcp/dhcpd.conf

# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample #默认参考模板文件
# see 'man 5 dhcpd.conf'
示例配置
cat /etc/dhcp/dhcpd.confallow booting;
allow bootp;
ddns-update-style none;
ping-check true;
ping-timeout 3;
default-lease-time 1800;
max-lease-time 3600;
next-server 192.168.0.1;
filename "gpxelinux.0";
option domain-name-servers 192.168.0.1;
option root-path "192.168.0.1:/";
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.101 192.168.0.200;
option routers 192.168.0.1;
}3. 安装tftp服务
安装tftp服务和syslinux的tftpboot工具
# yum install tftp-server syslinux-tftpboot
设置开机自启动
# chkconfig xinetd on
配置tftp服务,设定tftp根目录为 /var/lib/tftpboot,修改disable = no
# 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 #修改此处为no
per_source = 11
cps = 100 2
flags = IPv4
}


4. 安装http服务

系统安装所需要的镜像源使用http的方式来提供,需要安装nginx/apache并下载安装介质然后导入ISO文件生成安装源。
导入rpm源
# rpm -ivh http://nginx.org/packages/cent ... h.rpm
安装nginx
# yum install nginx
设置开机自启动
# chkconfig nginx on
配置www服务,指定安装镜像源
# cat /etc/nginx/conf.d/default.confserver {
listen 80;
server_name localhost;
location / {
root /home/www; #配置路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}下载ISO文件并导入http目录
创建所需目录
# mkdir -p /home/www/iso /home/www/centos/6.7/os/x86_64/
获取ISO并指定下载目录
# wget -c -P /home/www/iso http://mirrors.aliyun.com/cent ... 1.iso
挂载ISO
# mount -o loop /home/www/iso/CentOS-6.7-x86_64-bin-DVD1.iso /media
复制到www服务对应目录
# rsync -az /media/ /home/www/centos/6.7/os/x86_64/
取消挂载
# umount /media注:YUM仓库详解见这里:http://jcenter.idcos.com/?/article/28 
 
5.安装dns服务

这里我们需要提供一套dns用作域名解析,如果内部环境已经有dns服务可以跳过此步骤。可以使用轻量级的dnsmasq来解决此问题,安装配置如下:# yum install dnsmasq
# chkconfig dnsmasq o
安装好以后需要增加hosts.conf配置文件,这里假设新增的域名是osinstall.idcos.net,ip地址是10.0.1.1# cat /etc/dnsmasq.conf
conf-dir=/etc/dnsmasq.d

# cat /etc/dnsmasq.d/hosts.conf
address=/osinstall.idcos.net/10.0.1.16.Server端部署

初始化数据
安装数据库
# yum install mysql mysql-server -y
启动并设置开机自启动
# service mysqld start
# chkconfig mysqld on
导入数据库表结构
# mysql -uroot < idcos-osinstall.sql
 部署server
修改配置文件idcos-os-install.json,配置数据库连接
"repo": {
"connection": "用户名:密码@tcp(localhost:3306)/idcos-osinstall?charset=utf8&parseTime=True&loc=Local"
}, #mysql默认无密码,可以不修改
修改配置文件idcos-os-install.json,设置PXE配置文件目录
"osInstall":{
"pxeConfigDir":"/var/lib/tftpboot/pxelinux.cfg"
}
运行可执行文件,执行文件会监听8083端口
# chmod 755 os-install-server
# nohup ./os-install-server &>os-install-server.log &

 7.部署UI前端
解压idcos-osinstall-ui.tar.gz到web server目录设置虚拟目录规则,以nginx为例
server {
listen 80 default_server;
server_name _;
include /etc/nginx/default.d/*.conf;
location / {
root /home/www;
index index.html index.htm;
}
location /api/ {
proxy_pass http://127.0.0.1:8083;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
部署完成后,访问地址:http://ip/#/dashboard/main 
 二、BootOS部署

搭建BootOS启动环境,需要配置tftp启动文件,内容如下:# cat /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT menu.c32
PROMPT 0
TIMEOUT 30

LABEL bootos
MENU LABEL ^BootOS
MENU DEFAULT
KERNEL http://osinstall.idcos.net/bootos/vmlinuz
APPEND initrd=http://osinstall.idcos.net/bootos/initrd.img console=tty0 selinux=0 biosdevname=0 SERVER_ADDR=http://osinstall.idcos.net
IPAPPEND 2
#以上URL均要修改为本地的url参数说明:
设定参数TIMEOUT 30,网络启动以后默认等待3秒钟自动进入BootOS使用http方式来加载vmlinuz和initrd.img,取代传统的tftp加载方式,大文件效率更高增加biosdevname=0参数,关闭了centos 6下面网卡自动重命名的情况,使用ethX的命名规范设定参数SERVER_ADDR=http://osinstall.idcos.net,指定server端的地址,agent会解析此参数并向server端发起请求,请根据实际情况修改设定IPAPPEND 2参数,一些服务器拥有多个网络接口,可能无法将BIOS所知的第一个网络接口设定为eth0,这将导致安装程序使用与PXE启动时不同的网络接口。增加此参数默认会使用PXE传递的网卡作为默认网络接口。

注:若果你是想定制自己特定的模板,请参考这里:http://idcos.github.io/osinstall-doc/os/系统模板定制规范.html

三、使用部署好的UI

上述工作都顺利完成之后,我们就可以参照这里:http://idcos.com/X86/doc/use/部署/Linux系统环境依赖.html就能成功安装操作系统功能了。 查看全部
一、部署
 1.Linux系统环境依赖

当前安装环境是基于
CentOS 6.7 update到最新,内核版本:2.6.32-573.el6.x86_64版本

用户需要下载对应的版本系统,然后安装并关闭iptables和selinux。
  • 检查防火墙状态

# service iptables status

  • 若防火墙已开启,请手动关闭

# service iptables stop

  • 设置开机自启动(关闭)

# chkconfig iptables off 

  • 检查SELINUX状态

# sestatus

  • 若提示为enabled则需要手动关闭SELINUX

# cat /etc/sysconfig/selinux 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted修改SELINUX=disabled,然后需要重启操作系统才能生效。
 
2.安装dhcp服务

网络启动依赖dhcp服务,并且需要配置pxe启动参数。
  • 安装dhcp

# yum install dhcp -y

  • 设置开机自启动

# chkconfig dhcpd on  [size=13]#开启[/size]


  • 配置dhcp服务,具体配置格式可参考默认的模板文件,网段根据自己的实际情况修改
  • 默认配置

#cat /etc/dhcp/dhcpd.conf

# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample #默认参考模板文件
# see 'man 5 dhcpd.conf'

  • 示例配置

cat /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style none;
ping-check true;
ping-timeout 3;
default-lease-time 1800;
max-lease-time 3600;
next-server 192.168.0.1;
filename "gpxelinux.0";
option domain-name-servers 192.168.0.1;
option root-path "192.168.0.1:/";
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.101 192.168.0.200;
option routers 192.168.0.1;
}
3. 安装tftp服务
  • 安装tftp服务和syslinux的tftpboot工具

# yum install tftp-server syslinux-tftpboot

  • 设置开机自启动

# chkconfig xinetd on

  • 配置tftp服务,设定tftp根目录为 /var/lib/tftpboot,修改disable = no

# 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 #修改此处为no
per_source = 11
cps = 100 2
flags = IPv4
}


4. 安装http服务

系统安装所需要的镜像源使用http的方式来提供,需要安装nginx/apache并下载安装介质然后导入ISO文件生成安装源。
  • 导入rpm源

# rpm -ivh http://nginx.org/packages/cent ... h.rpm

  • 安装nginx

# yum install nginx

  • 设置开机自启动

# chkconfig nginx on

  • 配置www服务,指定安装镜像源

# cat /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
location / {
root /home/www; #配置路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
下载ISO文件并导入http目录
  • 创建所需目录

# mkdir -p /home/www/iso /home/www/centos/6.7/os/x86_64/

  • 获取ISO并指定下载目录

# wget -c -P /home/www/iso http://mirrors.aliyun.com/cent ... 1.iso

  • 挂载ISO

# mount -o loop /home/www/iso/CentOS-6.7-x86_64-bin-DVD1.iso /media

  • 复制到www服务对应目录

# rsync -az /media/ /home/www/centos/6.7/os/x86_64/

  • 取消挂载

# umount /media
注:YUM仓库详解见这里:http://jcenter.idcos.com/?/article/28 
 
5.安装dns服务

这里我们需要提供一套dns用作域名解析,如果内部环境已经有dns服务可以跳过此步骤。可以使用轻量级的dnsmasq来解决此问题,安装配置如下:
# yum install dnsmasq 
# chkconfig dnsmasq o

安装好以后需要增加hosts.conf配置文件,这里假设新增的域名是osinstall.idcos.net,ip地址是10.0.1.1
# cat /etc/dnsmasq.conf 
conf-dir=/etc/dnsmasq.d

# cat /etc/dnsmasq.d/hosts.conf
address=/osinstall.idcos.net/10.0.1.1
6.Server端部署

初始化数据
  • 安装数据库

# yum install mysql mysql-server -y

  • 启动并设置开机自启动

# service mysqld start
# chkconfig mysqld on

  • 导入数据库表结构

# mysql -uroot < idcos-osinstall.sql

 部署server
  • 修改配置文件idcos-os-install.json,配置数据库连接

"repo": {
"connection": "用户名:密码@tcp(localhost:3306)/idcos-osinstall?charset=utf8&parseTime=True&loc=Local"
}, #mysql默认无密码,可以不修改

  • 修改配置文件idcos-os-install.json,设置PXE配置文件目录

"osInstall":{
"pxeConfigDir":"/var/lib/tftpboot/pxelinux.cfg"
}

  • 运行可执行文件,执行文件会监听8083端口

# chmod 755 os-install-server
# nohup ./os-install-server &>os-install-server.log &

 7.部署UI前端
  • 解压idcos-osinstall-ui.tar.gz到web server目录
  • 设置虚拟目录规则,以nginx为例

server {
listen 80 default_server;
server_name _;
include /etc/nginx/default.d/*.conf;
location / {
root /home/www;
index index.html index.htm;
}
location /api/ {
proxy_pass http://127.0.0.1:8083;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}


 二、BootOS部署

搭建BootOS启动环境,需要配置tftp启动文件,内容如下:
# cat /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT menu.c32
PROMPT 0
TIMEOUT 30

LABEL bootos
MENU LABEL ^BootOS
MENU DEFAULT
KERNEL http://osinstall.idcos.net/bootos/vmlinuz
APPEND initrd=http://osinstall.idcos.net/bootos/initrd.img console=tty0 selinux=0 biosdevname=0 SERVER_ADDR=http://osinstall.idcos.net
IPAPPEND 2
#以上URL均要修改为本地的url
参数说明:
  • 设定参数TIMEOUT 30,网络启动以后默认等待3秒钟自动进入BootOS
  • 使用http方式来加载vmlinuz和initrd.img,取代传统的tftp加载方式,大文件效率更高
  • 增加biosdevname=0参数,关闭了centos 6下面网卡自动重命名的情况,使用ethX的命名规范
  • 设定参数SERVER_ADDR=http://osinstall.idcos.net,指定server端的地址,agent会解析此参数并向server端发起请求,请根据实际情况修改
  • 设定IPAPPEND 2参数,一些服务器拥有多个网络接口,可能无法将BIOS所知的第一个网络接口设定为eth0,这将导致安装程序使用与PXE启动时不同的网络接口。增加此参数默认会使用PXE传递的网卡作为默认网络接口。


注:若果你是想定制自己特定的模板,请参考这里:http://idcos.github.io/osinstall-doc/os/系统模板定制规范.html

三、使用部署好的UI

上述工作都顺利完成之后,我们就可以参照这里:http://idcos.com/X86/doc/use/部署/Linux系统环境依赖.html就能成功安装操作系统功能了。

CloudBoot 有demo吗?

CloudBootSiffre 发表了文章 • 0 个评论 • 559 次浏览 • 2016-01-20 16:02 • 来自相关话题

有DEMO的,在这:
 
http://demo.idcos.com:8081/#/dashboard/main
 
PS:建议使用最新版的Google Chrome浏览器访问,以获得最佳体验
有DEMO的,在这:
 
http://demo.idcos.com:8081/#/dashboard/main
 
PS:建议使用最新版的Google Chrome浏览器访问,以获得最佳体验

CloudBoot 安装操作系统流程

CloudBootSiffre 发表了文章 • 0 个评论 • 2613 次浏览 • 2016-01-20 18:52 • 来自相关话题

一、部署
 1.Linux系统环境依赖

当前安装环境是基于CentOS 6.7 update到最新,内核版本:2.6.32-573.el6.x86_64版本
用户需要下载对应的版本系统,然后安装并关闭iptables和selinux。
检查防火墙状态
# service iptables status
若防火墙已开启,请手动关闭
# service iptables stop
设置开机自启动(关闭)
# chkconfig iptables off
检查SELINUX状态
# sestatus
若提示为enabled则需要手动关闭SELINUX
# cat /etc/sysconfig/selinux # This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.SELINUXTYPE=targeted修改SELINUX=disabled,然后需要重启操作系统才能生效。
 
2.安装dhcp服务

网络启动依赖dhcp服务,并且需要配置pxe启动参数。
安装dhcp
# yum install dhcp -y
设置开机自启动
# chkconfig dhcpd on [size=13]#开启[/size]


配置dhcp服务,具体配置格式可参考默认的模板文件,网段根据自己的实际情况修改默认配置
#cat /etc/dhcp/dhcpd.conf

# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample #默认参考模板文件
# see 'man 5 dhcpd.conf'
示例配置
cat /etc/dhcp/dhcpd.confallow booting;
allow bootp;
ddns-update-style none;
ping-check true;
ping-timeout 3;
default-lease-time 1800;
max-lease-time 3600;
next-server 192.168.0.1;
filename "gpxelinux.0";
option domain-name-servers 192.168.0.1;
option root-path "192.168.0.1:/";
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.101 192.168.0.200;
option routers 192.168.0.1;
}3. 安装tftp服务
安装tftp服务和syslinux的tftpboot工具
# yum install tftp-server syslinux-tftpboot
设置开机自启动
# chkconfig xinetd on
配置tftp服务,设定tftp根目录为 /var/lib/tftpboot,修改disable = no
# 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 #修改此处为no
per_source = 11
cps = 100 2
flags = IPv4
}


4. 安装http服务

系统安装所需要的镜像源使用http的方式来提供,需要安装nginx/apache并下载安装介质然后导入ISO文件生成安装源。
导入rpm源
# rpm -ivh http://nginx.org/packages/cent ... h.rpm
安装nginx
# yum install nginx
设置开机自启动
# chkconfig nginx on
配置www服务,指定安装镜像源
# cat /etc/nginx/conf.d/default.confserver {
listen 80;
server_name localhost;
location / {
root /home/www; #配置路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}下载ISO文件并导入http目录
创建所需目录
# mkdir -p /home/www/iso /home/www/centos/6.7/os/x86_64/
获取ISO并指定下载目录
# wget -c -P /home/www/iso http://mirrors.aliyun.com/cent ... 1.iso
挂载ISO
# mount -o loop /home/www/iso/CentOS-6.7-x86_64-bin-DVD1.iso /media
复制到www服务对应目录
# rsync -az /media/ /home/www/centos/6.7/os/x86_64/
取消挂载
# umount /media注:YUM仓库详解见这里:http://jcenter.idcos.com/?/article/28 
 
5.安装dns服务

这里我们需要提供一套dns用作域名解析,如果内部环境已经有dns服务可以跳过此步骤。可以使用轻量级的dnsmasq来解决此问题,安装配置如下:# yum install dnsmasq
# chkconfig dnsmasq o
安装好以后需要增加hosts.conf配置文件,这里假设新增的域名是osinstall.idcos.net,ip地址是10.0.1.1# cat /etc/dnsmasq.conf
conf-dir=/etc/dnsmasq.d

# cat /etc/dnsmasq.d/hosts.conf
address=/osinstall.idcos.net/10.0.1.16.Server端部署

初始化数据
安装数据库
# yum install mysql mysql-server -y
启动并设置开机自启动
# service mysqld start
# chkconfig mysqld on
导入数据库表结构
# mysql -uroot < idcos-osinstall.sql
 部署server
修改配置文件idcos-os-install.json,配置数据库连接
"repo": {
"connection": "用户名:密码@tcp(localhost:3306)/idcos-osinstall?charset=utf8&parseTime=True&loc=Local"
}, #mysql默认无密码,可以不修改
修改配置文件idcos-os-install.json,设置PXE配置文件目录
"osInstall":{
"pxeConfigDir":"/var/lib/tftpboot/pxelinux.cfg"
}
运行可执行文件,执行文件会监听8083端口
# chmod 755 os-install-server
# nohup ./os-install-server &>os-install-server.log &

 7.部署UI前端
解压idcos-osinstall-ui.tar.gz到web server目录设置虚拟目录规则,以nginx为例
server {
listen 80 default_server;
server_name _;
include /etc/nginx/default.d/*.conf;
location / {
root /home/www;
index index.html index.htm;
}
location /api/ {
proxy_pass http://127.0.0.1:8083;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
部署完成后,访问地址:http://ip/#/dashboard/main 
 二、BootOS部署

搭建BootOS启动环境,需要配置tftp启动文件,内容如下:# cat /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT menu.c32
PROMPT 0
TIMEOUT 30

LABEL bootos
MENU LABEL ^BootOS
MENU DEFAULT
KERNEL http://osinstall.idcos.net/bootos/vmlinuz
APPEND initrd=http://osinstall.idcos.net/bootos/initrd.img console=tty0 selinux=0 biosdevname=0 SERVER_ADDR=http://osinstall.idcos.net
IPAPPEND 2
#以上URL均要修改为本地的url参数说明:
设定参数TIMEOUT 30,网络启动以后默认等待3秒钟自动进入BootOS使用http方式来加载vmlinuz和initrd.img,取代传统的tftp加载方式,大文件效率更高增加biosdevname=0参数,关闭了centos 6下面网卡自动重命名的情况,使用ethX的命名规范设定参数SERVER_ADDR=http://osinstall.idcos.net,指定server端的地址,agent会解析此参数并向server端发起请求,请根据实际情况修改设定IPAPPEND 2参数,一些服务器拥有多个网络接口,可能无法将BIOS所知的第一个网络接口设定为eth0,这将导致安装程序使用与PXE启动时不同的网络接口。增加此参数默认会使用PXE传递的网卡作为默认网络接口。

注:若果你是想定制自己特定的模板,请参考这里:http://idcos.github.io/osinstall-doc/os/系统模板定制规范.html

三、使用部署好的UI

上述工作都顺利完成之后,我们就可以参照这里:http://idcos.com/X86/doc/use/部署/Linux系统环境依赖.html就能成功安装操作系统功能了。 查看全部
一、部署
 1.Linux系统环境依赖

当前安装环境是基于
CentOS 6.7 update到最新,内核版本:2.6.32-573.el6.x86_64版本

用户需要下载对应的版本系统,然后安装并关闭iptables和selinux。
  • 检查防火墙状态

# service iptables status

  • 若防火墙已开启,请手动关闭

# service iptables stop

  • 设置开机自启动(关闭)

# chkconfig iptables off 

  • 检查SELINUX状态

# sestatus

  • 若提示为enabled则需要手动关闭SELINUX

# cat /etc/sysconfig/selinux 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted修改SELINUX=disabled,然后需要重启操作系统才能生效。
 
2.安装dhcp服务

网络启动依赖dhcp服务,并且需要配置pxe启动参数。
  • 安装dhcp

# yum install dhcp -y

  • 设置开机自启动

# chkconfig dhcpd on  [size=13]#开启[/size]


  • 配置dhcp服务,具体配置格式可参考默认的模板文件,网段根据自己的实际情况修改
  • 默认配置

#cat /etc/dhcp/dhcpd.conf

# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample #默认参考模板文件
# see 'man 5 dhcpd.conf'

  • 示例配置

cat /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style none;
ping-check true;
ping-timeout 3;
default-lease-time 1800;
max-lease-time 3600;
next-server 192.168.0.1;
filename "gpxelinux.0";
option domain-name-servers 192.168.0.1;
option root-path "192.168.0.1:/";
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.101 192.168.0.200;
option routers 192.168.0.1;
}
3. 安装tftp服务
  • 安装tftp服务和syslinux的tftpboot工具

# yum install tftp-server syslinux-tftpboot

  • 设置开机自启动

# chkconfig xinetd on

  • 配置tftp服务,设定tftp根目录为 /var/lib/tftpboot,修改disable = no

# 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 #修改此处为no
per_source = 11
cps = 100 2
flags = IPv4
}


4. 安装http服务

系统安装所需要的镜像源使用http的方式来提供,需要安装nginx/apache并下载安装介质然后导入ISO文件生成安装源。
  • 导入rpm源

# rpm -ivh http://nginx.org/packages/cent ... h.rpm

  • 安装nginx

# yum install nginx

  • 设置开机自启动

# chkconfig nginx on

  • 配置www服务,指定安装镜像源

# cat /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
location / {
root /home/www; #配置路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
下载ISO文件并导入http目录
  • 创建所需目录

# mkdir -p /home/www/iso /home/www/centos/6.7/os/x86_64/

  • 获取ISO并指定下载目录

# wget -c -P /home/www/iso http://mirrors.aliyun.com/cent ... 1.iso

  • 挂载ISO

# mount -o loop /home/www/iso/CentOS-6.7-x86_64-bin-DVD1.iso /media

  • 复制到www服务对应目录

# rsync -az /media/ /home/www/centos/6.7/os/x86_64/

  • 取消挂载

# umount /media
注:YUM仓库详解见这里:http://jcenter.idcos.com/?/article/28 
 
5.安装dns服务

这里我们需要提供一套dns用作域名解析,如果内部环境已经有dns服务可以跳过此步骤。可以使用轻量级的dnsmasq来解决此问题,安装配置如下:
# yum install dnsmasq 
# chkconfig dnsmasq o

安装好以后需要增加hosts.conf配置文件,这里假设新增的域名是osinstall.idcos.net,ip地址是10.0.1.1
# cat /etc/dnsmasq.conf 
conf-dir=/etc/dnsmasq.d

# cat /etc/dnsmasq.d/hosts.conf
address=/osinstall.idcos.net/10.0.1.1
6.Server端部署

初始化数据
  • 安装数据库

# yum install mysql mysql-server -y

  • 启动并设置开机自启动

# service mysqld start
# chkconfig mysqld on

  • 导入数据库表结构

# mysql -uroot < idcos-osinstall.sql

 部署server
  • 修改配置文件idcos-os-install.json,配置数据库连接

"repo": {
"connection": "用户名:密码@tcp(localhost:3306)/idcos-osinstall?charset=utf8&parseTime=True&loc=Local"
}, #mysql默认无密码,可以不修改

  • 修改配置文件idcos-os-install.json,设置PXE配置文件目录

"osInstall":{
"pxeConfigDir":"/var/lib/tftpboot/pxelinux.cfg"
}

  • 运行可执行文件,执行文件会监听8083端口

# chmod 755 os-install-server
# nohup ./os-install-server &>os-install-server.log &

 7.部署UI前端
  • 解压idcos-osinstall-ui.tar.gz到web server目录
  • 设置虚拟目录规则,以nginx为例

server {
listen 80 default_server;
server_name _;
include /etc/nginx/default.d/*.conf;
location / {
root /home/www;
index index.html index.htm;
}
location /api/ {
proxy_pass http://127.0.0.1:8083;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}


 二、BootOS部署

搭建BootOS启动环境,需要配置tftp启动文件,内容如下:
# cat /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT menu.c32
PROMPT 0
TIMEOUT 30

LABEL bootos
MENU LABEL ^BootOS
MENU DEFAULT
KERNEL http://osinstall.idcos.net/bootos/vmlinuz
APPEND initrd=http://osinstall.idcos.net/bootos/initrd.img console=tty0 selinux=0 biosdevname=0 SERVER_ADDR=http://osinstall.idcos.net
IPAPPEND 2
#以上URL均要修改为本地的url
参数说明:
  • 设定参数TIMEOUT 30,网络启动以后默认等待3秒钟自动进入BootOS
  • 使用http方式来加载vmlinuz和initrd.img,取代传统的tftp加载方式,大文件效率更高
  • 增加biosdevname=0参数,关闭了centos 6下面网卡自动重命名的情况,使用ethX的命名规范
  • 设定参数SERVER_ADDR=http://osinstall.idcos.net,指定server端的地址,agent会解析此参数并向server端发起请求,请根据实际情况修改
  • 设定IPAPPEND 2参数,一些服务器拥有多个网络接口,可能无法将BIOS所知的第一个网络接口设定为eth0,这将导致安装程序使用与PXE启动时不同的网络接口。增加此参数默认会使用PXE传递的网卡作为默认网络接口。


注:若果你是想定制自己特定的模板,请参考这里:http://idcos.github.io/osinstall-doc/os/系统模板定制规范.html

三、使用部署好的UI

上述工作都顺利完成之后,我们就可以参照这里:http://idcos.com/X86/doc/use/部署/Linux系统环境依赖.html就能成功安装操作系统功能了。

CloudBoot云装机新手指南

CloudBootSiffre 发表了文章 • 0 个评论 • 1674 次浏览 • 2016-01-20 16:00 • 来自相关话题

1.想知道CloudBoot是什么吗?http://jcenter.idcos.com/?/article/17
 
2.想体验一下Demo吗?http://jcenter.idcos.com/?/article/21
 
3.想自己下载尝试一下吗?http://jcenter.idcos.com/?/article/18
 
4.想看看FAQ吗?http://jcenter.idcos.com/?/article/19
 
6.想看视频教程吗?http://v.youku.com/v_show/id_XMTU2ODM2Njk2OA==.html 
 
7.有问题可以加QQ群咨询 http://jcenter.idcos.com/?/article/16
 
8.有什么不懂、不会的问题,可以到这里来咨询哦:http://jcenter.idcos.com/?/topic/问题反馈 查看全部
1.想知道CloudBoot是什么吗?http://jcenter.idcos.com/?/article/17
 
2.想体验一下Demo吗?http://jcenter.idcos.com/?/article/21
 
3.想自己下载尝试一下吗?http://jcenter.idcos.com/?/article/18
 
4.想看看FAQ吗?http://jcenter.idcos.com/?/article/19
 
6.想看视频教程吗?http://v.youku.com/v_show/id_XMTU2ODM2Njk2OA==.html 
 
7.有问题可以加QQ群咨询 http://jcenter.idcos.com/?/article/16
 
8.有什么不懂、不会的问题,可以到这里来咨询哦:http://jcenter.idcos.com/?/topic/问题反馈

CloudBoot 常见问题列表

CloudBootSiffre 发表了文章 • 0 个评论 • 6674 次浏览 • 2016-01-20 16:00 • 来自相关话题

<ol>
<li><p>从哪里下载?</p>
<p> 下载地址:<a href="http://idcos.com/store/cloudbo ... t%3Ba href="http://idcos.com/store/cloudbo ... gt%3B
</li>
<li><p>下载后如何安装?</p>
<p> 一键部署手册:<a href="http://idcos.github.io/osinsta ... t%3Ba href="http://idcos.github.io/osinsta ... gt%3B
</li>
<li><p>编译环境怎么搭建?</p>
<p> 我们的开发环境是基于centos 6 x86_64位系统,理论上6.x任意版本的centos/rhel都是支持的。如需构建开发环境,参考:<a href="https://github.com/idcos/osins ... t%3Ba href="https://github.com/idcos/osins ... gt%3B
</li>
<li><p>对浏览器的支持如何?</p>
<p> 目前支持Chrome、IE9+、Firefox、Safari等主流浏览器。推荐使用最新版Chrome,以获取最佳使用体验。</p>
</li>
<li><p>是否支持跨网段部署?</p>
<p> 跨网段安装操作系统是可以实现的,但是需要依赖一些前提条件。
网络是vlan模式,需要配置交换机的dhcp relay,即ip-helper address,并将每个vlan网段信息加入dhcp资源池
网络是trunk模式,需要配置交换机的native vlan,并将native vlan网段信息加入dhcp资源池</p>
</li>
<li><p>是否支持32位操作系统?</p>
<p> 目前我们提供的程序均是在64位操作系统下开发,如果需要使用32位操作系统,请自行下载源代码进行编译。参考:<a href="https://github.com/idcos/osins ... t%3Ba href="https://github.com/idcos/osins ... gt%3B
</li>
<li><p>对UEFI的支持如何呢?</p>
<p> 目前我们开发的BootOS暂不支持UEFI引导,后续可以考虑增加这方面的功能。</p>
</li>
<li><p>进入BootOS以后是否是自动注册的?</p>
<p> 是的,服务器加电,进入BootOS后,会自动将SN等信息注册到【资源池管理】【新发现设备列表】</p>
</li>
<li><p>可以支持哪些硬件配置?</p>
<p> 我们正在和各大厂商进行合作,适配国内主流厂商的服务器。目前可以提供dell/huawei/hp/inspur等硬件配置工具包,请用户帮我们测试和反馈问题。</p>
</li>
<li><p>对Windows系统支持如何?</p>
<p> 目前已支持Windows Server 2012 R2、Windows Server 2008 R2,后续会不断支持其他版本。</p>
</li>
<li><p>为啥我的客户机获取不到SN?</p>
<p> 首先在客户机执行一下<code>dmidecode -s system-serial-number</code>,获取不到的话联系厂商报修,需要将SN重新写入到主板里(服务器厂商有相应的工具)。</p>
</li>
<li><p>为啥我的客户机获取的服务器厂商名称是<code>To</code>(或其他)?</p>
<p> 主板有问题,需要联系厂商报修重新刷一下。或者先不选择硬件配置模板,略过硬件配置安装这步。</p>
</li>
<li><p>我系统模板里的%post不执行?</p>
<p> 很多人问为什么%post不执行,是否执行要看一些配置是否生效,比如PS1。其实不是post没执行,是没有进度上报。进度上报依赖dmidecode获取sn和curl发送http post请求。如果你在post里面没安装dmidecode和curl,那又如何上报进度呢?</p>
</li>
<li><p>为啥<code>/etc/sysconfig/network</code>没改?</p>
<p> %post没执行的话,<code>/etc/sysconfig/network</code>肯定不会改的,没装curl获取不了网络配置,自然不会改。排查方法,修改%post部分代码如下,重定向标准错误和标准输出到<code>/root/post.log</code>,安装好系统以后在去分析这个日志。</p>
<pre><code class="lang-bash"> %post
exec &amp;>/root/post.log
set -x</code></pre>
</li>
<li><p>执行gb build时报“qiniu/iconv”相关的错误?</p>
<p> 先执行<code>go get -u github.com/qiniu/iconv</code>,再执行<code>gb build</code></p>
</li>
<li><p>怎么修改硬件配置模板里的脚本内容?</p>
<p> 进这个页面可以修改:<a href="http://localhost/%23/dashboard ... t%3Ba href="http://localhost/%23/dashboard ... gt%3B
</li>
<li><p>怎么连接mysql?</p>
<pre><code class="lang-bash"> /opt/cloudboot/usr/bin/mysql -h127.0.0.1 -uroot</code></pre>
</li>
<li><p>为什么windows系统已安装完,进度还没变?</p>
<p> windows安装的逻辑是修改完主机名和ip以后要检查网络是否ping的通,因为后面还要上报进度,如果和服务端连不上就没办法上报了。所以在设置windows ip的时候确保此ip可用,否则的话安装好系统以后修改完ip不通,进度就会一直卡住,不会往下走。</p>
</li>
<li><p>v1.3安装windows时可以加载其他驱动吗?</p>
<p> 可以,请把把需要安装的驱动准备好,放到 <code>/opt/cloudboot/home/samba/windows/drivers/winpe/</code> 下,各驱动分别放置在各自的子目录。agent会自动加载。</p>
</li>
<li><p>多IP环境和没有网关的机器如何安装一键部署工具</p>
<p> 如果你的机器配置了多个ip,例如一个是公网出口,另一个是私网用来装机,或者只配了一个ip但是没有配置网关。在这种场景下安装一键部署工具时,需要指定用哪个ip来做server。</p>
<pre><code class="lang-bash"> IP=192.168.0.1 rpm -ivh cloudboot-x.x-x.x86_64.rpm</code></pre>
</li>
<li><p>使用 VirtualBox 虚拟机通过 PXE 方式安装操作系统</p>
<p> VirtualBox 默认的网卡rom和gpxe的兼容性不好,需要VirtualBox安装扩展工具包,并修改网卡rom为PXE-Intel.rom。以Windows环境为例,进行如下配置:</p>
<pre><code class="lang-bash"> "C:\Program Files\Oracle\VirtualBox\vboxmanage" setextradata vm_name VBoxInternal/Devices/pcbios/0/Config/LanBootRom "C:\Program Files\Oracle\VirtualBox\ExtensionPacks\Oracle_VM_VirtualBox_Extension_Pack\PXE-Intel.rom" </code></pre>
<li><p>如何修改windows模板密码</p>
<p> 方案1. PlainText改为true,使用明文密码; 方案2. 在winconfig调用post脚本的时候用net user改; 方案3. 用windows aik生成加密的密码</p>
</li>
</ol> 查看全部
<ol>
<li><p>从哪里下载?</p>
<p> 下载地址:<a href="http://idcos.com/store/cloudbo ... t%3Ba href="http://idcos.com/store/cloudbo ... gt%3B
</li>
<li><p>下载后如何安装?</p>
<p> 一键部署手册:<a href="http://idcos.github.io/osinsta ... t%3Ba href="http://idcos.github.io/osinsta ... gt%3B
</li>
<li><p>编译环境怎么搭建?</p>
<p> 我们的开发环境是基于centos 6 x86_64位系统,理论上6.x任意版本的centos/rhel都是支持的。如需构建开发环境,参考:<a href="https://github.com/idcos/osins ... t%3Ba href="https://github.com/idcos/osins ... gt%3B
</li>
<li><p>对浏览器的支持如何?</p>
<p> 目前支持Chrome、IE9+、Firefox、Safari等主流浏览器。推荐使用最新版Chrome,以获取最佳使用体验。</p>
</li>
<li><p>是否支持跨网段部署?</p>
<p> 跨网段安装操作系统是可以实现的,但是需要依赖一些前提条件。
网络是vlan模式,需要配置交换机的dhcp relay,即ip-helper address,并将每个vlan网段信息加入dhcp资源池
网络是trunk模式,需要配置交换机的native vlan,并将native vlan网段信息加入dhcp资源池</p>
</li>
<li><p>是否支持32位操作系统?</p>
<p> 目前我们提供的程序均是在64位操作系统下开发,如果需要使用32位操作系统,请自行下载源代码进行编译。参考:<a href="https://github.com/idcos/osins ... t%3Ba href="https://github.com/idcos/osins ... gt%3B
</li>
<li><p>对UEFI的支持如何呢?</p>
<p> 目前我们开发的BootOS暂不支持UEFI引导,后续可以考虑增加这方面的功能。</p>
</li>
<li><p>进入BootOS以后是否是自动注册的?</p>
<p> 是的,服务器加电,进入BootOS后,会自动将SN等信息注册到【资源池管理】【新发现设备列表】</p>
</li>
<li><p>可以支持哪些硬件配置?</p>
<p> 我们正在和各大厂商进行合作,适配国内主流厂商的服务器。目前可以提供dell/huawei/hp/inspur等硬件配置工具包,请用户帮我们测试和反馈问题。</p>
</li>
<li><p>对Windows系统支持如何?</p>
<p> 目前已支持Windows Server 2012 R2、Windows Server 2008 R2,后续会不断支持其他版本。</p>
</li>
<li><p>为啥我的客户机获取不到SN?</p>
<p> 首先在客户机执行一下<code>dmidecode -s system-serial-number</code>,获取不到的话联系厂商报修,需要将SN重新写入到主板里(服务器厂商有相应的工具)。</p>
</li>
<li><p>为啥我的客户机获取的服务器厂商名称是<code>To</code>(或其他)?</p>
<p> 主板有问题,需要联系厂商报修重新刷一下。或者先不选择硬件配置模板,略过硬件配置安装这步。</p>
</li>
<li><p>我系统模板里的%post不执行?</p>
<p> 很多人问为什么%post不执行,是否执行要看一些配置是否生效,比如PS1。其实不是post没执行,是没有进度上报。进度上报依赖dmidecode获取sn和curl发送http post请求。如果你在post里面没安装dmidecode和curl,那又如何上报进度呢?</p>
</li>
<li><p>为啥<code>/etc/sysconfig/network</code>没改?</p>
<p> %post没执行的话,<code>/etc/sysconfig/network</code>肯定不会改的,没装curl获取不了网络配置,自然不会改。排查方法,修改%post部分代码如下,重定向标准错误和标准输出到<code>/root/post.log</code>,安装好系统以后在去分析这个日志。</p>
<pre><code class="lang-bash"> %post
exec &amp;>/root/post.log
set -x</code></pre>
</li>
<li><p>执行gb build时报“qiniu/iconv”相关的错误?</p>
<p> 先执行<code>go get -u github.com/qiniu/iconv</code>,再执行<code>gb build</code></p>
</li>
<li><p>怎么修改硬件配置模板里的脚本内容?</p>
<p> 进这个页面可以修改:<a href="http://localhost/%23/dashboard ... t%3Ba href="http://localhost/%23/dashboard ... gt%3B
</li>
<li><p>怎么连接mysql?</p>
<pre><code class="lang-bash"> /opt/cloudboot/usr/bin/mysql -h127.0.0.1 -uroot</code></pre>
</li>
<li><p>为什么windows系统已安装完,进度还没变?</p>
<p> windows安装的逻辑是修改完主机名和ip以后要检查网络是否ping的通,因为后面还要上报进度,如果和服务端连不上就没办法上报了。所以在设置windows ip的时候确保此ip可用,否则的话安装好系统以后修改完ip不通,进度就会一直卡住,不会往下走。</p>
</li>
<li><p>v1.3安装windows时可以加载其他驱动吗?</p>
<p> 可以,请把把需要安装的驱动准备好,放到 <code>/opt/cloudboot/home/samba/windows/drivers/winpe/</code> 下,各驱动分别放置在各自的子目录。agent会自动加载。</p>
</li>
<li><p>多IP环境和没有网关的机器如何安装一键部署工具</p>
<p> 如果你的机器配置了多个ip,例如一个是公网出口,另一个是私网用来装机,或者只配了一个ip但是没有配置网关。在这种场景下安装一键部署工具时,需要指定用哪个ip来做server。</p>
<pre><code class="lang-bash"> IP=192.168.0.1 rpm -ivh cloudboot-x.x-x.x86_64.rpm</code></pre>
</li>
<li><p>使用 VirtualBox 虚拟机通过 PXE 方式安装操作系统</p>
<p> VirtualBox 默认的网卡rom和gpxe的兼容性不好,需要VirtualBox安装扩展工具包,并修改网卡rom为PXE-Intel.rom。以Windows环境为例,进行如下配置:</p>
<pre><code class="lang-bash"> "C:\Program Files\Oracle\VirtualBox\vboxmanage" setextradata vm_name VBoxInternal/Devices/pcbios/0/Config/LanBootRom "C:\Program Files\Oracle\VirtualBox\ExtensionPacks\Oracle_VM_VirtualBox_Extension_Pack\PXE-Intel.rom" </code></pre>
<li><p>如何修改windows模板密码</p>
<p> 方案1. PlainText改为true,使用明文密码; 方案2. 在winconfig调用post脚本的时候用net user改; 方案3. 用windows aik生成加密的密码</p>
</li>
</ol>

CloudBoot 之 PXE引导安装系统原理

CloudBootSiffre 发表了文章 • 0 个评论 • 906 次浏览 • 2016-02-02 11:24 • 来自相关话题

看图就行了:
 



 
看图就行了:
 
PXE引导开机流程.png

 

ClooudBoot 之 RPM打包

CloudBootSiffre 发表了文章 • 0 个评论 • 845 次浏览 • 2016-01-26 17:22 • 来自相关话题

FPM打包工具

FPM的作者是:jordansissel
FPM的github:https://github.com/jordansissel/fpm
FPM功能简单说就是将一种类型的包转换成另一种类型。

1. 支持的源类型包dir 将目录打包成所需要的类型,可以用于源码编译安装的软件包
rpm 对rpm进行转换
gem 对rubygem包进行转换
python 将python模块打包成相应的类型



2. 支持的目标类型包rpm 转换为rpm包
deb 转换为deb包
solaris 转换为solaris包
puppet 转换为puppet模块
3. FPM安装fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。
# 安装ruby模块
yum -y install ruby rubygems ruby-devel
# 添加阿里云的Rubygems仓库,外国的源慢
gem sources -a http://mirrors.aliyun.com/rubygems/
# 移除原生的Ruby仓库
gem sources --remove http://rubygems.org/
# 安装fpm
gem install fpm
4. FPM参数详细使用见fpm –help

常用参数

-s 指定源类型
-t 指定目标类型,即想要制作为什么包
-n 指定包的名字
-v 指定包的版本号
-C 指定打包的相对路径 Change directory to here before searching forfiles
-d 指定依赖于哪些包
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 软件包安装完成之后所要运行的脚本;同--after-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove使用实例–实战定制nginx的RPM包

1. 安装nginxyum -y install pcre-devel openssl-devel
useradd nginx -M -s /sbin/nologin
tar xf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --prefix=/application/nginx-1.6.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
ln -s /application/nginx-1.6.2/ /application/nginx
2. 编写脚本[root@oldboy ~]# cd /server/scripts/
[root@oldboy scripts]# vim nginx_rpm.sh # 这是安装完rpm包要执行的脚本
#!/bin/bash
useradd nginx -M -s /sbin/nologin
ln -s /application/nginx-1.6.2/ /application/nginx
3. 打包# fpm -s dir -t rpm -n nginx -v 1.6.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.6.2/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# ll -h nginx-1.6.2-1.x86_64.rpm
-rw-r--r-- 1 root root 6.7M Nov 1 10:02 nginx-1.6.2-1.x86_64.rpm
4. 安装rpm包

安装rpm包的三种方法:
rpm命令安装
# rpm -ivh nginx-1.6.2-1.x86_64.rpm
error: Failed dependencies:
pcre-devel is needed by nginx-1.6.2-1.x86_64
openssl-devel is needed by nginx-1.6.2-1.x86_64
但会报如上依赖错误,需要先yum安装依赖才能安装rpm包。
yum命令安装rpm包
yum -y localinstall nginx-1.6.2-1.x86_64.rpm
这个命令会自动先安装rpm包的依赖,然后再安装rpm包。



搭建内网yum仓库YUM仓库搭建见这里:http://jcenter.idcos.com//article/28

注意事项

1. 路径问题# 相对路径
# fpm -s dir -t rpm -n nginx -v 1.6.2 .
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/client_body_temp
/conf/extra/dynamic_pools
/conf/extra/static_pools
…………
# 绝对路径
# fpm -s dir -t rpm -n nginx -v 1.6.2 /application/nginx-1.6.2/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/application/nginx-1.6.2/client_body_temp
/application/nginx-1.6.2/conf/extra/dynamic_pools
/application/nginx-1.6.2/conf/extra/static_pools
/application/nginx-1.6.2/conf/fastcgi.conf
/application/nginx-1.6.2/conf/fastcgi.conf.default
…………
使用rpm -qpl 命令可以查看rpm包的内容。
注:fpm类似tar打包一样,只是fpm打的包能够被yum命令识别而已。
2. 软链接问题# fpm -s dir -t rpm -n nginx -v 1.6.2 /application/nginx
no value for epoch is set, defaulting to nil {:level=>:warn}
File already exists, refusing to continue: nginx-1.6.2-1.x86_64.rpm {:level=>:fatal}
# 报错是因为当前目录存在同名的rpm包,可以使用-f参数强制覆盖。

# fpm -s dir -t rpm -n nginx -v 1.6.2 -f /application/nginx
no value for epoch is set, defaulting to nil {:level=>:warn}
Force flag given. Overwriting package at nginx-1.6.2-1.x86_64.rpm {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}
打包看似成功,但查看包的内容,只是这一个软链接文件。

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/application/nginx
原因:目录结尾的/问题,类似rm删除软链接目录
定制LNMP的RPM包思路

编译安装好nginx,mysql,php,此处有个问题,就是php的大部分依赖环境是通过yum安装的,但有一个libiconv-1.14.tar.gz包需要编译安装,安装时已经指定了安装目录,只需一同打包即可。

还有一个问题,就是mysql这个目录比较大,用fpm打包耗时长。平时我们有可能需要对nginx或php做优化,这样又得重新打包。因此我们可以将mysql分离出来,分别打包。只需在制作nginx+php的rpm包时添加mysql的依赖即可。# 参考命令
# fpm -s dir -t rpm -n web2 -v 1.1 \
--description 'lnmp.cms,bbs.blog' \
-d ‘libxslt-devel,nfs-utils,rpcbind,mysql,libmcrypt-devel,mhash,mhash-devel,mcrypt' \
--post-install /server/scripts/lnmp-init.sh \
/application /usr/local/libiconv/ /app/logs/ /data0/ /server/ 查看全部
FPM打包工具

FPM的作者是:jordansissel
FPM的github:https://github.com/jordansissel/fpm
FPM功能简单说就是将一种类型的包转换成另一种类型。

1. 支持的源类型包
dir 将目录打包成所需要的类型,可以用于源码编译安装的软件包
rpm 对rpm进行转换
gem 对rubygem包进行转换
python 将python模块打包成相应的类型



2. 支持的目标类型包
rpm 转换为rpm包
deb 转换为deb包
solaris 转换为solaris包
puppet 转换为puppet模块

3. FPM安装
fpm是ruby写的,因此系统环境需要ruby,且ruby版本号大于1.8.5。
# 安装ruby模块
yum -y install ruby rubygems ruby-devel
# 添加阿里云的Rubygems仓库,外国的源慢
gem sources -a http://mirrors.aliyun.com/rubygems/
# 移除原生的Ruby仓库
gem sources --remove http://rubygems.org/
# 安装fpm
gem install fpm

4. FPM参数
详细使用见fpm –help

常用参数

-s 指定源类型
-t 指定目标类型,即想要制作为什么包
-n 指定包的名字
-v 指定包的版本号
-C 指定打包的相对路径 Change directory to here before searching forfiles
-d 指定依赖于哪些包
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 软件包安装完成之后所要运行的脚本;同--after-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove
使用实例–实战定制nginx的RPM包

1. 安装nginx
yum -y install pcre-devel openssl-devel
useradd nginx -M -s /sbin/nologin
tar xf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --prefix=/application/nginx-1.6.2 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
make && make install
ln -s /application/nginx-1.6.2/ /application/nginx

2. 编写脚本
[root@oldboy ~]# cd /server/scripts/
[root@oldboy scripts]# vim nginx_rpm.sh # 这是安装完rpm包要执行的脚本
#!/bin/bash
useradd nginx -M -s /sbin/nologin
ln -s /application/nginx-1.6.2/ /application/nginx

3. 打包
# fpm -s dir -t rpm -n nginx -v 1.6.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.6.2/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# ll -h nginx-1.6.2-1.x86_64.rpm
-rw-r--r-- 1 root root 6.7M Nov 1 10:02 nginx-1.6.2-1.x86_64.rpm

4. 安装rpm包

安装rpm包的三种方法:
  • rpm命令安装

# rpm -ivh nginx-1.6.2-1.x86_64.rpm
error: Failed dependencies:
pcre-devel is needed by nginx-1.6.2-1.x86_64
openssl-devel is needed by nginx-1.6.2-1.x86_64
但会报如上依赖错误,需要先yum安装依赖才能安装rpm包。

  • yum命令安装rpm包

yum -y localinstall nginx-1.6.2-1.x86_64.rpm
这个命令会自动先安装rpm包的依赖,然后再安装rpm包。





注意事项

1. 路径问题
# 相对路径
# fpm -s dir -t rpm -n nginx -v 1.6.2 .
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/client_body_temp
/conf/extra/dynamic_pools
/conf/extra/static_pools
…………
# 绝对路径
# fpm -s dir -t rpm -n nginx -v 1.6.2 /application/nginx-1.6.2/
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/application/nginx-1.6.2/client_body_temp
/application/nginx-1.6.2/conf/extra/dynamic_pools
/application/nginx-1.6.2/conf/extra/static_pools
/application/nginx-1.6.2/conf/fastcgi.conf
/application/nginx-1.6.2/conf/fastcgi.conf.default
…………
使用rpm -qpl 命令可以查看rpm包的内容。
注:fpm类似tar打包一样,只是fpm打的包能够被yum命令识别而已。

2. 软链接问题
# fpm -s dir -t rpm -n nginx -v 1.6.2 /application/nginx
no value for epoch is set, defaulting to nil {:level=>:warn}
File already exists, refusing to continue: nginx-1.6.2-1.x86_64.rpm {:level=>:fatal}
# 报错是因为当前目录存在同名的rpm包,可以使用-f参数强制覆盖。

# fpm -s dir -t rpm -n nginx -v 1.6.2 -f /application/nginx
no value for epoch is set, defaulting to nil {:level=>:warn}
Force flag given. Overwriting package at nginx-1.6.2-1.x86_64.rpm {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.6.2-1.x86_64.rpm"}
打包看似成功,但查看包的内容,只是这一个软链接文件。

# rpm -qpl nginx-1.6.2-1.x86_64.rpm
/application/nginx
原因:目录结尾的/问题,类似rm删除软链接目录

定制LNMP的RPM包思路

编译安装好nginx,mysql,php,此处有个问题,就是php的大部分依赖环境是通过yum安装的,但有一个libiconv-1.14.tar.gz包需要编译安装,安装时已经指定了安装目录,只需一同打包即可。

还有一个问题,就是mysql这个目录比较大,用fpm打包耗时长。平时我们有可能需要对nginx或php做优化,这样又得重新打包。因此我们可以将mysql分离出来,分别打包。只需在制作nginx+php的rpm包时添加mysql的依赖即可。
# 参考命令
# fpm -s dir -t rpm -n web2 -v 1.1 \
--description 'lnmp.cms,bbs.blog' \
-d ‘libxslt-devel,nfs-utils,rpcbind,mysql,libmcrypt-devel,mhash,mhash-devel,mcrypt' \
--post-install /server/scripts/lnmp-init.sh \
/application /usr/local/libiconv/ /app/logs/ /data0/ /server/

ClloudBoot 之 YUM仓库搭建

CloudBootSiffre 发表了文章 • 0 个评论 • 1377 次浏览 • 2016-01-26 11:02 • 来自相关话题

YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源。网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。

相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性。有了局域网中的YUM源服务器,即便在Internet连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。
 
我们将针对以下两种方式进行讲解:







 
一、 自己制作或单独下载的RPM包
 
1. 创建yum仓库目录mkdir -p /application/yum/centos6.6/x86_64/2.上传rpm包到此目录,此目录下面还可以包括文件夹cd /application/yum/centos6.6/x86_64/
rz -y3.安装createrepo软件yum -y install createrepo4.初始化repodata索引文件createrepo -pdo /application/yum/centos6.6/x86_64/ /application/yum/centos6.6/x86_64/



5.提供yum服务# 可以用Apache或nginx提供web服务,但用Python的http模块更简单,适用于内网环境
cd /application/yum/centos6.6/x86_64/
python -m SimpleHTTPServer 80 &>/dev/null &
可以通过浏览器输入本机IP查看。6.添加新的rpm包
只下载软件不安装
yumdownloader pcre-devel openssl-devel
 每加入一个rpm包就要更新一下。
createrepo --update /application/yum/centos6.6/x86_64/7.平时yum安装软件时不删除安装包# cat /etc/yum.conf
keepcache=1
# 安装包存储目录
cachedir=/var/cache/yum/$basearch/$releasever
# /var/cache/yum/x86_64/6/base/packages8.客户端配置# cd /etc/yum.repos.d
vim Siffre.repo
[Siffre]
name=Server
baseurl=http://10.0.0.8
enable=1
gpgcheck=0
指定使用Siffre库
yum --enablerepo=Siffre --disablerepo=base,extras,updates,epel list
上面是临时使用内网yum源,想永久并简单使用yum -y install lrzsz命令,就需要修改配置文件将默认的repo文件关闭。
cd /etc/yum.repos.d/
vim CentOS-Base.repo
# 在每一个启动的源加上
# enabled=0 #改为1就启用,没有此参数也是启用。
[base]
…………
enabled=0
[updates]
…………
enabled=0
[extras]
…………
enabled=0
# 还有其他开启的仓库就使用这个办法关闭。二、镜像yum源

上面只是将自己制作的rpm包,放入yum源。但还有一种企业需求,说的更具体一点,平时学生上课yum安装软件都是从公网下载的,占用带宽,因此在学校里搭建一个内网yum服务器,但又考虑到学生回家也要使用yum安装软件,如果yum软件的数据库文件repodata不一样,就会有问题。因此我想到的解决方法就是直接使用公网yum源的repodata。

镜像同步公网yum源:
上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。http://mirrors.ustc.edu.cn/status/CentOS官方标准源:rsync://mirrors.ustc.edu.cn/centos/epel源:rsync://mirrors.ustc.edu.cn/epel/
 同步命令:
使用rsync同步yum源,为了节省带宽、磁盘和下载时间,我只同步了CentOS6的rpm包,这样所有的rpm包只占用了21G,全部同步需要300G左右。
同步base源,小技巧,我们安装系统的光盘镜像含有部分rpm包,大概3G,这些就不用重新下载。
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/
 epel源
/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/学生使用内网yum源方法:
可以自建一个内网dns,如果没有,可使用hosts解析
echo '192.168.0.200 mirrors.aliyun.com' >>/etc/hosts
结果展示
# du -sh yum_data
21G yum_data
# tree -L 3 yum_data/
yum_data/
├── centos
│ ├── 6
│ │ ├── extras
│ │ ├── os
│ │ └── updates
│ └── RPM-GPG-KEY-CentOS-6
├── epel
│ └── 6
│ └── x86_64
 
 
  查看全部
YUM主要用于自动安装、升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系。要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个软件仓库我们习惯称为yum源。网络上有大量的yum源,但由于受到网络环境的限制,导致软件安装耗时过长甚至失败。特别是当有大量服务器大量软件包需要安装时,缓慢的进度条令人难以忍受。因此我们在优化系统时,都会更换国内的源。

相比较而言,本地YUM源服务器最大优点是局域网的快速网络连接和稳定性。有了局域网中的YUM源服务器,即便在Internet连接中断的情况下,也不会影响其他YUM客户端的软件安装和升级。
 
我们将针对以下两种方式进行讲解:


screenshot.png


 
一、 自己制作或单独下载的RPM包
 
1. 创建yum仓库目录
mkdir -p /application/yum/centos6.6/x86_64/
2.上传rpm包到此目录,此目录下面还可以包括文件夹
cd /application/yum/centos6.6/x86_64/
rz -y
3.安装createrepo软件
yum -y install createrepo
4.初始化repodata索引文件
createrepo -pdo /application/yum/centos6.6/x86_64/ /application/yum/centos6.6/x86_64/



5.提供yum服务
# 可以用Apache或nginx提供web服务,但用Python的http模块更简单,适用于内网环境
cd /application/yum/centos6.6/x86_64/
python -m SimpleHTTPServer 80 &>/dev/null &
可以通过浏览器输入本机IP查看。
6.添加新的rpm包
  • 只下载软件不安装

yumdownloader pcre-devel openssl-devel

  •  每加入一个rpm包就要更新一下。

createrepo --update /application/yum/centos6.6/x86_64/
7.平时yum安装软件时不删除安装包
# cat /etc/yum.conf
keepcache=1
# 安装包存储目录
cachedir=/var/cache/yum/$basearch/$releasever
# /var/cache/yum/x86_64/6/base/packages
8.客户端配置
# cd /etc/yum.repos.d
vim Siffre.repo
[Siffre]
name=Server
baseurl=http://10.0.0.8
enable=1
gpgcheck=0

  • 指定使用Siffre库

yum --enablerepo=Siffre --disablerepo=base,extras,updates,epel list

  • 上面是临时使用内网yum源,想永久并简单使用yum -y install lrzsz命令,就需要修改配置文件将默认的repo文件关闭。

 cd /etc/yum.repos.d/
vim CentOS-Base.repo
# 在每一个启动的源加上
# enabled=0 #改为1就启用,没有此参数也是启用。
[base]
…………
enabled=0
[updates]
…………
enabled=0
[extras]
…………
enabled=0
# 还有其他开启的仓库就使用这个办法关闭。
二、镜像yum源

上面只是将自己制作的rpm包,放入yum源。但还有一种企业需求,说的更具体一点,平时学生上课yum安装软件都是从公网下载的,占用带宽,因此在学校里搭建一个内网yum服务器,但又考虑到学生回家也要使用yum安装软件,如果yum软件的数据库文件repodata不一样,就会有问题。因此我想到的解决方法就是直接使用公网yum源的repodata。

镜像同步公网yum源:
  • 上游yum源必须要支持rsync协议,否则不能使用rsync进行同步。
  • http://mirrors.ustc.edu.cn/status/
  • CentOS官方标准源:rsync://mirrors.ustc.edu.cn/centos/
  • epel源:rsync://mirrors.ustc.edu.cn/epel/

 同步命令:
  • 使用rsync同步yum源,为了节省带宽、磁盘和下载时间,我只同步了CentOS6的rpm包,这样所有的rpm包只占用了21G,全部同步需要300G左右。

  • 同步base源,小技巧,我们安装系统的光盘镜像含有部分rpm包,大概3G,这些就不用重新下载。

/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/
/usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/

  •  epel源

/usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/
学生使用内网yum源方法:
  • 可以自建一个内网dns,如果没有,可使用hosts解析

echo '192.168.0.200 mirrors.aliyun.com' >>/etc/hosts

  • 结果展示

# du -sh yum_data
21G yum_data
# tree -L 3 yum_data/
yum_data/
├── centos
│ ├── 6
│ │ ├── extras
│ │ ├── os
│ │ └── updates
│ └── RPM-GPG-KEY-CentOS-6
├── epel
│ └── 6
│ └── x86_64

 
 
 

CloudBoot 之 Cobbler

CloudBootSiffre 发表了文章 • 0 个评论 • 1332 次浏览 • 2016-01-22 16:38 • 来自相关话题

一、Cobbler介绍

1.Cobbler

Cobbler是一个快速网络安装操作系统的服务软件。该工具使用Python开发,小巧轻便,使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP、DNS以及yum仓库,构造系统ISO镜像。

Cobbler命令行管理和Web界面管理,还提供了API接口,可以方便二次开发使用。

Cobbler 可以支持PXE启动, 操作系统重新安装, 以及虚拟化客户机创建,包括Xen, KVM or VMware. Cobbler透过koan程序以支持虚拟化客户机安装。Cobbler可以支持管理复杂网路环境,如创建在链路聚合以太网的桥接环境。

Cobbler提供以下服务集成:
PXE服务支持DHCP服务管理DNS服务管理电源管理KickStart服务支持Yum仓库管理

2. 使用和支持Cobbler的组织











3.系统支持

参见官网:https://cobbler.github.io/manuals/2.6.0/1/2_-_Distribution_Support.html
 
4. 常用架构






5.Cobbler工作流程






6.Cobbler模型






二、实验环境
Cobbler服务器系统:CentOS 6.7 64位 【VMWare】
 
IP地址:192.168.16.128

需要安装部署的Linux系统:
eth0(第一块网卡,用于外网)IP地址段:192.168.16.129-192.168.16.135
 
子网掩码:255.255.255.0
 
网关:192.168.16.1
 
DNS:8.8.8.8
 
所有服务器均支持PXE网络启动
 
三、Cobbler安装和部署
 
3.1 Cobbler安装和环境部署

3.1.1Cobbler环境准备

前提:
需要一个DVD或ISO文件的操作系统的分布;服务器有足够的本地磁盘可用空间在/var/www/cobbler解压缩DVD/ISO;服务器和客户端都有一个共同的IP网络;这个网络上的DHCP服务器是唯一的实例;在此网络上的客户端是支持PXE网络启动;

3.1.2 定义Yum源

对于CentOS本身源,可根据自己所在地选择离自己进的镜像源,比如mirrors.163.com或mirrors.sohu.com

相关配置文件: /etc/yum.repos.d/CentOS-Base.repo,采用网易的源cd /etc/yum.repos.d/

mkdir backup

mv *.repo ./backup

wget -c -O CentOS-Base.repo
http://mirrors.163.com/.help/CentOS6-Base-163.repo

yum list注:搭建本地Yum仓库,参考这里:http://jcenter.idcos.com/?/article/28
 
3.1.3 安装EPEL源

cobbler不在CentOS的基本源中,需要导入EPEL源升级软件包,确保epel-release包的版本为最新Centos5 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos5 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos6 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos6 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm
安装
rpm -Uvh 'http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm'

yum update (升级所有包,改变软件设置和系统设置,系统版本内核都升级)

yum upgrade (升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变)
检查是否安装
yum list|grep -E "^epel"

epel-release.noarch 6-8 installed3.1.4 关闭Selinux和iptables防火墙
关闭防火墙
#Cobbler会使用到好几个端口,为了简化,直接把iptables关闭
chkconfig ip6tables off
chkconfig iptables off
/etc/init.d/ip6tables stop
/etc/init.d/iptables stop
关闭Selinux
sed -i '/^SELINUX=/ s/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
重启系统生效
reboot3.2 Cobbler安装和配置

3.2.1安装Cobbler
安装Cobbler包(需要支持web,则安装cobbler-web)
yum install -y cobbler cobbler-web
安装Cobbler相关包
yum install -y tftp-server xinetd dhcp httpd rsync
安装运行Cobbler需要的软件包
yum install -y pykickstart debmirror python-ctypes cma注:
如果要部署debian/ubuntu系统,则需要debmirror软件包;想使用电源管理功能的话需要安装cman或fence-agents;如果需要管理DNS,这需要安装bind软件包;打开服务需要使用的端口如下:
udp ———> 69 ———> tftpudp ———> 53 ———> dnstcp ———> 80/443 ———> web【http】dhcp ———> 67 68
 
启动Cobbler
/etc/init.d/cobblerd start
启动完后,cobbler check命令检查错误【以下是常见错误】
cobbler checkThe following are potential configuration items that you may want to fix:
#错误指出我们的cobbler不应该是本地的IP地址,而是一个可以被解析的hostname或者IP

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.
#错误指出next_server的IP地址不应该是127.0.0.1的主机地址,而应该是一个真正的tftp服务器地址

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.
#错误是不一定要联网下载某些程序,而安装syslinux就可以;【安装完syslinux 问题依旧,可直接忽略...】

3 : 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.
#更改tftp和rsync由cobbler管理

4 : change 'disable' to 'no' in /etc/xinetd.d/rsync
#debmrror没有定义好,yum install 安装即可

5 : debmirror package is not installed, it will be required to manage debian deployments and repositories
#需要额外安装pykickstart

6 : ksvalidator was not found, install pykickstart
#cobbler安装完成后的管理员密码需要替换,因为所有安装后的密码都是一致的

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
#没有fencing设备,为可选的

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.3.2.2配置Cobbler

3.2.2.1设置HTTP服务
修改HTTP配置文件
vim /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1:80
启用wsgi模块【失败—可忽略】需要确认mod_wsgi已经正确安装,否则需要手动安装yum -y install mod_wsgi
rpm -qa |grep wsgi #检查
mod_wsgi-3.2-7.el6.x86_64
启用wsgi模块只需要取消/etc/httpd/conf.d/wsgi.conf文件中 LoadModule wsgi_module modules/mod_wsgi.so 行的注释
sed -i 's*#LoadModule*LoadModule*g' /etc/httpd/conf.d/wsgi.conf
cat /etc/httpd/conf.d/wsgi.conf #查看
LoadModule wsgi_module modules/mod_wsgi.so3.2.2.2配置tftp和rsync

修改rsync和tftp这两个服务的xinetd配置,只需修改rsync和tftp的配置文件,讲disable = yes 修改为 disable = no来开启tftp 和 rsync 服务的开机自启动sed -i 's/ disable = yes/ disable = no/' /etc/xinetd.d/tftp
sed -i 's/ disable = yes/ disable = no/' /etc/xinetd.d/rsync
/etc/init.d/xinetd restart3.2.2.3 配置cobbler主配置文件

在启动Cobbler服务之前,你需要修改一些配置文件。在修改每一个文件之前最好先备份下当前的文件。

Cobblerd的配置文件为/etc/cobbler/settings ,这个文件是YAML信息的格式文件。

根据需要修改 cobbler主配置文件: /etc/cobbler/settings

Server 和 Next_Server
server 选项设置IP用于为cobbler 服务器指定地址,请不要使用0.0.0.0,设置一个你希望和cobbler服务器通过http和tftp等协议链接的IP
sed -i 's/server: 127.0.0.1/server: 192.168.21.128/g' /etc/cobbler/settings
next_server选项是DHCP/PXE网络引导文件被下载的TFTP服务器的IP,它将和server设置为同一个IP
sed -i 's/next_server: 127.0.0.1/next_server: 192.168.21.128 /g' /etc/cobbler/settings
修改后,查看结果
grep -E "^server|next_server" /etc/cobbler/settings
next_server: 192.168.16.130
server: 192.168.16.1303.2.2.4 Cobbler管理rsync 和 dhcp服务

为了pxe的启动,需要一个DHCP服务器地址,并直接引导系统,它可以在网络中下载引导文件到TFTP的服务器,cobbler可以通过manage_dhcp的设置来进行管理,让cobbler来管理dhcp服务,在做自定义配置时,需要修改dhcp相关配置,以配合PXE启动用,编辑文件/etc/cobbler/settings 
manage_dhcp: 1 (注:默认为0,表示不进行管理dhcp服务,可以修改为1,对其进行管理。此为使cobbler管理dhcp也就是后面用于同步更新配置信息[cobbler sync]) 默认为0,不对rsync进行管理,可以修改为1 进行管理
sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/setting
修改后,查看结果
grep -E "^manage_dhcp|^manage_rsync" /etc/cobbler/settings
manage_dhcp: 1
manage_rsync: 13.2.3 配置cobbler的web环境
修改认证文件
grep "module = authn_configfile" /etc/cobbler/modules.conf
module = authn_configfile # 修改认证方式为密码文件类型
用户和密码
htdigest /etc/cobbler/users.digest "Cobbler" tech
#添加tech用户,提示输入2遍密码确认
Adding user tech in realm Cobbler
New password: 123123 # 这里我设置的密码是 123123
Re-type new password: 123123
生成cobbler安装系统root初始密码
openssl passwd -1 -salt 'random-phrase-here' ' 1234567890' # 该密码是用来登录通过cobbler安装后新机器的密码
$1$random-p$RkqDMTpuNlZZhJ7moLn3Q
将上面的加密串加入cobbler配置文件中
vim /etc/cobbler/settings
#修改为如下配置
default_password_crypted: " $1$random-p$RkqDMTpuNlZZhJ7moLn3Q."
查看
grep "default_password" /etc/cobbler/settings
default_password_crypted: " $1$random-p$RkqDMTpuNlZZhJ7moLn3Q."3.2.4 配置dhcp与cobbler相关服务
做任何修改操作前,先备份
cp /etc/cobbler/dhcp.template{,.bak}
ll /etc/cobbler/dhcp.template*
-rw-r--r-- 1 root root 2946 Jul 18 2014 /etc/cobbler/dhcp.template
-rw-r--r-- 1 root root 2946 Jul 7 17:01 /etc/cobbler/dhcp.template.bak
修改dhcp配置文件
vim /etc/cobbler/dhcp.template

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;# 需要修改192.168.16.0为自己网段
subnet 192.168.16.0 netmask 255.255.255.0 {
option routers 192.168.16.1; # 修改自己的路由
option domain-name-servers 8.8.8.8; # 域名服务器地址
option subnet-mask 255.255.255.0; # 子网掩码
range dynamic-bootp 192.168.16.140 192.168.16.250;#指定IP范围
filename "/pxelinux.0";
default-lease-time 21600; #缺省租约时间
max-lease-time 43200; #最大租约时间
next-server 192.168.16.130; #指定引导服务器【cobbler服务器IP】
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";
}
}
}其余部分维持现状,将上述内容拷贝到/etc/dhcp/dhpcd.conf里。
设置debmirror
#注释掉@dists和@arches的行
sed -i -e 's|@dists=.*|#@dists=|' /etc/debmirror.conf
sed -i -e 's|@arches=.*|#@arches=|' /etc/debmirror.conf
下载引导操作系统文件
#加载部分缺失的网络boot-loaders
cobbler get-loaders
检查Cobbler配置
cobbler check

The following are potential configuration items that you may want to fix:
#dhcpd没有运行
1 : service dhcpd is not running
#执行cobbler get-loaders 系统将自动下载loader程序
2 : 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.

Restart cobblerd and then run 'cobbler sync' to apply changes
DHCP启动成功后,执行sync同步得到如下结果表示成功
cobbler sync

task started: 2014-12-29_184104_sync
task started (id=Sync, time=Mon Dec 29 18:41:04 2014)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/images/CentOS6.6-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/images/CentOS6.6-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
trying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
copying: /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
copying: /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
trying hardlink /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying distros to tftpboot
copying files for distro: CentOS6.6-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS6.6-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CentOS6.6-x86_64/initrd.img
copying images
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS6.6-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CentOS6.6-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CentOS6.6-x86_64/initrd.img
Writing template files for CentOS6.6-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: CentOS6.6-x86_64
cleaning link caches
rendering Rsync files
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout: Shutting down dhcpd: [ OK ]
Starting dhcpd: [ OK ]

received on stderr:
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE *** → 出现此行提示,表示sync同步dhcp成功3.2.5重启cobbler和更新相关配置
重启服务
/etc/init.d/cobblerd restart
同步最新cobbler配置,它会根据配置自动修改dhcp,bind等服务,因此我称之为容器的原因
cobbler sync # 同步配置文件到dhcp服务器
启动相关服务并设置开机启动
chkconfig httpd on
chkconfig xinetd on
chkconfig cobblerd on
chkconfig dhcpd on
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/cobblerd restart
/etc/init.d/dhcpd restart
设置Cobbler相关服务启动脚本
 vim /etc/init.d/coobler

#!/bin/sh
# chkconfig: - 80 90
# description:cobbler
case $1 in
start)
/etc/init.d/httpd start
/etc/init.d/xinetd start
/etc/init.d/dhcpd start
/etc/init.d/cobblerd start
;;
stop)
/etc/init.d/httpd stop
/etc/init.d/xinetd stop
/etc/init.d/dhcpd stop
/etc/init.d/cobblerd stop
;;
restart)
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/dhcpd restart
/etc/init.d/cobblerd restart
;;
status)
/etc/init.d/httpd status
/etc/init.d/xinetd status
/etc/init.d/dhcpd status
/etc/init.d/cobblerd status
;;
sync)
cobbler sync
;;
*)
echo "Input error,please in put 'start|stop|restart|status|sync'!";
exit 2>&amp;1 >/dev/null &amp;
;;
esac
EOF
添加脚本执行权限
chmod +x /etc/rc.d/init.d/cobbler
添加开机启动
chkconfig cobbler on
重启
cobblerservice cobbler restart
挂载系统安装镜像到http服务器站点目录
上传ISO镜像到服务器的/server/iso/目录创建目录/var/www/html/os/{CentOS-6.6-x86_64}
mkdir -p /var/www/html/os/CentOS-6.6-x86_64 # 创建挂载目录
提示:如果是本地iso镜像则挂载用 loop方式; 如果是挂载光盘则直接挂载到指定目录即可
mount -t iso9660 -o loop /root/CentOS-6.6-x86_64-bin-DVD1.iso /var/www/html/os/CentOS-6.6-x86_64/

mount /dev/cdrom /var/www/html/os/CentOS-6.6-x86_64/
挂载完之后,要编辑开机自挂载项
vi /etc/fstab
/server/iso/CentOS-6.6-x86_64-bin-DVD1.iso /var/www/html/os/CentOS-6.6-x86_64 iso9660 defaults 0 0
或者
/dev/cdrom /var/www/html/os/CentOS-6.6-x86_64 iso9660 defaults 0 0备注:
iso9660使用df -T 查看设备 卸载:umount /var/www/html/os/CentOS-6.5-x86_64重复上面的操作,把自己需要安装的CentOS系统镜像文件都挂载到/var/www/html/os/目录下
 
例如: CentOS-5.10-x86_64-bin-DVD-1of2.iso CentOS-7.0-1406-x86_64-DVD.iso
 
 导入系统镜像到cobbler

从DVD中导入客户端的OS; 将自动设置了“x86_64”,并将其命名为CentOS6.6-x86_64,导入需要时间,可查看/var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/目录文件生成情况cobbler import --path=/var/www/html/os/CentOS-6.6-x86_64 --name=CentOS-6.6-x86_64 --arch=x86_64
命令格式:cobbler import --path=镜像路径 -- name=安装引导名 --arch=32位或64位
参数说明:
--name 为安装源定义一个名字
--arch 指定安装源是32位还是64位、ia64, 目前支持的选项有: x86│x86_64│ia64导入成功的结果如下:task started: 2014-12-28_214043_import
task started (id=Media import, time=Sun Dec 28 21:40:43 2014)
Found a candidate signature: breed=redhat, version=rhel6
Found a matching signature: breed=redhat, version=rhel6
Adding distros from path /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64:
creating new distro: CentOS-6.6-x86_64
trying symlink: /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64 -> /var/www/cobbler/links/CentOS-6.6-x86_64
creating new profile: CentOS-6.6-x86_64
associating repos
checking for rsync repo(s)
checking for rhn repo(s)
checking for yum repo(s)
sta将需要安装系统的服务器网卡启用 PXE,启动服务器从 PXE 引导 默认从本地硬盘引导,可以修改,建议还是保持此默认 rting descent into /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64 for CentOS-6.6-x86_64
processing repo at : /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64
need to process repo/comps: /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64
looking for /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/repodata
*** TASK COMPLETE ***四、安装系统
 
4.1 命令行安装
 
将需要安装系统的服务器网卡启用 PXE,启动服务器从 PXE 引导 默认从本地硬盘引导,可以修改,建议还是保持此默认 。

选择对应的系统即可安装:




 
4.2 Web安装
 
Cobbler web 界面是一个很好的前端,非常容易管理 Cobbler,可以添加和删除 system distro profile,可 以 查 看 、 编 辑 distros, profiles,subprofiles, systems, repos 、 kickstart 文件 。
 
浏览器访问登录页面: https://ip/cobbler_web ,输入用户名密码即可





 
登录后的页面





 
web 管理相对易于使用管理这里就不再赘述。 
 
====>Cobbler就介绍到这里了,详情可参见官方网站:https://cobbler.github.io/manuals/2.6.0/ 查看全部
一、Cobbler介绍

1.Cobbler

Cobbler是一个快速网络安装操作系统的服务软件。该工具使用Python开发,小巧轻便,使用简单的命令即可完成PXE网络安装环境的配置,同时还可以管理DHCP、DNS以及yum仓库,构造系统ISO镜像。

Cobbler命令行管理和Web界面管理,还提供了API接口,可以方便二次开发使用。

Cobbler 可以支持PXE启动, 操作系统重新安装, 以及虚拟化客户机创建,包括Xen, KVM or VMware. Cobbler透过koan程序以支持虚拟化客户机安装。Cobbler可以支持管理复杂网路环境,如创建在链路聚合以太网的桥接环境。

Cobbler提供以下服务集成:
  • PXE服务支持
  • DHCP服务管理
  • DNS服务管理
  • 电源管理
  • KickStart服务支持
  • Yum仓库管理


2. 使用和支持Cobbler的组织

1.png


2.png


3.系统支持

参见官网:https://cobbler.github.io/manuals/2.6.0/1/2_-_Distribution_Support.html
 
4. 常用架构

cobbler(1).jpg


5.Cobbler工作流程

流程(3).jpg


6.Cobbler模型

3.png


二、实验环境
  • Cobbler服务器系统:CentOS 6.7 64位 【VMWare】

 
  • IP地址:192.168.16.128


需要安装部署的Linux系统:
  • eth0(第一块网卡,用于外网)IP地址段:192.168.16.129-192.168.16.135

 
  • 子网掩码:255.255.255.0

 
  • 网关:192.168.16.1

 
  • DNS:8.8.8.8

 
  • 所有服务器均支持PXE网络启动

 
三、Cobbler安装和部署
 
3.1 Cobbler安装和环境部署

3.1.1Cobbler环境准备

前提:

  • 需要一个DVD或ISO文件的操作系统的分布;
  • 服务器有足够的本地磁盘可用空间在/var/www/cobbler解压缩DVD/ISO;
  • 服务器和客户端都有一个共同的IP网络;
  • 这个网络上的DHCP服务器是唯一的实例;
  • 在此网络上的客户端是支持PXE网络启动;


3.1.2 定义Yum源

对于CentOS本身源,可根据自己所在地选择离自己进的镜像源,比如mirrors.163.com或mirrors.sohu.com

相关配置文件: /etc/yum.repos.d/CentOS-Base.repo,采用网易的源
cd /etc/yum.repos.d/

mkdir backup

mv *.repo ./backup

wget -c -O CentOS-Base.repo
http://mirrors.163.com/.help/CentOS6-Base-163.repo

yum list
注:搭建本地Yum仓库,参考这里:http://jcenter.idcos.com/?/article/28
 
3.1.3 安装EPEL源

cobbler不在CentOS的基本源中,需要导入EPEL源升级软件包,确保epel-release包的版本为最新
Centos5 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos5 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos6 32位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

Centos6 64位: rpm -Uvh http://mirrors.ustc.edu.cn/fed ... h.rpm

  • 安装

rpm -Uvh 'http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm'

yum update (升级所有包,改变软件设置和系统设置,系统版本内核都升级)

yum upgrade (升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变)

  • 检查是否安装

yum list|grep -E "^epel"

epel-release.noarch 6-8 installed
3.1.4 关闭Selinux和iptables防火墙
  • 关闭防火墙

#Cobbler会使用到好几个端口,为了简化,直接把iptables关闭
chkconfig ip6tables off
chkconfig iptables off
/etc/init.d/ip6tables stop
/etc/init.d/iptables stop

  • 关闭Selinux

sed -i '/^SELINUX=/ s/^SELINUX=.*/SELINUX=disabled/g'  /etc/selinux/config

  • 重启系统生效

reboot
3.2 Cobbler安装和配置

3.2.1安装Cobbler
  • 安装Cobbler包(需要支持web,则安装cobbler-web)

yum install -y cobbler cobbler-web

  • 安装Cobbler相关包

yum install -y tftp-server xinetd dhcp httpd rsync

  • 安装运行Cobbler需要的软件包

yum install -y pykickstart debmirror python-ctypes cma
注:
  • 如果要部署debian/ubuntu系统,则需要debmirror软件包;
  • 想使用电源管理功能的话需要安装cman或fence-agents;
  • 如果需要管理DNS,这需要安装bind软件包;
  • 打开服务需要使用的端口如下:

  1. udp ———> 69 ———> tftp
  2. udp ———> 53 ———> dns
  3. tcp ———> 80/443 ———> web【http】
  4. dhcp ———> 67 68

 
  • 启动Cobbler

/etc/init.d/cobblerd start

  • 启动完后,cobbler check命令检查错误【以下是常见错误】

cobbler check
The following are potential configuration items that you may want to fix:
#错误指出我们的cobbler不应该是本地的IP地址,而是一个可以被解析的hostname或者IP

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.
#错误指出next_server的IP地址不应该是127.0.0.1的主机地址,而应该是一个真正的tftp服务器地址

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.
#错误是不一定要联网下载某些程序,而安装syslinux就可以;【安装完syslinux 问题依旧,可直接忽略...】

3 : 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.
#更改tftp和rsync由cobbler管理

4 : change 'disable' to 'no' in /etc/xinetd.d/rsync
#debmrror没有定义好,yum install 安装即可

5 : debmirror package is not installed, it will be required to manage debian deployments and repositories
#需要额外安装pykickstart

6 : ksvalidator was not found, install pykickstart
#cobbler安装完成后的管理员密码需要替换,因为所有安装后的密码都是一致的

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
#没有fencing设备,为可选的

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.
3.2.2配置Cobbler

3.2.2.1设置HTTP服务
  • 修改HTTP配置文件

vim /etc/httpd/conf/httpd.conf
ServerName 127.0.0.1:80

  • 启用wsgi模块【失败—可忽略】
  • 需要确认mod_wsgi已经正确安装,否则需要手动安装yum -y install mod_wsgi

rpm -qa |grep wsgi #检查
mod_wsgi-3.2-7.el6.x86_64

  • 启用wsgi模块只需要取消/etc/httpd/conf.d/wsgi.conf文件中 LoadModule wsgi_module modules/mod_wsgi.so 行的注释

sed -i 's*#LoadModule*LoadModule*g' /etc/httpd/conf.d/wsgi.conf
cat /etc/httpd/conf.d/wsgi.conf #查看
LoadModule wsgi_module modules/mod_wsgi.so
3.2.2.2配置tftp和rsync

修改rsync和tftp这两个服务的xinetd配置,只需修改rsync和tftp的配置文件,讲disable = yes 修改为 disable = no来开启tftp 和 rsync 服务的开机自启动
sed -i 's/ disable = yes/ disable = no/' /etc/xinetd.d/tftp
sed -i 's/ disable = yes/ disable = no/' /etc/xinetd.d/rsync
/etc/init.d/xinetd restart
3.2.2.3 配置cobbler主配置文件

在启动Cobbler服务之前,你需要修改一些配置文件。在修改每一个文件之前最好先备份下当前的文件。

Cobblerd的配置文件为/etc/cobbler/settings ,这个文件是YAML信息的格式文件。

根据需要修改 cobbler主配置文件: /etc/cobbler/settings

Server 和 Next_Server
  • server 选项设置IP用于为cobbler 服务器指定地址,请不要使用0.0.0.0,设置一个你希望和cobbler服务器通过http和tftp等协议链接的IP

sed -i 's/server: 127.0.0.1/server: 192.168.21.128/g' /etc/cobbler/settings

  • next_server选项是DHCP/PXE网络引导文件被下载的TFTP服务器的IP,它将和server设置为同一个IP

sed -i 's/next_server: 127.0.0.1/next_server: 192.168.21.128 /g' /etc/cobbler/settings

  • 修改后,查看结果

grep -E "^server|next_server" /etc/cobbler/settings
next_server: 192.168.16.130
server: 192.168.16.130
3.2.2.4 Cobbler管理rsync 和 dhcp服务

为了pxe的启动,需要一个DHCP服务器地址,并直接引导系统,它可以在网络中下载引导文件到TFTP的服务器,cobbler可以通过manage_dhcp的设置来进行管理,让cobbler来管理dhcp服务,在做自定义配置时,需要修改dhcp相关配置,以配合PXE启动用,编辑文件/etc/cobbler/settings 
  • manage_dhcp: 1 (注:默认为0,表示不进行管理dhcp服务,可以修改为1,对其进行管理。此为使cobbler管理dhcp也就是后面用于同步更新配置信息[cobbler sync]) 默认为0,不对rsync进行管理,可以修改为1 进行管理

sed -i 's/manage_rsync: 0/manage_rsync: 1/g' /etc/cobbler/settings
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/setting

  • 修改后,查看结果

grep -E "^manage_dhcp|^manage_rsync" /etc/cobbler/settings
manage_dhcp: 1
manage_rsync: 1
3.2.3 配置cobbler的web环境
  • 修改认证文件

grep "module = authn_configfile" /etc/cobbler/modules.conf
module = authn_configfile # 修改认证方式为密码文件类型

  • 用户和密码

htdigest /etc/cobbler/users.digest "Cobbler" tech
#添加tech用户,提示输入2遍密码确认
Adding user tech in realm Cobbler
New password: 123123 # 这里我设置的密码是 123123
Re-type new password: 123123

  • 生成cobbler安装系统root初始密码

openssl passwd -1 -salt 'random-phrase-here' ' 1234567890' # 该密码是用来登录通过cobbler安装后新机器的密码
$1$random-p$RkqDMTpuNlZZhJ7moLn3Q

  • 将上面的加密串加入cobbler配置文件中

vim /etc/cobbler/settings
#修改为如下配置
default_password_crypted: " $1$random-p$RkqDMTpuNlZZhJ7moLn3Q."

  • 查看

grep "default_password" /etc/cobbler/settings
default_password_crypted: " $1$random-p$RkqDMTpuNlZZhJ7moLn3Q."
3.2.4 配置dhcp与cobbler相关服务
  • 做任何修改操作前,先备份

cp /etc/cobbler/dhcp.template{,.bak}
ll /etc/cobbler/dhcp.template*
-rw-r--r-- 1 root root 2946 Jul 18 2014 /etc/cobbler/dhcp.template
-rw-r--r-- 1 root root 2946 Jul 7 17:01 /etc/cobbler/dhcp.template.bak

  • 修改dhcp配置文件

vim /etc/cobbler/dhcp.template 

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;# 需要修改192.168.16.0为自己网段
subnet 192.168.16.0 netmask 255.255.255.0 {
option routers 192.168.16.1; # 修改自己的路由
option domain-name-servers 8.8.8.8; # 域名服务器地址
option subnet-mask 255.255.255.0; # 子网掩码
range dynamic-bootp 192.168.16.140 192.168.16.250;#指定IP范围
filename "/pxelinux.0";
default-lease-time 21600; #缺省租约时间
max-lease-time 43200; #最大租约时间
next-server 192.168.16.130; #指定引导服务器【cobbler服务器IP】
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";
}
}
}
其余部分维持现状,将上述内容拷贝到/etc/dhcp/dhpcd.conf里。
  • 设置debmirror

#注释掉@dists和@arches的行
sed -i -e 's|@dists=.*|#@dists=|' /etc/debmirror.conf
sed -i -e 's|@arches=.*|#@arches=|' /etc/debmirror.conf

  • 下载引导操作系统文件

#加载部分缺失的网络boot-loaders
cobbler get-loaders

  • 检查Cobbler配置

cobbler check  

The following are potential configuration items that you may want to fix:
#dhcpd没有运行
1 : service dhcpd is not running
#执行cobbler get-loaders 系统将自动下载loader程序
2 : 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.

Restart cobblerd and then run 'cobbler sync' to apply changes

  • DHCP启动成功后,执行sync同步得到如下结果表示成功

cobbler sync

task started: 2014-12-29_184104_sync
task started (id=Sync, time=Mon Dec 29 18:41:04 2014)
running pre-sync triggers
cleaning trees
removing: /var/www/cobbler/images/CentOS6.6-x86_64
removing: /var/lib/tftpboot/pxelinux.cfg/default
removing: /var/lib/tftpboot/grub/images
removing: /var/lib/tftpboot/grub/efidefault
removing: /var/lib/tftpboot/images/CentOS6.6-x86_64
removing: /var/lib/tftpboot/s390x/profile_list
copying bootloaders
trying hardlink /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
copying: /var/lib/cobbler/loaders/pxelinux.0 -> /var/lib/tftpboot/pxelinux.0
trying hardlink /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
copying: /var/lib/cobbler/loaders/menu.c32 -> /var/lib/tftpboot/menu.c32
trying hardlink /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying: /usr/share/syslinux/memdisk -> /var/lib/tftpboot/memdisk
copying distros to tftpboot
copying files for distro: CentOS6.6-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CentOS6.6-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CentOS6.6-x86_64/initrd.img
copying images
generating PXE configuration files
generating PXE menu structure
copying files for distro: CentOS6.6-x86_64
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CentOS6.6-x86_64/vmlinuz
trying hardlink /var/www/cobbler/ks_mirror/CentOS6.6-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CentOS6.6-x86_64/initrd.img
Writing template files for CentOS6.6-x86_64
rendering DHCP files
generating /etc/dhcp/dhcpd.conf
rendering TFTPD files
generating /etc/xinetd.d/tftp
processing boot_files for distro: CentOS6.6-x86_64
cleaning link caches
rendering Rsync files
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running: dhcpd -t -q
received on stdout:
received on stderr:
running: service dhcpd restart
received on stdout: Shutting down dhcpd: [ OK ]
Starting dhcpd: [ OK ]

received on stderr:
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE *** → 出现此行提示,表示sync同步dhcp成功
3.2.5重启cobbler和更新相关配置
  • 重启服务

/etc/init.d/cobblerd restart

  • 同步最新cobbler配置,它会根据配置自动修改dhcp,bind等服务,因此我称之为容器的原因

cobbler sync # 同步配置文件到dhcp服务器

  • 启动相关服务并设置开机启动

chkconfig httpd on
chkconfig xinetd on
chkconfig cobblerd on
chkconfig dhcpd on
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/cobblerd restart
/etc/init.d/dhcpd restart

  • 设置Cobbler相关服务启动脚本

 
vim /etc/init.d/coobler

#!/bin/sh
# chkconfig: - 80 90
# description:cobbler
case $1 in
start)
/etc/init.d/httpd start
/etc/init.d/xinetd start
/etc/init.d/dhcpd start
/etc/init.d/cobblerd start
;;
stop)
/etc/init.d/httpd stop
/etc/init.d/xinetd stop
/etc/init.d/dhcpd stop
/etc/init.d/cobblerd stop
;;
restart)
/etc/init.d/httpd restart
/etc/init.d/xinetd restart
/etc/init.d/dhcpd restart
/etc/init.d/cobblerd restart
;;
status)
/etc/init.d/httpd status
/etc/init.d/xinetd status
/etc/init.d/dhcpd status
/etc/init.d/cobblerd status
;;
sync)
cobbler sync
;;
*)
echo "Input error,please in put 'start|stop|restart|status|sync'!";
exit 2>&amp;1 >/dev/null &amp;
;;
esac
EOF

  • 添加脚本执行权限

chmod +x /etc/rc.d/init.d/cobbler

  • 添加开机启动

chkconfig cobbler on

  • 重启

cobblerservice cobbler restart

  • 挂载系统安装镜像到http服务器站点目录

  1. 上传ISO镜像到服务器的/server/iso/目录
  2. 创建目录/var/www/html/os/{CentOS-6.6-x86_64}

mkdir -p /var/www/html/os/CentOS-6.6-x86_64    # 创建挂载目录
提示:如果是本地iso镜像则挂载用 loop方式; 如果是挂载光盘则直接挂载到指定目录即可
mount -t iso9660 -o loop /root/CentOS-6.6-x86_64-bin-DVD1.iso /var/www/html/os/CentOS-6.6-x86_64/

mount /dev/cdrom /var/www/html/os/CentOS-6.6-x86_64/
挂载完之后,要编辑开机自挂载项
vi /etc/fstab
/server/iso/CentOS-6.6-x86_64-bin-DVD1.iso /var/www/html/os/CentOS-6.6-x86_64 iso9660 defaults 0 0
或者
/dev/cdrom /var/www/html/os/CentOS-6.6-x86_64 iso9660 defaults 0 0
备注:
  • iso9660使用df -T 查看设备 卸载:umount /var/www/html/os/CentOS-6.5-x86_64
  • 重复上面的操作,把自己需要安装的CentOS系统镜像文件都挂载到/var/www/html/os/目录下

 
  • 例如: CentOS-5.10-x86_64-bin-DVD-1of2.iso CentOS-7.0-1406-x86_64-DVD.iso

 
 导入系统镜像到cobbler

从DVD中导入客户端的OS; 将自动设置了“x86_64”,并将其命名为CentOS6.6-x86_64,导入需要时间,可查看/var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/目录文件生成情况
cobbler import --path=/var/www/html/os/CentOS-6.6-x86_64 --name=CentOS-6.6-x86_64 --arch=x86_64 
命令格式:cobbler import --path=镜像路径 -- name=安装引导名 --arch=32位或64位
参数说明:
--name 为安装源定义一个名字
--arch 指定安装源是32位还是64位、ia64, 目前支持的选项有: x86│x86_64│ia64
导入成功的结果如下:
task started: 2014-12-28_214043_import
task started (id=Media import, time=Sun Dec 28 21:40:43 2014)
Found a candidate signature: breed=redhat, version=rhel6
Found a matching signature: breed=redhat, version=rhel6
Adding distros from path /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64:
creating new distro: CentOS-6.6-x86_64
trying symlink: /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64 -> /var/www/cobbler/links/CentOS-6.6-x86_64
creating new profile: CentOS-6.6-x86_64
associating repos
checking for rsync repo(s)
checking for rhn repo(s)
checking for yum repo(s)
sta将需要安装系统的服务器网卡启用 PXE,启动服务器从 PXE 引导 默认从本地硬盘引导,可以修改,建议还是保持此默认 rting descent into /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64 for CentOS-6.6-x86_64
processing repo at : /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64
need to process repo/comps: /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64
looking for /var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/repodata/*comps*.xml
Keeping repodata as-is :/var/www/cobbler/ks_mirror/CentOS-6.6-x86_64/repodata
*** TASK COMPLETE ***
四、安装系统
 
4.1 命令行安装
 
将需要安装系统的服务器网卡启用 PXE,启动服务器从 PXE 引导 默认从本地硬盘引导,可以修改,建议还是保持此默认

选择对应的系统即可安装:
15.png

 
4.2 Web安装
 
Cobbler web 界面是一个很好的前端,非常容易管理 Cobbler,可以添加和删除 system distro profile,可 以 查 看 、 编 辑 distros, profiles,subprofiles, systems, repos 、 kickstart 文件 。
 
浏览器访问登录页面https://ip/cobbler_web ,输入用户名密码即可

screenshot_2.png

 
登录后的页面

screenshot.png

 
web 管理相对易于使用管理这里就不再赘述。 
 
====>Cobbler就介绍到这里了,详情可参见官方网站:https://cobbler.github.io/manuals/2.6.0/

CloudBoot 之 PXE+KickStart图形化

CloudBootSiffre 发表了文章 • 0 个评论 • 879 次浏览 • 2016-01-22 15:00 • 来自相关话题

1.安装软件yum install system-config-kickstart -y2.打开软件





界面如下:






操作如下:











进行分区操作:






























生成一个ks.cfg文件,位置在root用户家目录中:





使用http,需要将目录拷贝到/var/www/html/下,为方便,直接在/var/www/html/下建立文件夹11:





然后把root下的ks.cfg拷贝到/var/www/html/11中,查看





修改tftp文件
vim /var/lib/tftpboot/pxelinux.cfg/default

#default vesamenu.c32
default linux #需要修改
prompt 1 #需要修改
省略...

label linux

menu
label ^Install or upgrade an existing system

menu
default

kernel
vmlinuz

append
initrd=initrd.img ks=http://10.0.0.1/11/ks.cfg #添加ks.cfg路径

label vesa

menu
label Install system with ^basic video driver

kernel
vmlinuz

append
initrd=initrd.img nomodeset

label rescue

menu
label ^Rescue installed system

kernel
vmlinuz

append
initrd=initrd.img rescue

label local

menu
label Boot from ^local drive

localboot
0xffff

label memtest86

menu
label ^Memory test

kernel
memtest

append –
保存退出,重启服务
service xinted restart





如果要让linux在安装时提示选择界面安装,需要我们从光盘中的isolinux中拷贝Vesamenu.c32文件到/var/lib/tftpbopot/下:





拷贝
cp vesamenu.c32 /var/lib/tftpboot





修改tftp的配置文件,启用default vesamenu.c32




重启动服务
service xinetd restart
安装服务器





  查看全部
1.安装软件
yum install system-config-kickstart  -y
2.打开软件
图片_1.png


界面如下:

图片_2.png


操作如下:

图片_3.png


图片_4.png


进行分区操作:

图片_5.png


图片_6.png


图片_7.png


图片_8.png


图片_9.png


图片_10.png

  • 生成一个ks.cfg文件,位置在root用户家目录中:


图片_11.png

  • 使用http,需要将目录拷贝到/var/www/html/下,为方便,直接在/var/www/html/下建立文件夹11:


图片_12.png

  • 然后把root下的ks.cfg拷贝到/var/www/html/11中,查看


图片_13.png

  • 修改tftp文件

vim /var/lib/tftpboot/pxelinux.cfg/default

#default vesamenu.c32
default linux #需要修改
prompt 1 #需要修改
省略...

label linux

menu
label ^Install or upgrade an existing system

menu
default

kernel
vmlinuz

append
initrd=initrd.img ks=http://10.0.0.1/11/ks.cfg #添加ks.cfg路径

label vesa

menu
label Install system with ^basic video driver

kernel
vmlinuz

append
initrd=initrd.img nomodeset

label rescue

menu
label ^Rescue installed system

kernel
vmlinuz

append
initrd=initrd.img rescue

label local

menu
label Boot from ^local drive

localboot
0xffff

label memtest86

menu
label ^Memory test

kernel
memtest

append –

  • 保存退出,重启服务

service xinted restart





  • 如果要让linux在安装时提示选择界面安装,需要我们从光盘中的isolinux中拷贝Vesamenu.c32文件到/var/lib/tftpbopot/下:


图片_14.png

  • 拷贝

cp vesamenu.c32  /var/lib/tftpboot





  • 修改tftp的配置文件,启用default vesamenu.c32

图片_15.png

  • 重启动服务

service xinetd  restart

  • 安装服务器


图片_16.png

 

CloudBoot 之 PXE+Kickstart命令行

CloudBootSiffre 发表了文章 • 0 个评论 • 1391 次浏览 • 2016-01-22 14:04 • 来自相关话题

1.导言

从事Linux系统运维工作的朋友们,经常会遇到一些苦逼的工作:装物理机、装虚拟机。由于厂商比较多,各家公司根据不同的业务采购的机器也是各不相同的,而且还要在短时间内完成。以前我们基本用的都是PXE+KickStart和Cobbler的方式来装操作系统,今天主要是介绍PXE+KickStart,内容如下:

2. 通用基础知识

2.1 系统安装方式

光盘安装系统

U盘安装系统

网络安装系统

绝大多数的机器都是托管在运营商机房的,到现场去装系统成本太大,太浪费时间,目前都是采用远程的网络式装机:





 
2.2 DHCP的工作过程

对于学习 DHCP来说,很重要的一部分就是对于DHCP工作过程的理解。那么首先DHCP分为两个部分:一个是服务器端,另一个是客户端。所有客户机的IP地址设 定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP地址。

DHCP服务器提供三 种IP分配方式:自动分配(Automatic Allocation)、动态分配(Dynamic Allocation)和手动分配。自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用,而手动分配是由DHCP服务器管理员专门指定IP地址。

DHCP客户机在启动时,会搜寻网络中是否存在DHCP服务器。如果找到,则给 DHCP服务器发送一个请求。DHCP服务器接到请求后,为DHCP客户机选择TCP/IP配置的参数,并把这些参数发送给客户端。如果已配置冲突检测设置,则 DHCP 服务器在将租约中的地址提供给客户机之前会试用Ping测试作用域中每个可用地址的连通性。这可确保提供给客户的每个IP地址都没有被使用手动 TCP/IP配置的另一台非 DHCP 计算机使用。

根据客户端是否第一次登录网络,DHCP的工作形式会有所不同。客户端从DHCP服务器上获得IP地址的整个过程分为以下六个步骤:
寻找DHCP服务器

当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会介绍这个广播信息,但只有DHCP服务器才会做出响应。





分配IP地址
在网络中接收到DHCP discover发现信息的DHCP服务器都会做出相应,它从尚未分配的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含分配的IP地址和其他设置的DHCP offer提供信息。





接受IP地址
DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。





IP地址分配确认
当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的 服务器外,其他的DHCP服务器将收回曾经提供的IP地址。





重新登录
以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCPdiscover发现信息来请求新的IP地址。





 
1.客户端重新登录





 
2.如果客户端DHCP request 内的IP地址在服务器端没有被使用,DHCP服务器回复DHCP ACK继续使用IP





 
3.如果客户端DHCP request 内的IP地址在服务器端已被使用,DHCP服务器回复DHCP NACK告诉客户端IP已被使用





 
4.客户端重新开始DHCP流程





 
5.更新租约
DHCP 服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。





 
2.3 TFTP简介

TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。下面就详细介绍一下linux服务器端tftp-server的配置。
安装tftp服务器
 
需要安装xinetd、tftp和tftp-server 3个软件

1)如果能上网,通过yum安装:sudo yum install xinetd
sudo yum install tftp
sudo yum install tftp-server2)如果不能上网,可以直接安装提供的rpm包:sudo rpm -ivh xinetd-<?xml:namespace prefix = st1 />2.3.14-18.fc9.i386.rpm
sudo rpm -ivh tftp-0.48-3.fc9.i386.rpm
sudo rpm -ivh tftp-server-0.48-3.fc9.i386.rpm
配置tftp服务器 修改/etc/xinetd.d/tftp文件,将其中的disable=yes改为disable=no
 主要是设置TFTP服务器的根目录,开启服务。修改后的文件如下:
service tftp
{ socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /home/mike/tftpboot -c
disable =no
per_source =11
cps =100 2
flags =IPv4
}
说明:修改项server_args= -s <path> -c,其中<path>处可以改为你的tftp-server的根目录,参数-s指定chroot,-c指定了可以创建文件。
启动tftp服务器并关闭防火墙
/etc/init.d/iptables stop //关闭防火墙
sudo /sbin/service xinetd start
或service xinetd restart
/etc/init.d/xinetd start
看到启动[OK]就可以了
查看tftp服务是否开启
netstat -a | grep tftp
显示结果为
udp 0 0 *:tftp *:*
表明服务已经开启,就表明tftp配置成功了。
tftp使用 -复制一个文件到tftp服务器目录,然后在主机启动tftp软件,进行简单测试。
tftp 192.168.1.2
tftp>get <download file>
tftp>put <upload file>
tftp>q
-tftp命令用法如下
tftp your-ip-address
【进入TFTP操作】
connect:连接到远程tftp服务器
mode:文件传输模式
put:上传文件
get:下载文件
quit:退出
verbose:显示详细的处理信息
tarce:显示包路径
status:显示当前状态信息
binary:二进制传输模式
ascii:ascii传送模式
rexmt:设置包传输的超时时间
timeout:设置重传的超时时间
help:帮助信息
?:帮助信息
Busybox中tftp命令的用法命令格式为:
tftp [option] ... host [port]
如果要下载或上传文件的话是一定要用这些option的。成都明诚科技。
-g表示下载文件(get)
-p表示上传文件(put)
-l表示本地文件名(local file)
-r表示远程主机的文件名(remote file)
例如,要从远程主机192.168.1.2上下载embedexpert,则应输入以下命令
tftp -g -r embedexpert 192.168.1.2




2.4 什么是PXE?

预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)是让计算机通过网卡独立地使用数据设备(如硬盘)或者安装操作系统。PXE当初是作为Intel的有线管理体系的一部分,Intel和 Systemsoft于1999年9月20日公布其规格(版本2.1)。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。PXE 客户机(client)这个术语是指机器在PXE启动过程中的角色。一个PXE 客户机(client)可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。

客户机的固件为接受到可用的PXE启动服务器,要在网络中尝试找出PXE重定向服务(DHCP代理)。在分析返回的包后,固件会向合适的启动服务器询问网络自检程序(NBP)的路径,并且通过TFTP协议下载到电脑的内存中,有可能会去校验它,最后执行它。当只有全部的PXE 客户机(client)只使用一个NBP时,全部的PXE 客户机可能会被指定是用BOOTP协议,从而不需要DHCP代理,但是仍然需要TFTP启动服务。

PXE 协议大致上结合了DHCP和TFTP,虽然都有在两者上面有改进。DHCP用于查找合适的启动服务器,TFTP用于下载初始引导程序和附加文件。为了开始一个PXE自检会话,PXE固件广播一个带有明确的PXE选项DHCPDISCOVER包(扩展DHCPDISCOVER)到67/UDP端口(DHCP服务器端口)。PXE选项是PXE固件有PXE能力的鉴定,但是会被一般的DHCP服务忽略。当固件受到从这样的服务受到DHCPOFFER包时,它会通过要求其提供配置信息来自我配置。

当 PXE 重定向服务 (DHCP代理) 收到一个 扩展DHCPDISCOVER 包时,它会通过发送一个带有明确的PXE选项DHCPDISCOVER包到PXE客户机的68/UDP端口 (DHCP 客户机端口)来回答。 一个扩展DHCPDISCOVER包主要包含:
一个PXE发现控制领域,以决定是使用多播,广播(网路)或单播来联系PXE启动服务器。 一个列出可用的PXE启动服务器类型的地址表。 一个代表每个一个PXE启动服务器类型的条目单。 一个带有带有提示用户按下哪一个键来看到启动菜单的PXE启动菜单。一个超过多长时间就启动第一启动菜单的超时数值。

一个DHCP代理服务可能在相同的主机上运行一个标准的DHCP服务器。尽管两个服务不可以共享67/UDP 端口,DHCP代理服务在4011/UDP 端口上运行,要求从客户端来的DHCPDISCOVER 包变成DHCPREQUEST 包。标准DHCP服务在其发送的DHCPOFFER 包中加入特殊的PXE 选项组合,这样PXE客户端知道可以在同一个主机的 4011/UDP 端口找到一个DHCP代理服务。

和一个正在启动系统的启动服务联系必须有一个IP地址(可能来自DHCP服务)。通过多播或单播一个带有特殊的PXE选项的 DHCPREQUEST 包(扩展DHCPREQUEST包)到 4011/UDP端口,或者广播(网路)这种包到 67/UDP端口。这种包包含有PXE启动服务类型和PXE启动层,一个守护进程允许运行多个启动服务类型。 一个扩展 DHCPREQUEST包可能是一个DHCPINFORM包。
 
简单总结一下,
PXE Client发送广播包请求DHCP分配IP地址DHCP Server回复请求,给出IP地址以及Boot Server的地址PXE下载引导文件执行引导程序
 
注:kickstart不在这里详述,参考地址:http://linux.vbird.org/linux_enterprise/0120installation.php

3.PXE + Kickstart自动化安装操作系统实践

前提准备:
DHCP服务器
 
TFTP服务器
 
KickStart所生成的ks.cfg配置文件
 
一台存放系统安装文件的服务器,如NFS、HTTP、或FTP服务器
 
一个带有PXE支持网卡的主机。

3.1 查看当前操作系统版本cat /etc/redhat-release
CentOS release 6.7 (Final)3.2 准备环境
可以连接网络关闭防火墙
/etc/init.d/iptables stop
关闭selinux,临时关闭会不生效,建议修改配置文件后,重启操作系统
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config3.3 安装DHCP服务
安装DHCP
yum -y install dhcp
修改配置文件
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #拷贝dhcp配置文件#修改配置文件/etc/dhcpd/dhcpd.conf;添加如下
ddns-update-style none;
ignore client-updates;
subnet 10.0.0.0 netmask 255.255.255.0 {
range
10.0.0.100 10.0.0.200;
option
subnet-mask 255.255.255.0;
option
domain-name “internal.example.org”;
default-lease-time 600;
max-lease-time 7200;
next-server
10.0.0.3;
filename
“/pxelinux.0”;
}修改/etc/sysconfig/dhcpd配置文件,表示dhcp将只在eth0网络接口上提供DHCP服务cat /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth0
启动dhcpd服务
/etc/init.d/dhcpd startDHCP注释:
ddns-update-style none; #设置与DHCP服务相关联的DNS数据动态更新模式,实际的DHCP应用中很少用改参数,设置为none即可。
ignore client-updates; #不允许客户机更新DNS记录
subnet 172.16.10.0 netmask
255.255.255.0 {
range 172.16.10.100 172.16.10.200; #可分配的起始IP-结束IP
option subnet-mask 255.255.255.0; #设置netmask
default-lease-time 21600; #设置默认的IP租用期限
max-lease-time 43200; #设置最大的IP租用期限
next-server 172.16.10.20; #告知客户端TFTP服务器ip
filename “/pxelinux.0”; #告知客户端从TFTP根目录下载pexlinux.0
}3.4 安装TFTP服务
安装tftp-server服务
yum -y install tftp-server
修改配置文件/etc/xinetd.d/tftp disabled修改为no
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
}
启动服务xinetd代理服务
/etc/init.d/xinetd start
3.6 PXE配置引导

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。如果没有找到pxelinux.0这个文件,可以安装一下。
安装
syslinuxyum -y install syslinux
复制配置文件
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp -a /var/www/html/centos6/isolinux/ * /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/centos6/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
添加如下,配置文件
cat /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 0
label ks
kernel
vmlinuz
append
initrd=initrd.img ks=http://10.0.0.3/config/Centos6-ks.cfg ksdevice=eth0
# ksdevice=eth0代表当客户端有多块网卡的时候,要实现自动化需要设置从eth0安装,不指定的话,安装的时候系统会让你选择,那就不叫全自动化了。
PXE配置文件default解析
cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 #默认加载一个菜单
#prompt 1 #开启会显示命令行’boot:’ 提示符。prompt值为0时则不提示,将会直接启动’default’参数中指定的内容
timeout 600#timeout时间是引导等待用户手动选择的时间,设为1可直接引导,单位为1/10秒。
display boot.msg
#菜单背景图片、标题、颜色。
menu background splash.jpg
menu title Welcome to CentOS 6.7!
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
#lable指定在boot:提示符下输入的关键字,比如boot:linux[ENTER],这个会启动lable
linux下标记的kernel和initrd.img文件
label linux#一个标签就是前面图片的一行选项。
menu
label ^Install or upgrade an existing system
menu
default
kernel
vmlinuz #指定要启动的内核。同样要注意路径,默认是/tftpboot目录
append
initrd=initrd.img #指定追加给内核的参数,initrd.img是一个最小的linux系统
label vesa
menu
label Install system with ^basic video driver
kernel
vmlinuz
append
initrd=initrd.img nomodeset
label rescue
menu
label ^Rescue installed system
kernel
vmlinuz
append
initrd=initrd.img rescue
label local
menu
label Boot from ^local drive
localboot
0xffff
label memtest86
menu
label ^Memory test
kernel
memtest
append –
上传kscfg配置文件
grub-crypt #配置root使用密码,加入修改Centos6-ks.cfg文件Password:
Retype password:
$6$006TOzR9rk18CPQw$t/xTyZEw60OWqAho.J1oj3PRo2ib93blCIlVuFCPc6/fuCADB02LKHfNV4x7jtpNAX98TK3K8Zpem8Qkv92111
创建配置文件及优化脚本站点目录
mkdir /var/www/html/config
查看文件
cat /var/www/html/config/Centos6-ks.cfginstall #安装
url –url=”http://10.0.0.3/centos6″ #系统文件地址,这里使用http
text #文本界面安装
lang en_US.UTF-8 #语言
keyboard us #键盘
zerombr #清空mbr
bootloader –location=mbr –driveorder=sda
–append=”crashkernel=auto rhgb quiet” #引导加载程序参数
network –bootproto=dhcp –device=eth1
–onboot=yes –noipv6 –hostname=CentOS6 #eth1网络配置
timezone –utc Asia/Shanghai #时区
authconfig –enableshadow –passalgo=sha512 #验证配置
rootpw–iscrypted $6$006TOzR9rk18CPQw$t/xTyZEw60OWqAho.J1oj3PRo2ib93blCIlVuFCPc6/fuCADB02LKHfNV4x7jtpNAX98TK3K8Zpem8Qkv92111
#root密码,使用grub-crypt生成
clearpart –all –initlabel #清空分区
part /boot –fstype=ext4 –asprimary –size=100 #分区/boot
100M
part swap –size=1500 #分区swap
1500M
part / –fstype=ext4 –grow –asprimary
–size=200 #分区/ 所有
firstboot –disable #关闭一系列服务
selinux –disabled
firewall –disabled
logging –level=info #日志记录等级info级别
reboot #重启
%packages #包组–软件名
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%post #安装完执行脚本
wget -O /tmp/optimization.sh http://10.0.0.3/config/optimization.sh
&>/dev/null #下载脚本,然后执行
/bin/sh /tmp/optimization.sh #执行脚本
%end


3.7 安装服务器

需要和pxe服务器内网同网段,开机通过dhcp自动获取,然后自动开始装机





















===>到此,PXE+KickStart安装方式就结束了,图形化安装参考这里http://jcenter.idcos.com/?/article/26,是不是很麻烦呢? 查看全部
1.导言

从事Linux系统运维工作的朋友们,经常会遇到一些苦逼的工作:装物理机、装虚拟机。由于厂商比较多,各家公司根据不同的业务采购的机器也是各不相同的,而且还要在短时间内完成。以前我们基本用的都是PXE+KickStart和Cobbler的方式来装操作系统,今天主要是介绍PXE+KickStart,内容如下:

2. 通用基础知识

2.1 系统安装方式

光盘安装系统

U盘安装系统

网络安装系统

绝大多数的机器都是托管在运营商机房的,到现场去装系统成本太大,太浪费时间,目前都是采用远程的网络式装机:

1.png

 
2.2 DHCP的工作过程

对于学习 DHCP来说,很重要的一部分就是对于DHCP工作过程的理解。那么首先DHCP分为两个部分:一个是服务器端,另一个是客户端。所有客户机的IP地址设 定资料都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;而客户端则会使用从服务器分配下来的IP地址。

DHCP服务器提供三 种IP分配方式:自动分配(Automatic Allocation)、动态分配(Dynamic Allocation)和手动分配。自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用,而手动分配是由DHCP服务器管理员专门指定IP地址。

DHCP客户机在启动时,会搜寻网络中是否存在DHCP服务器。如果找到,则给 DHCP服务器发送一个请求。DHCP服务器接到请求后,为DHCP客户机选择TCP/IP配置的参数,并把这些参数发送给客户端。如果已配置冲突检测设置,则 DHCP 服务器在将租约中的地址提供给客户机之前会试用Ping测试作用域中每个可用地址的连通性。这可确保提供给客户的每个IP地址都没有被使用手动 TCP/IP配置的另一台非 DHCP 计算机使用。

根据客户端是否第一次登录网络,DHCP的工作形式会有所不同。客户端从DHCP服务器上获得IP地址的整个过程分为以下六个步骤:
  • 寻找DHCP服务器


当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会介绍这个广播信息,但只有DHCP服务器才会做出响应。

2.png

  • 分配IP地址

在网络中接收到DHCP discover发现信息的DHCP服务器都会做出相应,它从尚未分配的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含分配的IP地址和其他设置的DHCP offer提供信息。

3.png

  • 接受IP地址

DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。

4.png

  • IP地址分配确认

当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的 服务器外,其他的DHCP服务器将收回曾经提供的IP地址。

5.png

  • 重新登录

以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCPdiscover发现信息来请求新的IP地址。

6.png

 
1.客户端重新登录

6.png

 
2.如果客户端DHCP request 内的IP地址在服务器端没有被使用,DHCP服务器回复DHCP ACK继续使用IP

7.png

 
3.如果客户端DHCP request 内的IP地址在服务器端已被使用,DHCP服务器回复DHCP NACK告诉客户端IP已被使用

8.png

 
4.客户端重新开始DHCP流程

9.png

 
5.更新租约
DHCP 服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

10.png

 
2.3 TFTP简介

TFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp-client支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。下面就详细介绍一下linux服务器端tftp-server的配置。
  • 安装tftp服务器

 
  • 需要安装xinetd、tftp和tftp-server 3个软件


1)如果能上网,通过yum安装:
sudo yum install xinetd
sudo yum install tftp
sudo yum install tftp-server
2)如果不能上网,可以直接安装提供的rpm包:
sudo rpm -ivh xinetd-<?xml:namespace prefix = st1 />2.3.14-18.fc9.i386.rpm
sudo rpm -ivh tftp-0.48-3.fc9.i386.rpm
sudo rpm -ivh tftp-server-0.48-3.fc9.i386.rpm

  • 配置tftp服务器 修改/etc/xinetd.d/tftp文件,将其中的disable=yes改为disable=no

 
主要是设置TFTP服务器的根目录,开启服务。修改后的文件如下:
service tftp
{ socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /home/mike/tftpboot -c
disable =no
per_source =11
cps =100 2
flags =IPv4
}
说明:修改项server_args= -s <path> -c,其中<path>处可以改为你的tftp-server的根目录,参数-s指定chroot,-c指定了可以创建文件。

  • 启动tftp服务器并关闭防火墙

/etc/init.d/iptables stop //关闭防火墙
sudo /sbin/service xinetd start
或service xinetd restart
/etc/init.d/xinetd start
看到启动[OK]就可以了

  • 查看tftp服务是否开启

netstat -a | grep tftp
显示结果为
udp 0 0 *:tftp *:*
表明服务已经开启,就表明tftp配置成功了。

  • tftp使用 -复制一个文件到tftp服务器目录,然后在主机启动tftp软件,进行简单测试。

tftp 192.168.1.2
tftp>get <download file>
tftp>put <upload file>
tftp>q

  • -tftp命令用法如下

tftp your-ip-address
【进入TFTP操作】
connect:连接到远程tftp服务器
mode:文件传输模式
put:上传文件
get:下载文件
quit:退出
verbose:显示详细的处理信息
tarce:显示包路径
status:显示当前状态信息
binary:二进制传输模式
ascii:ascii传送模式
rexmt:设置包传输的超时时间
timeout:设置重传的超时时间
help:帮助信息
?:帮助信息

  • Busybox中tftp命令的用法命令格式为:

tftp [option] ... host [port]
如果要下载或上传文件的话是一定要用这些option的。成都明诚科技。
-g表示下载文件(get)
-p表示上传文件(put)
-l表示本地文件名(local file)
-r表示远程主机的文件名(remote file)
例如,要从远程主机192.168.1.2上下载embedexpert,则应输入以下命令
tftp -g -r embedexpert 192.168.1.2




2.4 什么是PXE?

预启动执行环境(Preboot eXecution Environment,PXE,也被称为预执行环境)是让计算机通过网卡独立地使用数据设备(如硬盘)或者安装操作系统。PXE当初是作为Intel的有线管理体系的一部分,Intel和 Systemsoft于1999年9月20日公布其规格(版本2.1)。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。PXE 客户机(client)这个术语是指机器在PXE启动过程中的角色。一个PXE 客户机(client)可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。

客户机的固件为接受到可用的PXE启动服务器,要在网络中尝试找出PXE重定向服务(DHCP代理)。在分析返回的包后,固件会向合适的启动服务器询问网络自检程序(NBP)的路径,并且通过TFTP协议下载到电脑的内存中,有可能会去校验它,最后执行它。当只有全部的PXE 客户机(client)只使用一个NBP时,全部的PXE 客户机可能会被指定是用BOOTP协议,从而不需要DHCP代理,但是仍然需要TFTP启动服务。

PXE 协议大致上结合了DHCP和TFTP,虽然都有在两者上面有改进。DHCP用于查找合适的启动服务器,TFTP用于下载初始引导程序和附加文件。为了开始一个PXE自检会话,PXE固件广播一个带有明确的PXE选项DHCPDISCOVER包(扩展DHCPDISCOVER)到67/UDP端口(DHCP服务器端口)。PXE选项是PXE固件有PXE能力的鉴定,但是会被一般的DHCP服务忽略。当固件受到从这样的服务受到DHCPOFFER包时,它会通过要求其提供配置信息来自我配置。

当 PXE 重定向服务 (DHCP代理) 收到一个 扩展DHCPDISCOVER 包时,它会通过发送一个带有明确的PXE选项DHCPDISCOVER包到PXE客户机的68/UDP端口 (DHCP 客户机端口)来回答。 一个扩展DHCPDISCOVER包主要包含:
  • 一个PXE发现控制领域,以决定是使用多播,广播(网路)或单播来联系PXE启动服务器。 
  • 一个列出可用的PXE启动服务器类型的地址表。 
  • 一个代表每个一个PXE启动服务器类型的条目单。 
  • 一个带有带有提示用户按下哪一个键来看到启动菜单的PXE启动菜单。
  • 一个超过多长时间就启动第一启动菜单的超时数值。


一个DHCP代理服务可能在相同的主机上运行一个标准的DHCP服务器。尽管两个服务不可以共享67/UDP 端口,DHCP代理服务在4011/UDP 端口上运行,要求从客户端来的DHCPDISCOVER 包变成DHCPREQUEST 包。标准DHCP服务在其发送的DHCPOFFER 包中加入特殊的PXE 选项组合,这样PXE客户端知道可以在同一个主机的 4011/UDP 端口找到一个DHCP代理服务。

和一个正在启动系统的启动服务联系必须有一个IP地址(可能来自DHCP服务)。通过多播或单播一个带有特殊的PXE选项的 DHCPREQUEST 包(扩展DHCPREQUEST包)到 4011/UDP端口,或者广播(网路)这种包到 67/UDP端口。这种包包含有PXE启动服务类型和PXE启动层,一个守护进程允许运行多个启动服务类型。 一个扩展 DHCPREQUEST包可能是一个DHCPINFORM包。
 
简单总结一下,
  • PXE Client发送广播包请求DHCP分配IP地址DHCP 
  • Server回复请求,给出IP地址以及Boot 
  • Server的地址PXE下载引导文件执行引导程序

 
注:kickstart不在这里详述,参考地址:http://linux.vbird.org/linux_enterprise/0120installation.php

3.PXE + Kickstart自动化安装操作系统实践

前提准备:
  • DHCP服务器

 
  • TFTP服务器

 
  • KickStart所生成的ks.cfg配置文件

 
  • 一台存放系统安装文件的服务器,如NFS、HTTP、或FTP服务器

 
  • 一个带有PXE支持网卡的主机。


3.1 查看当前操作系统版本
cat /etc/redhat-release
CentOS release 6.7 (Final)
3.2 准备环境
  • 可以连接网络
  • 关闭防火墙

/etc/init.d/iptables stop

  • 关闭selinux,临时关闭会不生效,建议修改配置文件后,重启操作系统

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
3.3 安装DHCP服务
  • 安装DHCP

yum -y install dhcp

  • 修改配置文件

cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #拷贝dhcp配置文件
#修改配置文件/etc/dhcpd/dhcpd.conf;添加如下
ddns-update-style none;
ignore client-updates;
subnet 10.0.0.0 netmask 255.255.255.0 {
range
10.0.0.100 10.0.0.200;
option
subnet-mask 255.255.255.0;
option
domain-name “internal.example.org”;
default-lease-time 600;
max-lease-time 7200;
next-server
10.0.0.3;
filename
“/pxelinux.0”;
}修改/etc/sysconfig/dhcpd配置文件,表示dhcp将只在eth0网络接口上提供DHCP服务cat /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth0

  • 启动dhcpd服务

/etc/init.d/dhcpd start
DHCP注释:
ddns-update-style none; #设置与DHCP服务相关联的DNS数据动态更新模式,实际的DHCP应用中很少用改参数,设置为none即可。
ignore client-updates; #不允许客户机更新DNS记录
subnet 172.16.10.0 netmask
255.255.255.0 {
range 172.16.10.100 172.16.10.200; #可分配的起始IP-结束IP
option subnet-mask 255.255.255.0; #设置netmask
default-lease-time 21600; #设置默认的IP租用期限
max-lease-time 43200; #设置最大的IP租用期限
next-server 172.16.10.20; #告知客户端TFTP服务器ip
filename “/pxelinux.0”; #告知客户端从TFTP根目录下载pexlinux.0
}
3.4 安装TFTP服务
  • 安装tftp-server服务

yum -y install tftp-server

  • 修改配置文件/etc/xinetd.d/tftp disabled修改为no

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
}

  • 启动服务xinetd代理服务

/etc/init.d/xinetd start

3.6 PXE配置引导

syslinux是一个功能强大的引导加载程序,而且兼容各种介质。SYSLINUX是一个小型的Linux操作系统,它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。如果没有找到pxelinux.0这个文件,可以安装一下。
  • 安装

syslinuxyum -y install syslinux

  • 复制配置文件

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp -a /var/www/html/centos6/isolinux/ * /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
cp /var/www/html/centos6/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

  • 添加如下,配置文件

cat /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 0
label ks
kernel
vmlinuz
append
initrd=initrd.img ks=http://10.0.0.3/config/Centos6-ks.cfg ksdevice=eth0
# ksdevice=eth0代表当客户端有多块网卡的时候,要实现自动化需要设置从eth0安装,不指定的话,安装的时候系统会让你选择,那就不叫全自动化了。

  • PXE配置文件default解析

cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32 #默认加载一个菜单
#prompt 1 #开启会显示命令行’boot:’ 提示符。prompt值为0时则不提示,将会直接启动’default’参数中指定的内容
timeout 600#timeout时间是引导等待用户手动选择的时间,设为1可直接引导,单位为1/10秒。
display boot.msg
#菜单背景图片、标题、颜色。
menu background splash.jpg
menu title Welcome to CentOS 6.7!
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
#lable指定在boot:提示符下输入的关键字,比如boot:linux[ENTER],这个会启动lable
linux下标记的kernel和initrd.img文件
label linux#一个标签就是前面图片的一行选项。
menu
label ^Install or upgrade an existing system
menu
default
kernel
vmlinuz #指定要启动的内核。同样要注意路径,默认是/tftpboot目录
append
initrd=initrd.img #指定追加给内核的参数,initrd.img是一个最小的linux系统
label vesa
menu
label Install system with ^basic video driver
kernel
vmlinuz
append
initrd=initrd.img nomodeset
label rescue
menu
label ^Rescue installed system
kernel
vmlinuz
append
initrd=initrd.img rescue
label local
menu
label Boot from ^local drive
localboot
0xffff
label memtest86
menu
label ^Memory test
kernel
memtest
append –

  • 上传kscfg配置文件

grub-crypt #配置root使用密码,加入修改Centos6-ks.cfg文件
Password:
Retype password:
$6$006TOzR9rk18CPQw$t/xTyZEw60OWqAho.J1oj3PRo2ib93blCIlVuFCPc6/fuCADB02LKHfNV4x7jtpNAX98TK3K8Zpem8Qkv92111

  • 创建配置文件及优化脚本站点目录

mkdir /var/www/html/config

  • 查看文件

cat /var/www/html/config/Centos6-ks.cfg
install #安装
url –url=”http://10.0.0.3/centos6″ #系统文件地址,这里使用http
text #文本界面安装
lang en_US.UTF-8 #语言
keyboard us #键盘
zerombr #清空mbr
bootloader –location=mbr –driveorder=sda
–append=”crashkernel=auto rhgb quiet” #引导加载程序参数
network –bootproto=dhcp –device=eth1
–onboot=yes –noipv6 –hostname=CentOS6 #eth1网络配置
timezone –utc Asia/Shanghai #时区
authconfig –enableshadow –passalgo=sha512 #验证配置
rootpw–iscrypted $6$006TOzR9rk18CPQw$t/xTyZEw60OWqAho.J1oj3PRo2ib93blCIlVuFCPc6/fuCADB02LKHfNV4x7jtpNAX98TK3K8Zpem8Qkv92111
#root密码,使用grub-crypt生成
clearpart –all –initlabel #清空分区
part /boot –fstype=ext4 –asprimary –size=100 #分区/boot
100M
part swap –size=1500 #分区swap
1500M
part / –fstype=ext4 –grow –asprimary
–size=200 #分区/ 所有
firstboot –disable #关闭一系列服务
selinux –disabled
firewall –disabled
logging –level=info #日志记录等级info级别
reboot #重启
%packages #包组–软件名
@base
@compat-libraries
@debugging
@development
tree
nmap
sysstat
lrzsz
dos2unix
telnet
%post #安装完执行脚本
wget -O /tmp/optimization.sh http://10.0.0.3/config/optimization.sh
&>/dev/null #下载脚本,然后执行
/bin/sh /tmp/optimization.sh #执行脚本
%end


3.7 安装服务器

需要和pxe服务器内网同网段,开机通过dhcp自动获取,然后自动开始装机

12.png


13.png


14.png


15.png


===>到此,PXE+KickStart安装方式就结束了,图形化安装参考这里http://jcenter.idcos.com/?/article/26,是不是很麻烦呢?

CloudBoot如何从v1.0升级到v1.1?

CloudBoot凌枫 发表了文章 • 0 个评论 • 689 次浏览 • 2016-01-21 16:25 • 来自相关话题

第一步:更新Server和UI:编译文件安装的从这里下载更新:
源1:http://pan.baidu.com/s/1o6WJpZO 密码: i8z8  (md5:7c8791b4c68b7906dd18858b332909e5)
源2:https://github.com/idcos/osins ... g/1.1
 
源码安装的从这里下载更新:
1.从https://github.com/idcos/osinstall-server 获取最新server代码,重新编译(gb build)
2.从https://github.com/idcos/osinstall-ui 获取最新代码,重新编译(ember build --prod)
 
 
第二步:数据库升级,请执行以下SQL语句:ALTER TABLE `hardwares` ADD `source` VARCHAR(255) NULL , ADD `version` VARCHAR(255) NULL , ADD `status` ENUM('Pending', 'Success', 'Failure') NULL DEFAULT 'Success' ;
 
做完前面两步,即升级完毕! 
 
 
 
 
  查看全部
第一步:更新Server和UI:编译文件安装的从这里下载更新
源1:http://pan.baidu.com/s/1o6WJpZO 密码: i8z8  (md5:7c8791b4c68b7906dd18858b332909e5)
源2:https://github.com/idcos/osins ... g/1.1
 
源码安装的从这里下载更新
1.从https://github.com/idcos/osinstall-server 获取最新server代码,重新编译(gb build)
2.从https://github.com/idcos/osinstall-ui 获取最新代码,重新编译(ember build --prod)
 
 
第二步:数据库升级,请执行以下SQL语句:
ALTER TABLE `hardwares` ADD `source` VARCHAR(255) NULL , ADD `version` VARCHAR(255) NULL , ADD `status` ENUM('Pending', 'Success', 'Failure') NULL DEFAULT 'Success' ;

 
做完前面两步,即升级完毕! 
 
 
 
 
 

CloudBoot V1.1新特性

CloudBoot凌枫 发表了文章 • 0 个评论 • 503 次浏览 • 2016-01-21 16:20 • 来自相关话题

版本:v1.1
 
ChangeLog:
设置默认主页,直接访问http://localhost 即可访问主页
解决Server未启动时,访问主页白屏的问题
增加Server端成功启动后console输出"The server is running."信息提示
增加面向厂商的设备型号导入、导出功能
增加面向用户的硬件配置导入、导出功能
Agent上报设备型号时,增加校验其是否在硬件配置库
增加不支持低版本浏览器的信息提示
增加默认级别的日志输出
Agent增加开发者模式
 
如何升级到v1.1?
http://jcenter.idcos.com/?/article/24
 
  查看全部
版本:v1.1
 
ChangeLog:
设置默认主页,直接访问http://localhost 即可访问主页
解决Server未启动时,访问主页白屏的问题
增加Server端成功启动后console输出"The server is running."信息提示
增加面向厂商的设备型号导入、导出功能
增加面向用户的硬件配置导入、导出功能
Agent上报设备型号时,增加校验其是否在硬件配置库
增加不支持低版本浏览器的信息提示
增加默认级别的日志输出
Agent增加开发者模式
 
如何升级到v1.1?
http://jcenter.idcos.com/?/article/24
 
 

CloudBoot 安装操作系统流程

CloudBootSiffre 发表了文章 • 0 个评论 • 2613 次浏览 • 2016-01-20 18:52 • 来自相关话题

一、部署
 1.Linux系统环境依赖

当前安装环境是基于CentOS 6.7 update到最新,内核版本:2.6.32-573.el6.x86_64版本
用户需要下载对应的版本系统,然后安装并关闭iptables和selinux。
检查防火墙状态
# service iptables status
若防火墙已开启,请手动关闭
# service iptables stop
设置开机自启动(关闭)
# chkconfig iptables off
检查SELINUX状态
# sestatus
若提示为enabled则需要手动关闭SELINUX
# cat /etc/sysconfig/selinux # This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.SELINUXTYPE=targeted修改SELINUX=disabled,然后需要重启操作系统才能生效。
 
2.安装dhcp服务

网络启动依赖dhcp服务,并且需要配置pxe启动参数。
安装dhcp
# yum install dhcp -y
设置开机自启动
# chkconfig dhcpd on [size=13]#开启[/size]


配置dhcp服务,具体配置格式可参考默认的模板文件,网段根据自己的实际情况修改默认配置
#cat /etc/dhcp/dhcpd.conf

# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample #默认参考模板文件
# see 'man 5 dhcpd.conf'
示例配置
cat /etc/dhcp/dhcpd.confallow booting;
allow bootp;
ddns-update-style none;
ping-check true;
ping-timeout 3;
default-lease-time 1800;
max-lease-time 3600;
next-server 192.168.0.1;
filename "gpxelinux.0";
option domain-name-servers 192.168.0.1;
option root-path "192.168.0.1:/";
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.101 192.168.0.200;
option routers 192.168.0.1;
}3. 安装tftp服务
安装tftp服务和syslinux的tftpboot工具
# yum install tftp-server syslinux-tftpboot
设置开机自启动
# chkconfig xinetd on
配置tftp服务,设定tftp根目录为 /var/lib/tftpboot,修改disable = no
# 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 #修改此处为no
per_source = 11
cps = 100 2
flags = IPv4
}


4. 安装http服务

系统安装所需要的镜像源使用http的方式来提供,需要安装nginx/apache并下载安装介质然后导入ISO文件生成安装源。
导入rpm源
# rpm -ivh http://nginx.org/packages/cent ... h.rpm
安装nginx
# yum install nginx
设置开机自启动
# chkconfig nginx on
配置www服务,指定安装镜像源
# cat /etc/nginx/conf.d/default.confserver {
listen 80;
server_name localhost;
location / {
root /home/www; #配置路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}下载ISO文件并导入http目录
创建所需目录
# mkdir -p /home/www/iso /home/www/centos/6.7/os/x86_64/
获取ISO并指定下载目录
# wget -c -P /home/www/iso http://mirrors.aliyun.com/cent ... 1.iso
挂载ISO
# mount -o loop /home/www/iso/CentOS-6.7-x86_64-bin-DVD1.iso /media
复制到www服务对应目录
# rsync -az /media/ /home/www/centos/6.7/os/x86_64/
取消挂载
# umount /media注:YUM仓库详解见这里:http://jcenter.idcos.com/?/article/28 
 
5.安装dns服务

这里我们需要提供一套dns用作域名解析,如果内部环境已经有dns服务可以跳过此步骤。可以使用轻量级的dnsmasq来解决此问题,安装配置如下:# yum install dnsmasq
# chkconfig dnsmasq o
安装好以后需要增加hosts.conf配置文件,这里假设新增的域名是osinstall.idcos.net,ip地址是10.0.1.1# cat /etc/dnsmasq.conf
conf-dir=/etc/dnsmasq.d

# cat /etc/dnsmasq.d/hosts.conf
address=/osinstall.idcos.net/10.0.1.16.Server端部署

初始化数据
安装数据库
# yum install mysql mysql-server -y
启动并设置开机自启动
# service mysqld start
# chkconfig mysqld on
导入数据库表结构
# mysql -uroot < idcos-osinstall.sql
 部署server
修改配置文件idcos-os-install.json,配置数据库连接
"repo": {
"connection": "用户名:密码@tcp(localhost:3306)/idcos-osinstall?charset=utf8&parseTime=True&loc=Local"
}, #mysql默认无密码,可以不修改
修改配置文件idcos-os-install.json,设置PXE配置文件目录
"osInstall":{
"pxeConfigDir":"/var/lib/tftpboot/pxelinux.cfg"
}
运行可执行文件,执行文件会监听8083端口
# chmod 755 os-install-server
# nohup ./os-install-server &>os-install-server.log &

 7.部署UI前端
解压idcos-osinstall-ui.tar.gz到web server目录设置虚拟目录规则,以nginx为例
server {
listen 80 default_server;
server_name _;
include /etc/nginx/default.d/*.conf;
location / {
root /home/www;
index index.html index.htm;
}
location /api/ {
proxy_pass http://127.0.0.1:8083;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
部署完成后,访问地址:http://ip/#/dashboard/main 
 二、BootOS部署

搭建BootOS启动环境,需要配置tftp启动文件,内容如下:# cat /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT menu.c32
PROMPT 0
TIMEOUT 30

LABEL bootos
MENU LABEL ^BootOS
MENU DEFAULT
KERNEL http://osinstall.idcos.net/bootos/vmlinuz
APPEND initrd=http://osinstall.idcos.net/bootos/initrd.img console=tty0 selinux=0 biosdevname=0 SERVER_ADDR=http://osinstall.idcos.net
IPAPPEND 2
#以上URL均要修改为本地的url参数说明:
设定参数TIMEOUT 30,网络启动以后默认等待3秒钟自动进入BootOS使用http方式来加载vmlinuz和initrd.img,取代传统的tftp加载方式,大文件效率更高增加biosdevname=0参数,关闭了centos 6下面网卡自动重命名的情况,使用ethX的命名规范设定参数SERVER_ADDR=http://osinstall.idcos.net,指定server端的地址,agent会解析此参数并向server端发起请求,请根据实际情况修改设定IPAPPEND 2参数,一些服务器拥有多个网络接口,可能无法将BIOS所知的第一个网络接口设定为eth0,这将导致安装程序使用与PXE启动时不同的网络接口。增加此参数默认会使用PXE传递的网卡作为默认网络接口。

注:若果你是想定制自己特定的模板,请参考这里:http://idcos.github.io/osinstall-doc/os/系统模板定制规范.html

三、使用部署好的UI

上述工作都顺利完成之后,我们就可以参照这里:http://idcos.com/X86/doc/use/部署/Linux系统环境依赖.html就能成功安装操作系统功能了。 查看全部
一、部署
 1.Linux系统环境依赖

当前安装环境是基于
CentOS 6.7 update到最新,内核版本:2.6.32-573.el6.x86_64版本

用户需要下载对应的版本系统,然后安装并关闭iptables和selinux。
  • 检查防火墙状态

# service iptables status

  • 若防火墙已开启,请手动关闭

# service iptables stop

  • 设置开机自启动(关闭)

# chkconfig iptables off 

  • 检查SELINUX状态

# sestatus

  • 若提示为enabled则需要手动关闭SELINUX

# cat /etc/sysconfig/selinux 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted修改SELINUX=disabled,然后需要重启操作系统才能生效。
 
2.安装dhcp服务

网络启动依赖dhcp服务,并且需要配置pxe启动参数。
  • 安装dhcp

# yum install dhcp -y

  • 设置开机自启动

# chkconfig dhcpd on  [size=13]#开启[/size]


  • 配置dhcp服务,具体配置格式可参考默认的模板文件,网段根据自己的实际情况修改
  • 默认配置

#cat /etc/dhcp/dhcpd.conf

# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample #默认参考模板文件
# see 'man 5 dhcpd.conf'

  • 示例配置

cat /etc/dhcp/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style none;
ping-check true;
ping-timeout 3;
default-lease-time 1800;
max-lease-time 3600;
next-server 192.168.0.1;
filename "gpxelinux.0";
option domain-name-servers 192.168.0.1;
option root-path "192.168.0.1:/";
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.101 192.168.0.200;
option routers 192.168.0.1;
}
3. 安装tftp服务
  • 安装tftp服务和syslinux的tftpboot工具

# yum install tftp-server syslinux-tftpboot

  • 设置开机自启动

# chkconfig xinetd on

  • 配置tftp服务,设定tftp根目录为 /var/lib/tftpboot,修改disable = no

# 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 #修改此处为no
per_source = 11
cps = 100 2
flags = IPv4
}


4. 安装http服务

系统安装所需要的镜像源使用http的方式来提供,需要安装nginx/apache并下载安装介质然后导入ISO文件生成安装源。
  • 导入rpm源

# rpm -ivh http://nginx.org/packages/cent ... h.rpm

  • 安装nginx

# yum install nginx

  • 设置开机自启动

# chkconfig nginx on

  • 配置www服务,指定安装镜像源

# cat /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name localhost;
location / {
root /home/www; #配置路径
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
下载ISO文件并导入http目录
  • 创建所需目录

# mkdir -p /home/www/iso /home/www/centos/6.7/os/x86_64/

  • 获取ISO并指定下载目录

# wget -c -P /home/www/iso http://mirrors.aliyun.com/cent ... 1.iso

  • 挂载ISO

# mount -o loop /home/www/iso/CentOS-6.7-x86_64-bin-DVD1.iso /media

  • 复制到www服务对应目录

# rsync -az /media/ /home/www/centos/6.7/os/x86_64/

  • 取消挂载

# umount /media
注:YUM仓库详解见这里:http://jcenter.idcos.com/?/article/28 
 
5.安装dns服务

这里我们需要提供一套dns用作域名解析,如果内部环境已经有dns服务可以跳过此步骤。可以使用轻量级的dnsmasq来解决此问题,安装配置如下:
# yum install dnsmasq 
# chkconfig dnsmasq o

安装好以后需要增加hosts.conf配置文件,这里假设新增的域名是osinstall.idcos.net,ip地址是10.0.1.1
# cat /etc/dnsmasq.conf 
conf-dir=/etc/dnsmasq.d

# cat /etc/dnsmasq.d/hosts.conf
address=/osinstall.idcos.net/10.0.1.1
6.Server端部署

初始化数据
  • 安装数据库

# yum install mysql mysql-server -y

  • 启动并设置开机自启动

# service mysqld start
# chkconfig mysqld on

  • 导入数据库表结构

# mysql -uroot < idcos-osinstall.sql

 部署server
  • 修改配置文件idcos-os-install.json,配置数据库连接

"repo": {
"connection": "用户名:密码@tcp(localhost:3306)/idcos-osinstall?charset=utf8&parseTime=True&loc=Local"
}, #mysql默认无密码,可以不修改

  • 修改配置文件idcos-os-install.json,设置PXE配置文件目录

"osInstall":{
"pxeConfigDir":"/var/lib/tftpboot/pxelinux.cfg"
}

  • 运行可执行文件,执行文件会监听8083端口

# chmod 755 os-install-server
# nohup ./os-install-server &>os-install-server.log &

 7.部署UI前端
  • 解压idcos-osinstall-ui.tar.gz到web server目录
  • 设置虚拟目录规则,以nginx为例

server {
listen 80 default_server;
server_name _;
include /etc/nginx/default.d/*.conf;
location / {
root /home/www;
index index.html index.htm;
}
location /api/ {
proxy_pass http://127.0.0.1:8083;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}


 二、BootOS部署

搭建BootOS启动环境,需要配置tftp启动文件,内容如下:
# cat /var/lib/tftpboot/pxelinux.cfg/default

DEFAULT menu.c32
PROMPT 0
TIMEOUT 30

LABEL bootos
MENU LABEL ^BootOS
MENU DEFAULT
KERNEL http://osinstall.idcos.net/bootos/vmlinuz
APPEND initrd=http://osinstall.idcos.net/bootos/initrd.img console=tty0 selinux=0 biosdevname=0 SERVER_ADDR=http://osinstall.idcos.net
IPAPPEND 2
#以上URL均要修改为本地的url
参数说明:
  • 设定参数TIMEOUT 30,网络启动以后默认等待3秒钟自动进入BootOS
  • 使用http方式来加载vmlinuz和initrd.img,取代传统的tftp加载方式,大文件效率更高
  • 增加biosdevname=0参数,关闭了centos 6下面网卡自动重命名的情况,使用ethX的命名规范
  • 设定参数SERVER_ADDR=http://osinstall.idcos.net,指定server端的地址,agent会解析此参数并向server端发起请求,请根据实际情况修改
  • 设定IPAPPEND 2参数,一些服务器拥有多个网络接口,可能无法将BIOS所知的第一个网络接口设定为eth0,这将导致安装程序使用与PXE启动时不同的网络接口。增加此参数默认会使用PXE传递的网卡作为默认网络接口。


注:若果你是想定制自己特定的模板,请参考这里:http://idcos.github.io/osinstall-doc/os/系统模板定制规范.html

三、使用部署好的UI

上述工作都顺利完成之后,我们就可以参照这里:http://idcos.com/X86/doc/use/部署/Linux系统环境依赖.html就能成功安装操作系统功能了。

CloudBoot 有demo吗?

CloudBootSiffre 发表了文章 • 0 个评论 • 559 次浏览 • 2016-01-20 16:02 • 来自相关话题

有DEMO的,在这:
 
http://demo.idcos.com:8081/#/dashboard/main
 
PS:建议使用最新版的Google Chrome浏览器访问,以获得最佳体验
有DEMO的,在这:
 
http://demo.idcos.com:8081/#/dashboard/main
 
PS:建议使用最新版的Google Chrome浏览器访问,以获得最佳体验
开源X86服务器配置安装工具