Ubuntu Kurulumunu Otomatikleştirin
En son ne zaman yeni bir işletim sistemi kurdunuz? Ya da farklı sorayım: Çalışma ortamınızı en son ne zaman yenilediniz?
On yıl önce mi? Ona en son dokunduğunuzdan bu yana beş yıl mı geçti? Ya da belki sadece geçen yıl? Eğer benim gibi yeni şeyler denemekten hoşlanan biriyseniz bu süre aylara, haftalara hatta günlere kadar inebilir.
Bu yazıda işletim sistemimi yenileme sürecini nasıl otomatikleştirdiğimi anlatacağım. Bu gönderinin Automate Ubuntu 22.04 LTS Bare Metal'nin özeti veya basitleştirilmiş versiyonu olduğunu söyleyebilirsiniz.
Kurulum için iki USB sürücü kullanacağız: biri geçici bir işletim sistemini başlatmak için, diğeri ise cloud-init otomatik kurulum yapılandırmasını sağlamak için.
ISO'yu değiştirmek ve boot ayarlarını değiştirmek yerine standart bir ISO ile ilerleyip kullanıcının onayıyla ilerlemeyi tercih ediyorum. Kurulum tamamen "dokunmadan" olmayacak, ancak bunu yeterince otomatikleştirdiğimize inanıyorum.
- 22.04 releases page'nin altındaki en son canlı sunucu ISO'sunu bulun ve onunla önyüklenebilir bir USB oluşturun. Sürümler arasında farklılıklar olabileceğini unutmayın. Örneğin 22.04.4, 'wpasupplicant' ve 'openvswitch-switch' paketlerini içermiyor. WiFi kullanıyorsanız bu bir sorun olabilir.
- Cloud-init veri kaynağı için CIDATA adlı ikinci bir USB oluşturun.
# yeni usb'nin mount olmadığından emin olalım
sudo umount /dev/sda
# formatlayıp gerekli dizinleri oluşturalım
sudo mkfs.vfat -I -F 32 -n 'CIDATA' /dev/sda
mkdir /tmp/cidata
sudo mount /dev/sda /tmp/cidata
cd /tmp/cidata
touch meta-data
cat <<'EOF' > user-data
#cloud-config
autoinstall:
version: 1
identity:
hostname: ubuntu-server
username: ubuntu
# "ubuntu" - created with `docker run -it --rm alpine mkpasswd --method=SHA-512`
password: "$5$r3Kl6AKBqjA78VCX$4.Vuc56PR2faX3vLuqBxHxF796qiLhxuS4MacXtTt5C"
EOF
Tam kullanıcı veri dosyam:
#cloud-config
autoinstall:
apt:
disable_components: []
geoip: true
preserve_sources_list: false
primary:
- arches:
- amd64
- i386
uri: http://archive.ubuntu.com/ubuntu
- arches:
- default
uri: http://ports.ubuntu.com/ubuntu-ports
drivers:
install: false
identity:
hostname: host
password: password_hash_for_shadow # you can create one by reading https://unix.stackexchange.com/questions/81240/manually-generate-password-for-etc-shadow
realname: username
username: username
kernel:
package: linux-generic
keyboard:
layout: en
toggle: null
variant: ''
locale: en_US.UTF-8
network:
ethernets:
enp38s0:
dhcp4: true
version: 2
early-commands:
- echo 'linux-generic-hwe-22.04' > /run/kernel-meta-package
source:
id: ubuntu-server
search_drivers: true
late-commands:
- rm /target/etc/netplan/00-installer-config.yaml
- >-
printf "network:\n version: 2\n wifis:\n wlo1:\n access-points:\n access-point-name:\n password: pass\n dhcp4: true\n dhcp6: false\n addresses: [192.168.1.300/24]\n routes:\n - to: default\n via: 192.168.1.1\n nameservers:\n addresses: [192.168.1.1]"
>> /target/etc/netplan/00-installer-config.yaml
ssh:
allow-pw: true
install-server: true
packages:
- wpasupplicant
- openvswitch-switch
storage:
config:
- ptable: gpt
serial: disk_serial
wwn: disk_wwn
path: /dev/nvme0n1
wipe: superblock-recursive
preserve: false
grub_device: false
type: disk
id: disk0
- device: disk0
size: 1127219200
wipe: superblock
flag: boot
number: 1
preserve: false
grub_device: true
offset: 1048576
type: partition
id: partition-0
- fstype: fat32
volume: partition-0
preserve: false
type: format
id: format-0
- device: disk0
size: 920074824192
wipe: superblock
number: 2
preserve: false
grub_device: false
offset: 1128267776
type: partition
id: partition-1
- fstype: ext4
volume: partition-1
preserve: false
type: format
id: format-1
- path: /
device: format-1
type: mount
id: mount-1
- path: /boot/efi
device: format-0
type: mount
id: mount-0
updates: all
shutdown: poweroff
version: 1
Artık sunucuyu başlatabilirsiniz. Onay istendiğinde devam etmek için "y" yazmanız yeterlidir. Ve işte sonuç! 😀