Saya perlu memasang Ubuntu 24.04 pada tiga server Dell R440 untuk lab OpenStack dan Kubernetes saya, tanpa berdiri di depan rak. Lesen iDRAC pada server ini ialah Express, yang tidak termasuk virtual console. Tetapi ia tidak diperlukan: PXE boot ditambah kawalan kuasa IPMI sudah mencukupi, dan itulah yang MAAS (Metal as a Service) lakukan.
Catatan ini merekod setup MAAS satu mesin (region dan rack controller bersama) dengan PostgreSQL dalam Docker.
Ringkasan (empat arahan utama)
sudo systemctl enable --now snapd
sudo snap install maas
sudo maas init region+rack --maas-url http://<maas-host>:5240/MAAS
sudo maas createadmin --username <admin> --email <email>
Di antara arahan kedua dan ketiga, MAAS perlukan pangkalan data PostgreSQL. Bahagian itu diterangkan di Langkah 2 (kaedah maas init di atas ialah versi ringkas).
Prasyarat
- Satu host Ubuntu 24.04 dengan SSH dan
sudo - iDRAC ketiga-tiga server Dell boleh dicapai dari rangkaian itu
- Pengguna dan kata laluan IPMI iDRAC (tahap admin)
- Alamat MAC bagi NIC yang digunakan untuk PXE boot
- Pada switch, NIC PXE mesti berada pada L2 yang sama dengan host MAAS
Jangan simpan kata laluan iDRAC dalam nota atau dokumen. Simpan dalam password manager, dan beri kepada MAAS hanya melalui borang atau pembolehubah persekitaran.
Langkah 1 — Pasang MAAS
sudo systemctl enable --now snapd
sudo snap install maas
snap list maas # versi 3.x = OK
Guna pakej snap rasmi. Semua image MAAS dalam Docker yang saya temui (dari sekitar 2018, versi 2.x) sudah EOL, jadi jangan gunakannya.
Langkah 2 — PostgreSQL dalam Docker
MAAS memerlukan PostgreSQL. Saya jalankan postgres:16 dalam Docker pada host yang sama, dengan volume supaya data kekal.
cd ~/docker/maas-postgres && docker-compose up -d
docker inspect --format '{{.State.Health.Status}}' maas-postgres # ulang sehingga "healthy"
Beberapa pilihan yang disengajakan:
- Kelayakan disimpan dalam
.env(chmod 600): penggunamaas, pangkalan datamaas, dan kata laluan rawak 32-hex - PostgreSQL bind ke
127.0.0.1:5432sahaja, tidak terdedah ke LAN - Data berada dalam volume bernama, jadi kekal apabila container restart
Langkah 2b — Init region dan rack controller
cd ~/docker/maas-postgres
sudo maas init region+rack --maas-url http://<maas-host>:5240/MAAS \
--database-uri "postgres://$(grep POSTGRES_USER .env | cut -d= -f2):$(grep POSTGRES_PASSWORD .env | cut -d= -f2)@127.0.0.1:5432/$(grep POSTGRES_DB .env | cut -d= -f2)"
sudo maas status # semua service mesti "running"
Subshell $(grep ...) membaca kata laluan dari .env, jadi ia tidak masuk ke shell history.
Langkah 3 — Cipta pengguna admin
sudo maas createadmin --username <admin> --email <email>
Ia akan meminta kata laluan (taip sendiri) dan sama ada mahu import kunci SSH (boleh skip dahulu).
Langkah 4 — Simpan API key
Supaya skrip dan CLI boleh mengkonfigurasi MAAS tanpa sudo setiap kali:
echo "MAAS_API_KEY=$(sudo maas apikey --username <admin>)" > ~/.env.maas && chmod 600 ~/.env.maas
Format kunci ialah login:key:secret. Ia rahsia.
Langkah 5 — Sahkan Web UI
Buka http://<maas-host>:5240/MAAS, log masuk, dan dashboard kosong bermakna sedia.
Langkah 6 — Subnet dan DHCP (titik keputusan)
Adakah VLAN ini sudah ada DHCP server?
- Tiada → hidupkan MAAS managed DHCP pada VLAN itu (paling mudah).
- Ada (contohnya router) → jangan hidupkan DHCP MAAS pada subnet yang sama, kerana ia akan bertembung. Gunakan subnet khusus untuk PXE, atau mod proxyDHCP.
Melalui UI (paling selamat):
Subnets→ pilih subnet; tetapkan Gateway IP dan DNS (DNS menunjuk ke host MAAS).- Tab
VLAN→ Enable DHCP (Managed) → simpan. Reserved ranges→ tambah julat dinamik (contohnya.200–.250) yang tidak bertindih dengan IP statik sedia ada.
Pengesahan: DHCPACK muncul dalam event log MAAS apabila node boot.
Langkah 7 — Daftar BMC / mesin
Melalui UI: Machines → Add chassis → pilih IPMI, isi alamat iDRAC, pengguna dan kata laluan. Atau melalui CLI:
maas login <profile> http://<maas-host>:5240/MAAS # masukkan API key
maas <profile> machines create \
mac_addresses="<MAC_PXE_NIC>" \
power_type=ipmi \
power_parameters_power_address=<idrac-ip> \
power_parameters_power_user=<ipmi_user> \
power_parameters_power_pass=<ipmi_pass>
Langkah 8 — Commission
Machines → pilih ketiga-tiga server → Actions → Commission.
Apa yang berlaku: MAAS boot node ke OS ephemeral, mengumpul inventori perkakasan (CPU, RAM, disk, NIC), mendaftarkannya, kemudian mematikan node. Ia mengambil sekitar 10–15 minit setiap node. Status bertukar kepada Ready apabila berjaya.
maas <profile> machines read | jq '.[] | {system_id, hostname}'
maas <profile> machine commission <system_id>
Langkah 9 — Deploy Ubuntu 24.04
Images→Ubuntu 24.04 LTS→ fetch (sekali sahaja, sekitar 1 GB).Machines→ pilih server →Actions→Deploy→ Ubuntu 24.04.- MAAS memasang melalui curtin secara tanpa pemantauan, jadi tiada skrin diperlukan.
Selepas siap: ssh ubuntu@<ip-server> dengan kunci SSH yang diimport.
Troubleshooting
| Masalah | Punca | Penyelesaian |
|---|---|---|
maas init gagal atau port 5240 tidak terbuka | Firewall (ufw pada Ubuntu) | sudo ufw allow 5240/tcp; semak ss -tlnp |
| PXE boot tidak jumpa MAAS | DHCP/TFTP tidak sampai | Pastikan subnet dan DHCP aktif, dan NIC PXE pada L2 yang sama |
Node tersangkut pada Commissioning | Kelayakan IPMI iDRAC salah | ipmitool -I lanplus -H <idrac-ip> -U <user> -P <pass> power status |
| Konflik port 53 | systemd-resolved memegang 127.0.0.53 | MAAS perlukan port 53; semak dengan ss -tlnp |
| Image MAAS Docker | Semua sudah EOL | Guna snap rasmi |
Leave a Comment / Ask a Question
Have thoughts or questions on this article? Drop a message below and Faiez will receive an instant notification.