我尝试创建了一个可以自动安装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/
bannerAds