Kickstart(RedHat)、Preseed(Debian)、cloud-init(云) 进行自动化部署
跳转到导航
跳转到搜索
CentOS Kickstart自动化安装
服务器端 安装源服务器 安装HTTP、DHCP和TFTP服务
client 要每台去开机的 不完全自动化可见 这个就是我们要安装os的机器
ps Cobbler是较早前的kickstart的升级版,优点是比较容易配置,还自带web界面比较易于管理
以下是一个使用Kickstart在Red Hat、CentOS或Fedora上进行自动化部署的例子:
### 环境准备
1. **安装服务器**:准备一台服务器作为安装源服务器,安装好Red Hat/CentOS/Fedora系统。
2. **关闭防火墙**:为了简化操作,暂时关闭防火墙:
```bash
systemctl disable firewalld
systemctl mask firewalld
```
3. **安装必要的服务**:安装HTTP、DHCP和TFTP服务:
```bash
yum install -y httpd dhcp tftp-server syslinux
```
### 配置HTTP服务
1. **创建安装源目录**:在HTTP服务的根目录下创建一个目录来存放安装源:
```bash
mkdir -p /var/www/html/os
```
2. **挂载ISO镜像**:将Red Hat/CentOS/Fedora的安装ISO镜像挂载到创建的目录:
```bash
mount -o loop /path/to/iso /var/www/html/os
```
3. **启动HTTP服务**:确保HTTP服务已启动:
```bash
systemctl start httpd
systemctl enable httpd
```
### 创建Kickstart文件
1. **编写Kickstart文件**:创建一个名为`ks.cfg`的Kickstart文件,内容如下:
```bash
# Kickstart file for automated installation
#version=DEVEL
install
url --url="http://<your-server-ip>/os"
lang en_US.UTF-8
keyboard us
network --bootproto=dhcp
rootpw --iscrypted $1$V4WuX$5GZKZ8s6l5l6z7u5z3s2
firewall --disabled
selinux --disabled
timezone Asia/Shanghai
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /boot --fstype="ext4" --size=200
part / --fstype="xfs" --size=1
%packages
@base
@development-tools
%end
```
将`<your-server-ip>`替换为你的安装源服务器的IP地址。
2. **将Kickstart文件放置到HTTP根目录**:
```bash
cp ks.cfg /var/www/html/
```
### 配置DHCP和TFTP服务
1. **配置DHCP服务**:编辑DHCP配置文件`/etc/dhcp/dhcpd.conf`,添加以下内容:
```bash
subnet <your-subnet> netmask <your-netmask> {
range <your-ip-range>;
option routers <your-gateway>;
option domain-name-servers <your-dns>;
filename "pxelinux.0";
next-server <your-server-ip>;
}
```
将`<your-subnet>`、`<your-netmask>`等替换为你的网络信息。
2. **配置TFTP服务**:确保TFTP服务已启动,并将PXE引导文件复制到TFTP根目录:
```bash
systemctl start tftp-server
systemctl enable tftp-server
cp /var/www/html/os/isolinux/* /var/lib/tftpboot/
```
### 配置PXE引导
1. **编辑PXE引导配置文件**:在TFTP根目录下创建`pxelinux.cfg`目录,并在其中创建`default`文件:
```bash
mkdir -p /var/lib/tftpboot/pxelinux.cfg
vi /var/lib/tftpboot/pxelinux.cfg/default
```
添加以下内容:
```bash
default menu.c32
prompt 0
menu title PXE Boot Menu
timeout 300
label linux
menu label ^Install CentOS
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://<your-server-ip>/ks.cfg
```
### 测试部署
1. **启动目标主机**:将需要安装系统的主机设置为从网络启动(PXE启动)。
2. **开始安装**:目标主机将从网络获取IP地址,并从TFTP服务器下载PXE引导文件,然后按照Kickstart文件的配置自动进行系统安装。
通过以上步骤,就可以使用Kickstart在Red Hat、CentOS或Fedora上实现自动化部署。
==
cloud-init(云) 进行自动化部署
虽然现在用了cloud 我们装机的机会少了,但是自己的内网机器 我们还是可以用 cloud -init cloud-init 映像
例如
https://cloud.centos.org/ https://cloud-images.ubuntu.com/
结合 terraform 方便得很 可见 Terraform-provider-proxmox eg
#执行下面的命令创建一个虚拟机 #这里 9000 只是一个ID 你只要写个你的 proxmox还没用的ID就行了 qm create 9000 --name "ubuntu-2004-cloudinit-template" --memory 1024 --cores 1 --net0 virtio,bridge=vmbr0 qm importdisk 9000 ubuntu-20.04-server-cloudimg-amd64.img local-lvm qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0 qm set 9000 --boot c --bootdisk scsi0 qm set 9000 --ide2 local-lvm:cloudinit qm set 9000 --serial0 socket --vga serial0 qm set 9000 --agent enabled=1 #将刚创建好的虚拟机转换成模板 qm template 9000
https://cloudinit.readthedocs.io/en/latest/reference/examples.html
如何在 Azure 中的 Linux 虚拟机首次启动时使用 cloud-init 对其进行自定义
https://help.aliyun.com/zh/ecs/user-guide/install-cloud-init