Files
maas-proxmox/README.tr.md
ilkermanap 77bf86a1b8 Separate what was actually verified from what was only written
The previous "Verified status" section listed the test environment and a
one-line result, which let readers assume far more coverage than the testing
justified. Options that had never run once were presented alongside ones that
were exercised repeatedly.

Every configuration option in the reference tables that was not exercised is now
marked "Untested" inline — 25 of them, including every PVE_NET_* value other than
the tested defaults, PVE_CLUSTER_LINK0/LINK1, fingerprint discovery, the join
retry path, and every PVE_THINPOOL_* value beyond auto with the defaults.

"Verified status" is now two lists. The first gives, per area, the observation
that supports the claim rather than the claim alone: which command was run, what
it printed, which file was found where. The second is everything that was never
exercised, with no implication that it is broken.

Three claims elsewhere were overstated and are corrected:

  * the ~700 MB saving from a local APT cache is an estimate from package sizes;
    that path has never been run
  * MAAS 3.2+ is the documented minimum, but only 3.7.2 with snap packaging was
    tested; the deb packaging's preseed path is untested
  * the build timings are measured, but the contribution of each individual
    optimisation is not

Both cases in "Moving to a new Proxmox release" are also marked: the minor-version
path is verified only as a mechanism (no package versions are pinned), never as an
actual version step, and the claim about upstream breaking on an unknown Debian
release is read from upstream's source rather than observed.

Verified while writing this: the iSCSI initiator names really do differ between
the two nodes, PVE_CLUSTER_WIPE_SECRETS really does scrub both password fields
after a join, and "make preseed" and "make install-preseed" work as targets on the
MAAS region controller rather than only as the commands they wrap.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-04 22:03:19 +02:00

526 lines
21 KiB
Markdown

