以往Ubuntu設定自動安裝跟RHEL系列一樣使用kickstart腳本,
從版本20.04開始支援 automated installation mode by Autoinstall。
藉由ISO、光碟、隨身碟...etc去自動安裝的概念跟PXE一樣,就不多贅述
PXE Server選單內的參數要填上(以HTTP提供OSI為範例): autoinstall ds=nocloud-net;s=http://192.168.20.5/media/ubuntu_220402/autoinstall/
例如:
:ubuntu220402-net_default-pxe
set server_root http://192.168.20.5/media/ubuntu_220402
set serverip 192.168.20.5
set server_ISO http://192.168.20.5/media/ISO
initrd ${server_root}/casper/initrd
kernel ${server_root}/casper/vmlinuz
imgargs vmlinuz initrd=initrd root=/dev/ram0 ip=dhcp ipv6.disable=1 cloud-config-url=/dev/null url=http://192.168.20.5/media/ISO/ubuntu-22.04.2-live-server-amd64.iso autoinstall ds=nocloud-net;s=http://192.168.20.5/media/ubuntu_220402/autoinstall/ ---
HTTP Server放置OSI目錄底下,新增一個名為autoinstall的資料夾、以及設置兩個檔案
mkdir /{OSI-Path}/ubuntu_220402/autoinstall
touch /{OSI-Path}/ubuntu_220402/autoinstall/meta-data <---無內容的空白檔案即可
vim /{OSI-Path}/ubuntu_220402/autoinstall/user-data <---此檔案為yaml內容,user-data檔案內容,請看後面內容
套網路上大神說的:這幾年 yaml 深得大眾的心,設定檔就是要用 yaml 格式才是潮
之前碰Ansible也是用yaml格式的設定檔、Ubuntu網路設定改採netplan控制,設定檔也是yaml格式
,這年代沒有用yaml好像就不棒了一樣XD
離題了...
由於我需要setup一組任何storage config,不考慮保留原系統配置上的OS,都能完成自動安裝為目的
且OS安裝好之後還能透過root ssh登入,一些測試需要的套件也需要先安裝好,user-data檔案內容如下:
#cloud-config
autoinstall:
apt:
disable_components: []
geoip: true
preserve_sources_list: false
primary:
- arches:
- amd64
- i386
uri: http://us.archive.ubuntu.com/ubuntu
- arches:
- default
uri: http://ports.ubuntu.com/ubuntu-ports
drivers:
install: false
user-data:
disable_root: false
chpasswd:
expire: false
list:
- root:$6$.YyulZ0wfYTrNLsi$iASrb/xR5390hjV00ykn964yFkjLKmtSUPEsnle2IAQ4.0Y2MVqd0JmYdnFogya7Oq.XtrpFsWKmZ8G22aFuF.
identity:
hostname: dvt2rubypass
password: $6$.YyulZ0wfYTrNLsi$iASrb/xR5390hjV00ykn964yFkjLKmtSUPEsnle2IAQ4.0Y2MVqd0JmYdnFogya7Oq.XtrpFsWKmZ8G22aFuF.
realname: test
username: test
kernel:
package: linux-generic
keyboard:
layout: us
toggle: null
variant: ''
locale: en_US.UTF-8
timezone: Asia/Taipei
network:
ethernets:
zz-all-en:
dhcp4: true
dhcp6: false
match:
name: en*
zz-all-eth:
dhcp4: true
dhcp6: false
match:
name: eth*
version: 2
ssh:
allow-pw: true
authorized-keys: []
install-server: true
storage:
layout:
name: direct
# name: direct
# match:
# ssd: yes
swap:
size: 0
packages:
- samba
- cifs-utils
- build-essential
- gcc
- samba
- zip
- nvme-cli
- net-tools
- dkms
- menu
- ipmitool
- fio
- iperf3
- atop
- sshpass
late-commands:
- sed -ie 's/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX="ipv6.disable=1 console=ttyS0,115200n8"/' /target/etc/default/grub
- sed -ie 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /target/etc/ssh/sshd_config
- sed -ie 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /target/etc/ssh/sshd_config
- sed -ie 's/#AllowAgentForwarding yes/AllowAgentForwarding yes/' /target/etc/ssh/sshd_config
- curtin in-target -- update-grub2
updates: security
version: 1
留言列表