运维部署自动化实践(二)PXE+Preseed自动安装Ubuntu16.04 server

上一章:运维部署自动化实践(一)利用PXE远程自动化安装Ubuntu16.04 server

接上文

在上文中,尝试利用Kickstart工具实现PXE远程安装的自动化,但是安装过程中出现了一个分区报错需要人工确认,导致自动化过程中断。查阅了一些技术博客和官方文档,发现Kickstart主要用于Redhat系的linux系统安装,而对于Debian系的支持可能不太好。Debian系Linux采用了特有的debian-installer作为系统安装工具,而运维人员可以通过一个preseed.cfg配置文件,写入安装各个阶段需要的参数或指令,这样就可以避免安装过程中的人机交互,实现无人值守的自动化安装。
事实上上一文的过程也利用了preseed配置文件(在上文中ubuntu-server.seed文件),只不过大部分安装指令都写在了kickstart配置里。本文在没有kickstart工具的情况下,完全采用preseed配置实现ubuntu系统安装。

Install Ubuntu with Preseeding

配置dhcp、tftp、http服务

这一步可以直接复制上一章的操作,本文尝试用dnsmasq来代替isc-dhcp-server和tftpd-hpa,提供集成的dhcp和tftp服务

  1. dnsmasq

安装dnsmasq
sudo apt-get install dnsmasq
编辑/etc/dnsmasq.conf,将以下的配置配置激活(去掉注释)

bogus-priv
filterwin2k
interface=eth0  # 查看本机的网卡名
dhcp-range=192.168.1.50,192.168.1.150,12h  
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/var/ftpd  # tftp的目录
dhcp-authoritative

创建tftp目录
sudo mkdir /var/ftpd

启动dnsmasq
sudo service dnsmasq start

  1. Http
    安装apache2, 步骤省略,默认http目录为/var/www/html/