> **Not:** Kanonik dokumantasyon [README.md](README.md) (Ingilizce). Bu Turkce
> surum geride kalmis olabilir.
# maas-proxmox
MAAS ile bare-metal sunuculara deploy edilebilen **Proxmox VE** imajlari uretir.
Deploy edilen dugum ilk acilista kendini yapilandirir: `vmbr0` koprusunu kurar,
`local-lvm` thin havuzunu olusturur ve istenirse bir Proxmox kumesine otomatik katilir.
Varsayilan hedef: **Proxmox VE 9.x** (Debian 13 "trixie" tabanli).
---
## Nasil calisiyor?
```
Debian 13 cloud image (qcow2)
├─ packer-maas / debian sablonu (QEMU + KVM)
│ ├─ cloud-init, netplan, curtin uyumlulugu [upstream]
│ ├─ disk/cpu/ram yamasi (4G -> 16G) [bu proje]
│ └─ customize-proxmox.sh [bu proje]
│ ├─ Proxmox APT deposu + anahtarlik
│ ├─ proxmox-default-kernel + proxmox-ve
│ ├─ Debian cekirdegi / os-prober kaldirilir
│ ├─ pmxcfs dugum kimligi sifirlanir
│ └─ overlay: pve-maas-init + systemd unit + curtin-hooks
└─ proxmox-ve-9.tar.gz ──► maas boot-resources create
MAAS deploy (curtin)
pve-maas-init.service (ilk acilis)
hosts → identity → rootpw →
network → cluster → storage
```
Neden Proxmox ISO'su degil de Debian uzerine kurulum? MAAS imaji disk bolumlemesini,
ag yapilandirmasini, kullanici/SSH anahtarlarini ve cloud-init'i **curtin** ile kendisi
yonetir. Debian tabanli imaj bu akisa dogal olarak uyar; ISO'dan yakalanan ham disk
imaji (`dd.gz`) ise MAAS'in disk duzenini tamamen devre disi birakir.
---
## Dogrulanmis durum
**Kanonik ve ayrintili liste [README.md](README.md#verified-status) icindedir** -
neyin test edildigi ve neyin edilmedigi orada secenek secenek isaretlidir.
Ozet: iki dugumlu bir kume, MAAS 3.7.2 uzerinde, elle mudahale olmadan kuruldu
(proxmox-ve 9.2.0 / pve-manager 9.2.11 / kernel 7.0.14-15-pve). vmbr0 donusumu,
root parolasi, dugum kimligi, local-lvm thin havuzu, kume olusturma ve katilma
calisir durumda goruldu.
Test EDILMEYENLER de az degil: `PVE_CLUSTER_LINK0` (ayri corosync agi), parmak izi
otomatik kesfi, `PVE_NET_APPLY=reload`, bond/VLAN topolojileri, IPv6, arm64, BIOS
onyukleme, `pve-enterprise` deposu, `deploy-cluster.sh`'in gercek deploy yolu ve
gercek bare-metal donanim (test dugumleri sanal makineydi). Tam liste Ingilizce
dokumanda.
## Gereksinimler
**Build host** (imajin derlendigi makine):
* Ubuntu 22.04+ (24.04 LTS onerilir), x86_64
* **Nested virtualization / KVM erisimi** — VM ise CPU tipi `host` olmali
* 4+ vCPU, 8+ GB RAM, 25+ GB bos disk
* `sudo` yetkisi
**Deploy tarafi:**
* MAAS 3.2+ (custom image destegi)
* Curtin 21.0+
* Region controller uzerinde bu depodaki curtin preseed dosyasi (asagida)
---
## Hizli baslangic
```bash
# 1) Build host bagimliliklari (packer, qemu, nbdkit, ovmf, ...)
sudo ./scripts/install-deps.sh
# 2) Imaji derle (~20-40 dk, ag hizina bagli)
sudo make image
# -> build/proxmox-ve-9.tar.gz
# 3) MAAS curtin preseed dosyasini uret
make preseed
# -> build/curtin_userdata_custom_amd64_generic_proxmox-ve-9
# 4) Preseed'i MAAS region controller'a kopyala
sudo make install-preseed
# (varsayilan: /var/snap/maas/current/preseeds/ ; deb kurulumunda
# MAAS_PRESEED_DIR=/etc/maas/preseeds kullanin)
# 5) Imaji MAAS'a yukle
make upload MAAS_PROFILE=admin
```
Ardindan MAAS arayuzunde makineyi deploy ederken OS olarak
**Custom → Proxmox VE 9** secin, ya da CLI ile:
```bash
maas $PROFILE machine deploy $SYSTEM_ID \
osystem=custom distro_series=proxmox-ve-9 \
user_data="$(base64 -w0 maas/examples/01-first-node.yaml)"
```
---
## Makefile degiskenleri
| Degisken | Varsayilan | Aciklama |
|---|---|---|
| `PVE_VERSION` | `9` | Proxmox VE ana surumu (imaj adinda kullanilir) |
| `DEBIAN_SERIES` | `trixie` | PVE'nin dayandigi Debian kod adi |
| `DEBIAN_VERSION` | `13` | Debian ana surum numarasi |
| `PVE_REPO` | `pve-no-subscription` | `pve-no-subscription` / `pve-enterprise` / `pve-test` |
| `PVE_EXTRA_PACKAGES` | `ifupdown2 open-iscsi chrony ...` | Imaja eklenecek ek paketler |
| `IMAGE_NAME` | `proxmox-ve-9` | MAAS'taki `custom/<ad>` ve preseed dosya adi |
| `ARCH` / `BOOT` | `amd64` / `uefi` | Mimari ve onyukleme modu |
| `DISK_SIZE` | `16G` | Build VM disk boyutu (upstream sablondaki 4G yetersiz) |
| `BUILD_CPUS` / `BUILD_MEM` | `4` / `4096` | Build VM kaynaklari |
| `DEBIAN_IMAGE_CHANNEL` | `stable` | `stable` sabit URL kullanir (packer onbellegi isabet eder); `daily` upstream varsayilani |
| `GZIP_LEVEL` | `6` | Tarball sikistirma seviyesi (upstream 9; 6 belirgin hizli, imaj ~%2-3 buyuk) |
| `APT_PROXY` | *(bos)* | Yerel APT onbellegi, or. `http://10.0.2.2:3142` - bkz. `make deps-cache` |
| `PM_REF` | `main` | Kullanilacak `canonical/packer-maas` surumu (dal, etiket ya da commit SHA) |
| `MAAS_PROFILE` | `admin` | `maas` CLI profil adi |
| `MAAS_PRESEED_DIR` | `/var/snap/maas/current/preseeds` | Preseed dizini |
| `TIMEOUT` | `3h` | Packer build zaman asimi |
### Derlemeyi hizlandirma
Sure agirlikli olarak VM icindeki paket kurulumunda geciyor. Uygulanan
optimizasyonlar (varsayilan olarak acik):
* **eatmydata** - dpkg'nin her paket icin yaptigi `fsync` cagrilari devre disi.
Imaj derlemede guvenli, cunku build VM'inin diski zaten atilabilir.
* **initramfs erteleme** - `update-initramfs` kurulum boyunca diverte edilir ve
en sonda yalnizca bir kez calistirilir (cekirdek + firmware + dkms
tetikleyicileri normalde defalarca calistiriyor).
* **Kararli cloud image** - sabit URL sayesinde packer'in onbellegi isabet eder;
`daily` her gun degistigi icin her derlemede ~350MB yeniden inerdi.
* **`GZIP_LEVEL=6`** - upstream `--best` (9) kullaniyor; 6 ile `pigz` cok
cekirdekli calisip belirgin hizlaniyor.
Tekrarlanan derlemeler icin en buyuk ek kazanc yerel APT onbellegi:
```bash
sudo make deps-cache # apt-cacher-ng kurar
sudo make image APT_PROXY=http://10.0.2.2:3142 # ~700MB indirme onbellekten
```
`10.0.2.2`, packer'in user-mode aginda build host'un adresidir. Proxy verildiginde
Debian depolari `https` yerine `http` kullanacak sekilde yeniden yazilir (onbellek
CONNECT tunelini saklayamaz); paket imzalari yine dogrulandigi icin guvenlik
kaybi yoktur.
### Yeni bir Proxmox surumune gecmek
Once ne oldugunu gorun - derleme yapmadan, saniyeler icinde:
```bash
make check-upstream
```
Depodaki guncel `proxmox-ve` / `pve-manager` surumlerini, elinizdeki imajin
kunyesiyle (`/etc/pve-maas/image-info`) yan yana gosterir.
**Durum 1 - ayni Debian tabani icinde surum yukseltmesi (9.2 -> 9.3 -> ...)**
Hicbir sey degistirmeniz gerekmez. Imajda surum sabitlemesi yok; her derleme
depodaki en guncel `proxmox-ve` paketini alir:
```bash
sudo make image && make verify && make upload
```
Imaj adi (`proxmox-ve-9`) ve preseed dosyasi ayni kaldigi icin MAAS'taki kayit
yerinde guncellenir, preseed'e dokunmaniza gerek kalmaz.
**Durum 2 - Debian tabanini degistiren ana surum (or. PVE 10 / Debian 14)**
Bu **otomatik degildir**; bu depodaki degiskenleri degistirmek tek basina yetmez.
Sebep: temel aldigimiz `canonical/packer-maas` sablonunun icinde Debian surumune
ozel sabit kosullar var -
```
debian/scripts/networking.sh: if [ ${DEBIAN_VERSION} == '12' ] || [ ${DEBIAN_VERSION} == '13' ]
debian/scripts/setup-boot.sh: if [ ${DEBIAN_VERSION} == '13' ]
```
Bilinmeyen bir surumde bu kosullar `else` dalina duser ve 2020 tarihli bir
cloud-init paketi kurulur; imaj sessizce bozulur. Bu yuzden ana surum gecisi
**upstream'in yeni Debian'i desteklemesini bekler**. Sirasi:
1. `canonical/packer-maas` yeni Debian'i destekliyor mu?
(`debian/scripts/` icindeki `DEBIAN_VERSION` kosullarina bakin)
2. Proxmox anahtarligi yayinlanmis mi?
`https://enterprise.proxmox.com/debian/proxmox-archive-keyring-<suite>.gpg`
3. Depoda paketler var mi?
`curl -s http://download.proxmox.com/debian/pve/dists/<suite>/Release | grep Components`
4. Sonra:
```bash
sudo make image PVE_VERSION=10 DEBIAN_SERIES=forky DEBIAN_VERSION=14 PM_REF=main
make preseed PVE_VERSION=10
```
Yeni preseed dosyasinin adi da degisir (`..._proxmox-ve-10`) - MAAS'a kurmayi
unutmayin.
### Upstream surum sabitlemesi
`PM_REF`, test edilmis bir `canonical/packer-maas` commit'ine sabitlenmistir.
`main` birakmak, upstream'de yapilan bir degisikligin derlemenizi haber vermeden
bozmasi anlamina gelir. Ileri tasirken `PM_REF=main` ile derleyip **deploy ederek**
test edin, sonra yeni SHA'yi Makefile'a yazin.
---
## Dugumun ilk acilis davranisi
Imajda `pve-maas-init.service` etkin gelir. Servis su asamalari sirayla, her birini
yalnizca bir kez calistirir (`/var/lib/pve-maas/<asama>.done`):
| Asama | Ne yapar |
|---|---|
| `hosts` | `/etc/hosts` icinde `<yonetim-ip> <fqdn> <hostname>` satirini kurar (pvecm bunu sart kosar), postfix `myhostname` degerini duzeltir |
| `identity` | Dugume ozel kimlikleri yeniden uretir (iSCSI IQN) |
| `rootpw` | `root@pam` parolasini ayarlar |
| `network` | MAAS'in yapilandirdigi arayuzu `vmbr0` koprusune donusturur, cloud-init/netplan ag yapilandirmasini devre disi birakir |
| `cluster` | Kume olusturur (`create`) veya mevcut kumeye katilir (`join`) |
| `storage` | VG'deki bos alanda LVM-thin havuzu acar ve `local-lvm` olarak tanimlar |
Bir asama basarisiz olursa servis hata verir ve **sonraki acilista kaldigi yerden
devam eder**. Durum:
```bash
systemctl status pve-maas-init
journalctl -u pve-maas-init -b
ls -l /var/lib/pve-maas/
```
Yapilandirma `/etc/pve-maas/pve-maas.conf` (varsayilanlar) ve
`/etc/pve-maas/conf.d/*.conf` (cloud-init ile yazilan, ezici degerler) dosyalarindan
okunur. Tum secenekler icin [`overlay/etc/pve-maas/pve-maas.conf`](overlay/etc/pve-maas/pve-maas.conf).
### Proxmox + MAAS birlesiminin tuzaklari
Bu imaj asagidaki uc sorunu bilerek cozer. Kendi turevinizi yazacaksaniz
bunlari bozmayin:
**1. systemd siralama dongusu.** `pve-maas-init.service` icin
`After=cloud-final.service` + `WantedBy=multi-user.target` yazmak bu imajda
donguye yol aciyor ve systemd dongoyu kirmak icin *bizim* servisimizi siliyor:
```
multi-user.target: Found ordering cycle on pve-maas-init.service/start
Job pve-maas-init.service/start deleted to break ordering cycle
```
Servis sessizce hic calismaz. Cozum: unit'te cloud-init siralamasi yok;
script kendi icinde `cloud-init status --wait` ile bekliyor.
**2. `pvenetcommit.service`.** Proxmox ag degisikliklerini once
`/etc/network/interfaces.new` dosyasina yazar; `pvenetcommit` her acilista bu
dosyayi `interfaces` uzerine **tasir**. Build sirasinda olusan bir `.new`
dosyasi imajda kalirsa dugumun ilk acilisinda yapilandirmayi ezer. Hem imajda
hem de ag donusumunden sonra siliniyor.
**3. Arayuz adi uyusmazligi.** MAAS commissioning'i Ubuntu ephemeral ortaminda
yapar ve karti orada gordugu adla kaydeder (or. `enp6s18`). Deploy edilen
Debian 13 / Proxmox ise udev'in farkli isimlendirme semasi yuzunden ayni karta
`ens18` diyebilir. Bu durumda cloud-init acilista yeniden adlandirmayi dener,
`[busy]` hatasi alir ve **arayuzu kapali birakir** - dugum agini tamamen
kaybeder:
```
Failed to rename devices: [busy] Error renaming mac=... from ens18 to enp6s18
```
`curtin-hooks`, MAAS'in ag yapilandirmasindaki MAC -> ad eslemesini
`/etc/systemd/network/10-maas-<ad>.link` olarak yazar; udev karti en bastan
dogru adla olusturur ve yeniden adlandirma gerekmez.
### Ilk acilista ag sahipligi
Imaj `networking.service`'i (ifupdown2) **devre disi** ve `/etc/network/interfaces`
dosyasini yalnizca `lo` icerecek sekilde gonderir. Ilk acilista agi tamamen MAAS
yonetir (curtin'in yazdigi netplan + systemd-networkd). `pve-maas-init` ag asamasi
`vmbr0` yapilandirmasini yazdiktan sonra netplan/networkd'yi devre disi birakip
`networking.service`'i kendisi etkinlestirir.
Bu sirala onemli: ifupdown2 etkin gelirse, imajdan gelen eski arayuz tanimiyla
acilista gercek arayuzu kapatir ve dugum daha otomasyon calismadan agini kaybeder.
### Ag donusumu
`PVE_NET_APPLY=reboot` (varsayilan) ile dugum, cloud-init MAAS'a "deploy tamamlandi"
sinyalini gonderdikten **sonra** bir kez yeniden baslar ve `vmbr0` ile acilir.
Yeniden baslatma istemiyorsaniz `PVE_NET_APPLY=reload` ifupdown2'nin `ifreload -a`
komutunu kullanir.
Bond/VLAN gibi karmasik topolojilerde `PVE_NET_MANAGE=false` yapip
`/etc/network/interfaces` dosyasini cloud-init ile kendiniz yazin —
bkz. [`maas/examples/04-advanced-network.yaml`](maas/examples/04-advanced-network.yaml).
### Depolama
MAAS'in disk duzeni bir LVM VG birakiyorsa (MAAS'ta **LVM storage layout** secip
kok LV'yi kucultun), artan alanda `data` adinda bir thin havuz acilir ve `local-lvm`
olarak tanimlanir. Ayri bir disk kullanmak icin:
```
PVE_THINPOOL_DISK=/dev/sdb
PVE_THINPOOL_VG=pve
```
Bos alan `PVE_THINPOOL_MIN_GB` (varsayilan 16 GiB) altindaysa asama sessizce atlanir;
dugum yalnizca dizin tabanli `local` deposuyla calisir.
---
## Kume otomasyonu
`pvecm add` parolayi etkilesimli sorar, bu yuzden ayni isi yapan API ucu kullanilir:
```
pvesh create /cluster/config/join --hostname <peer> --password <pw> --fingerprint <fp>
```
**Ilk dugum** ([`01-first-node.yaml`](maas/examples/01-first-node.yaml)):
```yaml
PVE_CLUSTER_MODE=create
PVE_CLUSTER_NAME=pve-cluster-01
```
**Katilan dugumler** ([`02-join-node.yaml`](maas/examples/02-join-node.yaml)):
```yaml
PVE_CLUSTER_MODE=join
PVE_CLUSTER_PEER=192.0.2.11
PVE_CLUSTER_PEER_PASSWORD='...'
PVE_CLUSTER_FINGERPRINT='AA:BB:...' # onerilir
```
Katilan dugum, hedef dugumun 8006 portu acilana kadar bekler
(`PVE_CLUSTER_WAIT`, varsayilan 900 s) ve basarisiz denemeleri tekrarlar
(`PVE_CLUSTER_RETRIES`). Katilim bittikten sonra `conf.d` icindeki parolalar
temizlenir (`PVE_CLUSTER_WIPE_SECRETS=true`).
### Birden fazla bagimsiz kume
Imaj tamamen jeneriktir - kume kimligi **yalnizca** deploy anindaki cloud-init
user-data'sindan gelir. Ayni imaj ve ayni preseed ile istediginiz kadar ayri
kume kurabilirsiniz; **yeniden derleme gerekmez**.
Elle yapmak zahmetli oldugu icin ([`scripts/deploy-cluster.sh`](scripts/deploy-cluster.sh))
tum akisi otomatiklestirir: ilk dugumu `create` ile deploy eder, ayaga kalkmasini
bekler, sertifika parmak izini okur ve kalan dugumleri o parmak iziyle `join`
modunda deploy eder.
**MAAS region controller uzerinde** calistirin (`maas` CLI profili ve dugumlerin
8006 portuna erisim gerekir):
```bash
# Once ne uretecegini gorun - hicbir sey deploy etmez
./deploy-cluster.sh --name pve-prod --nodes pve1,pve2,pve3 --dry-run
# Gercek kurulum
./deploy-cluster.sh --name pve-prod --nodes pve1,pve2,pve3
# Ikinci, tamamen bagimsiz kume - ayni imaj, ayni preseed
./deploy-cluster.sh --name pve-dr --nodes dr1,dr2,dr3
```
Listedeki **ilk dugum kumeyi olusturur**, digerleri ona katilir. Her kume kendi
root parolasini alir (vermezseniz uretilir ve ekrana yazilir).
Ayri bir corosync agi kullaniyorsaniz:
```bash
./deploy-cluster.sh --name pve-prod --nodes pve1,pve2,pve3 --link0-prefix 10.10.20.
```
Her dugumun o onekle baslayan adresi MAAS'tan bulunup `PVE_CLUSTER_LINK0` olarak
yazilir. (Bu yol henuz canli test edilmedi.)
Cok dugumlu kumelerde `--serial` ile katilanlar teker teker deploy edilir.
Varsayilan paralel moddur; es zamanli katilim denemeleri olursa `pve-maas-init`
zaten 5 kez, 30 saniye arayla tekrar dener.
**Kumeleri MAAS'ta ayirmak icin** etiket kullanmak ise yarar:
```bash
maas $PROFILE tag create name=pve-prod
maas $PROFILE tag update-nodes pve-prod add=$SYSTEM_ID
maas $PROFILE machines read tags=pve-prod | jq -r '.[].hostname'
```
### Guvenlik notlari
* Hedef dugumun **root@pam parolasi duz metin olmak zorundadir** — API dogrulamasi
hash kabul etmez. Bu deger cloud-init user-data icinde MAAS'ta saklanir; MAAS
user-data'ya erisimi olan herkes gorebilir. Kisa omurlu bir parola kullanip
kurulumdan sonra degistirmeyi dusunun.
* `PVE_CLUSTER_FINGERPRINT` vermezseniz parmak izi hedef dugumden okunur (TOFU) —
ilk baglantida MITM'e aciktir. Uretimde parmak izini onceden verin.
* Dugumun kendi `root` parolasi icin `PVE_ROOT_PASSWORD_HASH` kullanin
(`openssl passwd -6`), duz metin `PVE_ROOT_PASSWORD` yerine.
* `PVE_ROOT_PASSWORD*` hic verilmezse root parolasi kilitli kalir: web arayuzune
`root@pam` ile girilemez ve bu dugum baska bir dugumun katilim hedefi olamaz.
---
## Dizin yapisi
```
Makefile derleme / preseed / yukleme hedefleri
scripts/install-deps.sh build host bagimliliklari
scripts/customize-proxmox.sh.in build VM icinde calisan Proxmox kurulum sablonu
scripts/deploy-cluster.sh MAAS uzerinden komple bir kume kurar (cok kumeli senaryolar)
scripts/verify-image.sh uretilen imajin icerik dogrulamasi
overlay/ imaja kopyalanan dosyalar
usr/local/sbin/pve-maas-init ilk acilis durum makinesi
etc/pve-maas/pve-maas.conf varsayilan yapilandirma (tum secenekler)
etc/systemd/system/... pve-maas-init.service
curtin/curtin-hooks curtin'in apt ile cekirdek kurmasini engeller
maas/curtin_userdata_custom.in MAAS curtin preseed sablonu
maas/examples/*.yaml cloud-init user-data ornekleri
build/ uretilen dosyalar (git'e girmez)
```
---
### packer-maas uzerindeki degisiklikler
`make image`, `build/packer-maas` altina klonlanan upstream sablonda tek bir yama
yapar: `debian-cloudimg.pkr.hcl` icindeki `disk_size` (4G -> `DISK_SIZE`), `cpus` ve
`memory` degerleri. Upstream 4G ile gelir; Debian cloud image (~3G) uzerine Proxmox VE
kurulumu bu alana sigmaz. Uretilen `.tar.gz` yalnizca kullanilan dosyalari icerdigi
icin buyuk sanal disk son imaji buyutmez.
Yama her `make image` calistiginda `git checkout -f` sonrasi yeniden uygulanir;
upstream'i `PM_REF` ile bir commit SHA'ya sabitleyerek surprizleri onleyebilirsiniz.
---
## Sorun giderme
**Deploy "Failed deployment" ile bitiyor**
Preseed dosyasi dogru adla region controller'da mi? Ad, yuklenen imajin adiyla
birebir eslesmelidir: `curtin_userdata_custom_<arch>_<subarch>_<image-name>`.
`make preseed` ciktisindaki dosya adini kullanin.
**Deploy tamam ama web arayuzune girilemiyor**
`root@pam` parolasi ayarlandi mi? `journalctl -u pve-maas-init -b | grep rootpw`.
Ayrica `vmbr0` ayaga kalkmis mi: `ip -br addr`.
**Dugum kumeye katilmadi**
`journalctl -u pve-maas-init -b` ciktisina bakin. Sik nedenler: hedef dugum 8006'da
erisilemiyor, root parolasi yanlis, parmak izi eslesmiyor, ya da hedef dugumun
`/etc/hosts` kaydi eksik oldugu icin `pvecm` orada hata veriyor.
Servisi elle tekrar calistirmak icin:
```bash
rm -f /var/lib/pve-maas/cluster.done /var/lib/pve-maas/complete
systemctl start pve-maas-init
```
**Deploy "Deployed" diyor ama dugume hic erisilemiyor**
Dugumun konsoluna bakin (Proxmox'ta `qm terminal <vmid>`). Login istemi geliyorsa
sistem acilmis, sorun agda demektir. Kurtarma modunda diski inceleyin:
```bash
maas $PROFILE machine rescue-mode $SYSTEM_ID
# ephemeral ortama SSH ile baglanip:
mount /dev/vgroot/lvroot /mnt/t
cat /mnt/t/etc/network/interfaces # vmbr0 yazilmis mi?
ls -l /mnt/t/var/lib/pve-maas/ # hangi asamalar tamamlandi?
cat /mnt/t/var/log/cloud-init-output.log # cloud-init user-data'yi aldi mi?
journalctl -D /mnt/t/var/log/journal -u pve-maas-init
```
`/var/lib/pve-maas/` bosken ag da kapaliysa, `networking.service` ile MAAS'in
netplan yapilandirmasi cakisiyor demektir; imajda bu servis devre disi olmali.
**Dugum adi imajdaki hostname olarak gorunuyor**
Olmamasi gerekir — pmxcfs veritabani imajdan silinir ve ilk acilista guncel
hostname ile yeniden uretilir. Boyle bir durumda `/var/lib/pve-cluster/config.db`
imajda kalmis demektir; `make image` ciktisinda "Proxmox dugum kimligi sifirlaniyor"
adimini kontrol edin.
**Deploy "Installing OS" sonrasi "Configuring OS" asamasinda patliyor**
Kurulum kaydina bakin:
```bash
maas $PROFILE node-script-result download $SYSTEM_ID current-installation \
filetype=txt filters=/tmp/install.log output=all | tail -60
```
`install_kernel -> AttributeError: 'NoneType' object has no attribute 'get'`
goruyorsaniz preseed'de `kernel: null` kullanilmis demektir. MAAS ile gelen
curtin surumlerinin bir kismi bunu desteklemez. Bu depodaki preseed bunu
kullanmaz; cekirdek kurulumu imajdaki `/curtin/curtin-hooks` ile devre disi
birakilir. Preseed'i elle duzenlediyseniz geri alin.
**Build "proxmox-ve paketi bulunamadi" diyor**
`PVE_SUITE`/`DEBIAN_SERIES` ile `PVE_REPO` uyumsuz. Depoyu dogrulayin:
`curl -s http://download.proxmox.com/debian/pve/dists/<suite>/Release | grep Components`
---
## Kaynaklar
* [canonical/packer-maas](https://github.com/canonical/packer-maas) — temel Packer sablonlari (AGPL-3.0)
* [MAAS: Build custom images](https://canonical.com/maas/docs/how-to-build-custom-images)
* [Proxmox VE: Install on Debian](https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_13_Trixie)
* [Proxmox VE: Cluster Manager](https://pve.proxmox.com/wiki/Cluster_Manager)
* [pvecm(1)](https://pve.proxmox.com/pve-docs/pvecm.1.html)