通过 Cobbler 实现 Ubuntu 自动化运维
一、架构与前置条件
二、部署步骤
sudo apt-get update && sudo apt-get install -y cobbler cobbler-web dhcp3-server tftpd-hpa xinetd debmirrorallow booting; allow bootp; filename "/pxelinux.0"; next-server $next_server;$next_server 设为 Cobbler 服务器 IP;随后 sudo cobbler sync 会自动渲染到 /etc/dhcp/dhcpd.conf。filename "/pxelinux.0"; next-server <Cobbler_IP>;,并重启 DHCP 服务。disable = yes 改为 disable = no;启用并重启 xinetd/tftp。sudo systemctl enable --now cobblerd apache2 tftp xinetdsudo cobbler get-loaderssudo cobbler check(按提示修复,例如设置 server/next_server、管理 DHCP 与否等)。sudo firewall-cmd --permanent --add-service=tftp --add-service=http --add-port=25150-25151/tcp && sudo firewall-cmd --reload。三、导入镜像与创建系统
sudo mount -o loop /path/ubuntu-22.04.iso /mnt/ubuntusudo cobbler import --path=/mnt/ubuntu --name ubuntu-22.04 --breed ubuntu --os-version=jammysudo debmirror -a amd64 --method http --dist jammy --section main,restricted,universe,multiverse --host archive.ubuntu.com /var/www/html/ubuntu-mirrorsudo cobbler import --path=/var/www/html/ubuntu-mirror --name ubuntu-22.04 --breed ubuntu --os-version=jammycobbler distro list、cobbler profile list、cobbler reportcobbler signature update 再重试。四、无人值守配置与自动化扩展
mkpasswd -m sha-512,填入 /var/lib/cobbler/templates/cloud-init_user-data 的 password: $default_password_cryptedautoinstall: version: 1apt: primary: [{arches: [amd64], uri: "http://$http_server/cblr/links/$distro"}]identity: username: ubuntu; password: $default_password_cryptedssh: allow-pw: true; install-server: truestorage: layout: {name: lvm, sizing-policy: all}late-commands: - wget -O /target/tmp/autoinstall-user-data.yaml http://$http_server/cblr/svc/op/autoinstall/system/<name>; - chroot /target /bin/bash -s ssh-keygen -t rsa -b 2048 -N "" -f /root/.ssh/id_rsad-i partman-auto/method string lvm、d-i pkgsel/include string openssh-server vim htopsudo cobbler profile add --name ubuntu-20.04-preseed --distro ubuntu-20.04-x86_64 --kickstart /var/lib/cobbler/kickstarts/ubuntu-20.04.seedsudo cobbler system add --name host01 --profile ubuntu-22.04-cloudinit --mac 00:16:3E:xx:xx:xx --interface eth0 --static 1 --ip 192.168.1.101 --netmask 255.255.255.0 --gateway 192.168.1.1 --dns-nameservers 8.8.8.8sudo cobbler system edit --name host01 --netboot-enabled truesudo cobbler sync(每次变更后执行)。五、上线与运维实践
cobbler sync 与 API 调用进行审计与最小权限控制。cobbler sync 并做 dry-run 校验。