ProxMox WebGUI erişim yetkilendirme

ProxMox WebGUI URLsi olan https://139.179.yyy.xxx:8006 yazan herkes WebGUI’ye erişemez. Erişim yetkileri /etc/default/pveproxy dosyasında tanımlanır.
Örneğin:

# /etc/default/pveproxy
ALLOW_FROM="139.179.14.0-139.179.14.250,139.179.155.2,139.179.39.0/24,139.179.111.0/24"
DENY_FROM="all"
POLICY="allow"

… ve bu dosyada değişiklik ardından

/etc/init.d/pveproxy restart

ProxMox otomatik yedekleme

Mümkündür…
Ancak bir kaç ayar gerektirmektedir:
Önce otomatik yedeklemeyi etkinleştirmelisiniz. Bunun için bir NFS sunucu üzerinde bir NFS paylaşım dizininiz olmalı.

backup_001

“NFS Share” olarak tanıtacağınız NFS paylaşımının adı harfi harfine “Backup_Storage” olmalı. “Content” alanında ise sadece “Backups” olmalı. Sonra  kaç gün geriye kadar yedeklerin alınacağını belirlemelisiniz (“Max. Backups”).
backup_002
Ardından otomatik olarak yedeklenecek makinaları ve yedekleme gün-saatlerini seçmelisiniz.
backup_003

ProxMox'da Kendi CT Şablonunuzu (template) Yaratma

ProxMox’da kendinize özel bir CT (container) şablonu yaratmak istediğinizde izlemeniz gereken adımlar:

  1. Uygun standart sistem şablonlarından birisini kullanarak kendinize bir CT (Container) sanal makina yaratınız.
  2. Bu sanal makinayı uygun gördüğünüz araçlarla donatıp (paketler kurup – kaldırıp) istediğiniz konfigurasyona getiriniz.
  3. Sanal makinanız şablonlaştırmaya hazır olduğunda kapatınız ve ProxMox web yönetim panelinden Network altından IP adresi ile ilgili tanımı siliniz..
  4. ProxMox sunucunuza root olarak bağlanınız.
  5. Aşağıdaki komutları çalıştırınız:
    # cd /var/lib/vz/private/nnn   (nnn: şablonlaştırılacak makinanin ID#)
    # tar xtvf yeni_sablon_adi.tar.gz ./
    # mv yeni_sablon_adi.tar.gz ../../template/cache/

Önemli: yeni_sablon adı xxxxxxxx_i386.tar.gz  veya xxxxxxxx_x86_64.tar.gz olmalıdır. (kurulu Linux’un mimarisine bağlı olarak)

  1. Artık bu şablonu kullanarak yeni CT makinalar yaratabilirsiniz (“Cretae CT”).

LXC'den (Linux Containers) ProxMox'a sanal makina taşıma

Gerekli Ön Bilgiler

LXC sunucusunda sanal makinaların bulunduğu dizin: /var/lib/lxc/

LXC sanal makinalarının disk görüntüsü dizini: /var/lib/lxc/sanal_makina/rootfs

LXC sanal makinalarının konfigürasyon bilgileri: /var/lib/lxc/sanal_makina/config (örneğin sanal makinanın IP adresi bu dosyada “lxc.network.ipv4 = 139.179.139.122/24” şeklinde görülebilir)

ProxMox sunucusunda VM sanal makinaların disk görüntü dizini: /var/lib/vz/images

ProxMox sunucusunda CT sanal makinaların disk görüntü dizini: /var/lib/vz/private

Taşıma İşlemi

LXC sunucusuna root yetkisiyle bağlanıp  taşımak istediğiniz makinanın disk görüntüsünün yer aldığı dizinin büyüklüğünü öğrenin:

root@lxc: du -sh /var/lib/lxc/sanal_makina

Sonra söz konusu makinanın halen sahip olduğu IP adresini öğrenin:

root@lxc: grep network.ipv4  /var/lib/lxc/sanal_makina/config

ProxMox sunucusunda yukarda belirlediğiniz disk kapasitesinden az olmamak; hatta %10 falan daha fazlası (ya da gereği kadar) büyüklükte diski olan bir CT (Container tipi sanal makina) yaratın.

proxmox_createCT

Sunucuda daha önce kullanılmamış bir “VM ID”, uygun bir “Hostname” ve yeni makinada kullanılacak root şifresini girin. (Sanal makina taşındıktan sonra /etc/passwd ve /etc/shadow dosyaları da taşınmış olacağından, bu şifre taşınan eski makinanın root şifresi olarak değişecektir.)

proxmox_createCT2

Ardından yeni CT (container) makinanız için bir şablon (Template) seçmelisiniz. Şablon seçiminden sonra bellek, swap alanı ve disk boylarını belirleyip makinayı yaratınız. İhtiyacınız olan şablon listede yoksa, ProxMox “Server View” menüsünden “local” seçip “Templates” tabını tıklayınız. Uygun bir şablon seçip ProxMox sunucunuza indirilmesini (ProxMox sitesinden) sağlayınız. Artık   bu yeni şablon CT yaratma aşamasında listelenen şablonlar arasında görünecektir.
proxmox_createCT3

 Yeni makinanızı bu aşamada açmayınız. 

ProxMox sunucunuza root olarak bağlanın. Yeni CT makinanızın disk görüntüsünün olduğu dizine geçin:

# root@proxmox:  cd /var/lib/vz/private/204

