我尝试创建了一个可以自动安装CentOS7的ISO文件,而无需手动点击GUI
首先
我在家里重新利用了一台旧服务器作为VMware ESXi(一种小型私有云)的虚拟服务器,在那里我创建虚拟机来验证新技术,以及尝试一些在Qiita上看到的感兴趣的事情。
但是,每次创建虚拟机并安装操作系统都非常麻烦。
(诶?你可以使用vagrant之类的工具啊,我的主要笔记本电脑太破旧了…内存严重不足,而且尽量不想弄脏本地环境。)
因此,我想要自动化并轻松地创建已安装操作系统的虚拟机!
我想做的事情。
・制作使用KickStart自动安装CentOS7的ISO文件。←本次选择此项
・通过Ansible操作ESXi,实现创建、删除和更改虚拟机配置的功能。
组成
通常情况下,ISO的制作是在低性能的笔记本电脑上进行的,然后将制作好的ISO文件发送到ESXi服务器上。
同一LAN
ポンコツノートPC <-----------> ESXiサーバ
ip:192.168.10.10 ip:192.168.10.8
操作步骤
获取用于自动安装操作系统的CentOS7 ISO的源文件。
为了自动安装open-vm-tools等软件,建议获取DVD版的ISO,而不是Minimal版。
# wget http://ftp.iij.ad.jp/pub/linux/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
展开CentOS7的ISO文件
# mount -r /root/CentOS-7-x86_64-DVD-1611.iso /mnt
# mkdir -p /tmp/centos7/ks
# cp -rp /mnt/* /tmp/centos7
创建 KickStart 文件
# cd /tmp/centos7/ks
# vi anaconda-ks.cfg
# version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Use graphical install
text
# Run the Setup Agent on first boot
firstboot --enable
#ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=jp --xlayouts='jp'
# System language
lang ja_JP.UTF-8
# Network information
network --bootproto=dhcp --device=ens192 --ipv6=auto --activate
network --hostname=testvm
# Root password
rootpw --iscrypted $6$mdTPMO/VJC68VrUZ$ctM6wT.oT8WVVZ44ec6v.u1gn28IvAYo3tOEW/EfGmt9hxbJlwd60LAUi2lFAtDYFEwDBOOUAI/c9XhRVi10K.
# Do not configure the X Window System
skipx
# System timezone
timezone Asia/Tokyo --isUtc
user --name=centos --password=$6$j4FkN7wJ5o2rU6X0$yDky4ZGY.GKq2XmSTErJJH4Amt2MvBMYgO0mwD9PYmmg.bY/FXG0QK0XPlWGfQS5V7xuY618XaWLWzYigIXNY. --iscrypted --gecos="centos"
zerombr
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
autopart
#example partition setting
#part pv.216 --fstype="lvmpv" --ondisk=sda --size=15883
#part /boot --fstype="xfs" --ondisk=sda --size=500
#volgroup centos --pesize=4096 pv.216
#logvol / --fstype="xfs" --grow --maxsize=51200 --size=1024 --name=root --vgname=centos
#logvol swap --fstype="swap" --size=1638 --name=swap --vgname=centos
selinux --disabled
firewall --disabled
%packages
@^minimal
@core
kexec-tools
vim
open-vm-tools
%end
%addon com_redhat_kdump --enable --reserve-mb='auto'
%end
# Reboot after the installation is complete.(eject DVD media before rebooting)
reboot --eject
- text
安装时的屏幕设置。您可以选择GUI(图形界面)模式或文本模式。如果您想测试KickStart文件的操作,请选择图形界面,因为它可能更易使用。但是,最终如果您需要在多台机器上进行设置,我认为文本模式更快更好。
・グラフィカル(GUI)モードにする場合
graphical
・テキストモードにする場合
text
- selinux設定
选择SELinux的设置。可以选择禁用(–disabled)、启用(–enforcing)或输出警告(–permissive)。
selinux [--disabled|--enforcing|--permissive]
ex)
selinux --disabled
firewall --disabled
- サービス設定
进行服务的启用/禁用设置。如果要指定多个服务,请使用逗号分隔,之后的空格将不会被识别。
サービスの有効化
services --enabled=SERVICE1,SERVICE2,SERVICE3
サービスの無効化
services --disabled=SERVICE1,SERVICE2,SERVICE3
- zerombr
如果不添加这个设置,将会在分区初始化设置页面停止,并不能进行自动安装。
- %packages
将在%packages〜%end之间指定的软件包安装。
- KickStart完了後の挙動
リブートする場合:"reboot --eject" ※"-eject"はdvdを排出するオプション
電源OFFする場合:"poweroff"
一時停止する場合:"halt"
自動安装的启动菜单设置
在操作系统安装过程中的菜单中新增一个用于自动安装的菜单选项。
# vi /tmp/centos7/isolinux/isolinux.cfg
timeout 600 <- 50変更
・
・
・
label check
menu label Test this ^media & install CentOS Linux 7
#menu default <- コメントアウト
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
↓追加
label centos7auto
menu label ^Install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.stage2=cdrom inst.ks=cdrom:/ks/anaconda-ks.cfg
安装软件以创建ISO文件
# yum install genisoimage
※インストール完了後にmkisofsコマンドがあること
使用mkisofs命令将工作目录完全转化为ISO镜像。
# cd /tmp/centos7
# mkisofs -o ../CentOS-7-x86_64-DVD-1611_Auto.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -V "CentOS 7 x86_64" ./
※これでOSを自動インストールするISOが作成される
选件
-l : Allow full 31 character filenames for ISO9660 names
-r : Generate rationalized Rock Ridge directory information
-J : Generate Joliet directory information
-o FILE : Set output file name
-b FILE : Set El Torito boot image name
-c FILE : Set El Torito boot catalog name
-no-emul-boot : Boot image is 'no emulation' image
-boot-load-size # : Set numbers of load sectors
-boot-info-table : Patch boot image with info table
请参考以下链接,该链接为《Red Hat Enterprise Linux 7 安装指南》中的「Kickstart 语法」部分:
https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/sect-kickstart-syntax.html
将数据传输到ESXi的数据存储区。
请根据自己的环境更改ESXi的ISO文件存放位置。
# scp /var/tmp/CentOS-7-x86_64-DVD-1611_Auto.iso root@192.168.10.8:/vmfs/volumes/datastore1/ISO/centos/