布置PXE文件
  1. 将ubuntu镜像mount到http目录下
    sudo mkdir /var/www/html/ubuntu
    sudo mount ~/Downloads/ubuntu-16.04.5-server-amd64.iso /var/www/html/ubuntu
  2. 拷贝启动文件到tftp目录
    sudo cp -r /var/www/html/ubuntu/install/netboot/* /var/ftpd/
  3. 在http根目录下创建preseed配置文件
    sudo touch /var/www/html/preseed.cfg
  4. 编辑preseed.cfg文件,内容如下:
# Locale sets language and country. 
d-i debian-installer/language string en
d-i debian-installer/country string US
d-i debian-installer/locale string en_US #应该时zh_CN

# Keyboard selection. 
d-i console-setup/ask_detect boolean false 
d-i console-setup/layoutcode string us 

# Network configuration. #注,在netboot模式下,网络设置不起作用,需要在dhcp中设定用户名密码,
d-i netcfg/choose_interface select eth0 
d-i netcfg/dhcp_timeout string 60 
d-i netcfg/get_hostname string libvert 
d-i netcfg/get_domain string libvert 
d-i netcfg/no_default_route boolean true 

# Clock and time zone setup 
d-i clock-setup/utc boolean false 
d-i time/zone string Asia/Shanghai 


# Mirror settings  #安装文件镜像设置,使用http协议
#d-i mirror/protocol string http 
#d-i mirror/country manual   #这一步要注释掉,否则会需要人工选择镜像所处地区
d-i mirror/http/hostname string 192.168.1.101  
d-i mirror/http/directory string /ubuntu  # 镜像路径 http://192.168.1.101/ubuntu
d-i mirror/http/proxy string 

# Partitioning ###分区设定,这个要注意
d-i partman-auto/disk string/dev/sda
d-i partman-auto/method string regular 
d-i partman-lvm/device_remove_lvm boolean true 
d-i partman-md/device_remove_md boolean true 
d-i partman-auto/choose_recipe select atomic
 # This makes partman automatically partition without confirmation
d-i partman/confirm_write_new_label boolean true 
d-i partman/choose_partition select finish 
d-i partman/confirm boolean true 
d-i partman/confirm_nooverwrite boolean true 

#add new 
d-i partman-lvm/confirm boolean true 
d-i partman-lvm/confirm_nooverwrite boolean true 
d-i partman-auto-lvm/guided_size string max 
# Base system installation 
d-i base-installer/kernel/image string linux-generic 

# Account setup 
#d-i passwd/root-login boolean true 
#d-i passwd/root-password password 123456 
#d-i passwd/root-password-again password 123456 
#d-i passwd/make-user boolean false  
#d-i user-setup/encrypt-home boolean false 
#d-i user-setup/allow-password-weak boolean true  #允许weakpassword,

### Account setup
# Skip creation of a root account (normal user account will be able to
# use sudo). The default is false; preseed this to true if you want to set
# a root password.
d-i passwd/root-login boolean false
# Alternatively, to skip creation of a normal user account.
#d-i passwd/make-user boolean false

# Root password, either in clear text
#d-i passwd/root-password password r00tme
#d-i passwd/root-password-again password r00tme
# or encrypted using a crypt(3)  hash.
#d-i passwd/root-password-crypted password [crypt(3) hash]

# To create a normal user account.
d-i passwd/user-fullname string DeepctrlUser
d-i passwd/username string deepctrl
# Normal user's password, either in clear text
d-i passwd/user-password password deepctrl
d-i passwd/user-password-again password deepctrl
# or encrypted using a crypt(3) hash.
#d-i passwd/user-password-crypted password [crypt(3) hash]
# Create the first user with the specified UID instead of the default.
#d-i passwd/user-uid string 1010
# The installer will warn about weak passwords. If you are sure you know
# what you're doing and want to override it, uncomment this.
d-i user-setup/allow-password-weak boolean true

# The user account will be added to some standard initial groups. To
# override that, use this.
d-i passwd/user-default-groups string audio cdrom video

# Set to true if you want to encrypt the first user's home directory.
d-i user-setup/encrypt-home boolean false

# Package selection 
tasksel tasksel/first multiselect standard, ubuntu-server 
d-i pkgsel/include string openssh-server 
d-i pkgsel/upgrade select none 
d-i pkgsel/language-packs multiselect en, zh 
d-i pkgsel/update-policy select none 

# Boot loader installation 
d-i grub-installer/only_debian boolean true 

# Finishing up the installation 
d-i finish-install/reboot_in_progress note 

#d-i live-installer/net-image string http://192.168.1.101/ubuntu/install/filesystem.squashfs
  1. 修改/var/ftpd/pxelinux.cfg/default
# D-I config version 2.0
# search path for the c32 support libraries (libcom32, libutil etc.)
path ubuntu-installer/amd64/boot-screens/
include ubuntu-installer/amd64/boot-screens/menu.cfg
default ubuntu-installer/amd64/boot-screens/vesamenu.c32
prompt 0
timeout 1
  1. 修改/var/ftpd/ubuntu-installer/amd64/boot-screens/txt.cfg 为以下内容:
default install
label install
    menu label ^Install
    menu default
    kernel ubuntu-installer/amd64/linux
    append initrd=ubuntu-installer/amd64/initrd.gz ramdisk_size=100000 auto=true priority=critical interface=auto netcfg/no_default_route=true preseed/url=http://192.168.1.101/preseed.cfg 
label cli
    menu label ^Command-line install
    kernel ubuntu-installer/amd64/linux
    append tasks=standard pkgsel/language-pack-patterns= pkgsel/install-language-support=false vga=788 initrd=ubuntu-installer/amd64/initrd.gz --- quiet

注意该步骤配置文件中没有再指定ks.cfg,后面的安装过程完全通过preseed.cfg控制

目标机启动,完成安装

Dell服务器进入PXE模式,安装过程无需再人工介入。

下一步继续实践在Preseed里添加后处理,执行自动安装软件和配置系统环境。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容