Aşağıdaki komutla LXC sunucusundaki disk görüntü dizini ile ProxMox sunucusundaki disk görüntüsü dizinini senkronize edin:

rsync -avze ssh --exclude etc/inittab
                --exclude etc/network/interfaces
                --exclude dev/
                --exclude sys/
                --exclude proc/
                root@lxc_sunucu:/var/lib/lxc/sanal_makina/rootfs/ .

Aslında bu senkronizasyon sırasında LXC’deki makina kapalı olsa iyi olur ama bunu istemezseniz çok da dert değil.

Senkron işlemi tamamlanınca ProxMox sunucusundaki yeni makinayı açınız. ProxMox konsoluyla login olup olamadığınızı deneyin (LXC ortamındaki hesap ya da hesapları kullanarak). Yeni IP adresiyle deneyebildiğiniz kadar servislerin çalışıp çalışmadığını kontrol edin. Bir çek servis host adresiyle kurulmuş olduğu için genellikle eski makinaya yönelecektir ama gene de taşımanın başarılı olup olmadığı konusunda fikir verecektir.

Şimdi LXC sunucudaki makinada apache, lighthttpd, mysql, pgsql gibi servisleri durdurup yukardaki rsync komutunu tekrarlayınız. Böylece ilk rsync sırasında dosyalarda oluşmuş olabilecek değişiklikler de yeni makinaya yansımış olacaktır.

DNS sunucunuzda, LXC makinasında çalışmakta olan servislerle ilgili DNS kayıtlarını yenileyiniz ve LXC’deki makinayı tamamen kapatınız. DNS propagasyonu yüzünden eski sunucuya yönelecek olan erişimler sorun çıkaracaksa başka önlemler almak gerekecektir. (PHP ile redirect falan gibi şeyler)

Debian-Linux'ta USB bellek takıldığında otomatik olarak bir uygulama başlatmak

Bir gün, bir Linux makinaya USB bellek veya disk takıldığında kullanıcıya hiç sormadan o belleği/diski formatlama gereği çıktı. “Niye?” diye sormayın; çıktı işte…
Çözümü udev uygulamasıyla ve şu adresteki uygulama notlarıyla buldum (yazarı Nicolas Bernaerts). Uygulama notlarının özeti şöyle:
Bir USB belek ya da disk seçip makinanıza takın
Taktıktan sonra konsoldan “dmesg” komutunu verip çıktının sonuna bakınız.

# dmesg
[...] USB Mass Storage support registered.
[...] usb-storage: device scan complete
[...] scsi 2:0:0:0: Direct-Access     TOSHIBA  TransMemory PMAP   PQ: 0 ANSI: 4 CCS
[...] sd 2:0:0:0: [sdc] 781422768 512-byte hardware sectors (400088 MB)
[...] sd 2:0:0:0: [sdc] Write Protect is off
[...] sd 2:0:0:0: [sdc] Mode Sense: 34 00 00 00
[...] sd 2:0:0:0: [sdc] Assuming drive cache: write through
[...] sd 2:0:0:0: [sdc] 781422768 512-byte hardware sectors (400088 MB)
[...] sd 2:0:0:0: [sdc] Write Protect is off
[...] sd 2:0:0:0: [sdc] Mode Sense: 34 00 00 00
[...] sd 2:0:0:0: [sdc] Assuming drive cache: write through
[...] sdc: sdc1
[...] sd 2:0:0:0: [sdc] Attached SCSI disk

Bu çıktıdan USB diskinize /dev/sdc1 olarak erişildiğini öğrenmiş olacaksınız.
Taktığınız disk/USB bellek hakkında daha ayrıntılı bilgi için şu komutu kullanınız: Komutun çıktısı oldukça uzun olacaktır. Burada sadece bir kısmını listeledim.

# udevadm info -a -p $(udevadm info -q path -n /dev/sdc)
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb5/5-2/5-2:1.0/host2/target2:0:0/2:0:0:0':
KERNELS=="2:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{device_blocked}=="0"
ATTRS{type}=="0"
ATTRS{scsi_level}=="3"
ATTRS{vendor}=="TOSHIBA  "
ATTRS{model}=="TransMemory     "
ATTRS{rev}=="    "

Şimdi artık  makinanıza “TOSHIBA” marka “TransMemory” modeli bir USB bellek takıldığında yapılacak işi tarif eden udev kuralını oluşturabilirsiniz:

# vi /etc/udev/rules.d/90-local.rules
KERNEL=="sd?1", ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="XTOSHIBA ", ATTRS{model}=="TransMemory     ", RUN+="/root/cua.sh %k"
# /etc/init.d/udev/restart
# vi /root/cua.sh
#!/bin/bash
echo USB $1 takildi >> /var/log/usblog
nohup /root/cua-task.sh $1

udev kural dosyasında belirtilen marka-model USB disk takıldığında başlatılacak iş RUN parametresinde belirtilmektedir. Bu başlatılan iş kısa süre sonra udev işini bitirdiğinde hala çalışıyor olsa bile, üst process (udev) öldüğü için öldürülecektir. Bunu önlemek için RUN parametresinde belirttiğiniz betik, asıl yapılması gerekenleri halledecek olan betik ya da programı nohup parametresiyle başlatmalıdır. Kural satırında geçek %k parametresi, takılan USB belleğin partition numarası bilgisini de içeren “sd1” gibi bir değer içeriyor olacaktır.
Artık gerisi /root/cua-task.sh betiğine kalmış. İster USB belleği formatlayın; ister kopyalayın.