Son zamanlarda OpenStack yansıtma yapıyorum ve gitgide daha fazla yansıtmanın basit göründüğünü hissediyorum, ancak aslında birçok çağrışımı var. "Linux / Windows yansıtma yapma, uygulama ilkeleri, yapılandırma dosyası içeriği ve özelleştirme" nin genişliği ve derinliği bir kitap yazmak için yeterlidir.
Çoğu durumda, görüntü oluşturucu yalnızca Bulut başlatma hizmetini görüntüye yükler, ancak görüntü aslında daha kullanışlı yapılandırmalara sahip olabilir. Genel olarak, aynalama gereksinimleri aşağıdakileri içerir, ancak bunlarla sınırlı değildir:
Ana bilgisayar adı ana bilgisayar adını başlatın;
Kullanıcı adını ve parolayı başlatın;
Ağ kartının IP adresini başlatın;
Anahtar çifti anahtar çiftini başlatın;
ssh ve güvenlik duvarını yapılandırın;
Sanal makine kullanıcı şifresini vb. Değiştirin;
Bu makale CentOS 7 görüntüsünü örnek olarak alır ve OpenStack görüntüsünü manuel olarak oluşturmanın ayrıntılı adımlarını ve parola değiştirmeyi destekleme yolunu sunar.
Bir, Centos aynası yap1.1 Kurulum sistemi
Görüntüyü oluşturan sunucunun KVM'yi destekleyip desteklemediğini ve vmx çıktısının desteği gösterip göstermediğini kontrol edin.
# cat / proc / cpuinfo | egrep'vmx | svm '
VIRT serisi araçları yükleyin
# yum -y qemu-kvm yükle libvirt sanal-yükleme köprü-utils qemu-img
# systemctl start libvirtd.service systemctl status libvirtd.service
Öncelikle sanal makinenin kök diski için qcow2 formatında bir imaj dosyası oluşturun, 40G yeterlidir.
# qemu-img -f qcow2 centos7.1.qcow240G oluşturun
Ardından indirilen Centos7.1 iso sistem dosyasını belirtilen dizinde saklayın ve sanal makineyi oluşturmak ve başlatmak için aşağıdaki komutu kullanın:
#vir-install --virt-type kvm --name centos-7.1 --ram 1024 --vcpus = 1
--disk centos7.1.qcow2, format = qcow2
--network network = varsayılan
--graphics vnc, listen = 0.0.0.0 --noautoconsole
--os-type = linux --os-variant = rhel7
--cdrom = CentOS-7-1.iso
Parametre Tanımı:
--virt-type kvm: Kurulum sisteminin hızını ve performansını iyileştirmek için kvm donanım sanallaştırmasını kullanın.
--ram 1024 --vcpus = 1: Sanal makine belleği ve vcpu boyutunu 1G / 1 çekirdek olarak belirtin.
VNC bağlantı noktası numarasını görüntüleyin
# virsh vncdisplay centos-7.1
: 0
0, 5900'ü ve 0'dan büyük olanlar 5900'den artışı temsil eder. Örneğin, görüntüleniyorsa: 1, 5901 anlamına gelir
Kendi PC'nizde, işletim sistemi kurulumunu ve konfigürasyonunu gerçekleştirmek üzere oturum açmak için vnc aracını kullanın.
Önerilen VNC: Tightvnc, UltraVNC, VNC Görüntüleyici, tigervnc
Açıklama
YAZILIM SEÇİMİ Asgari Kurulum'u seçin. KURULUM HEDEFİ manuel konfigürasyon bölümünü seçmeli, sadece bir / kök bölüme ihtiyacımız var, takas bölümü gerekmiyor, dosya sistemi seçimi ext4, depolama sürücüsü Virtio Blok Aygıtı, Aygıt Türü seçin Standart Bölüm.
Yapılandırma tamamlandıktan sonra kuruluma başlayabilirsiniz. Bulut senaryoları için, bulut hizmeti sağlayıcısı, kullanıcıları kök diski yalnızca sistem kullanımı için depolamaya yönlendirmeli ve veriler başka bir veri diskine yerleştirilmelidir.
Kurulum tamamlandıktan sonra, yeniden başlat'a tıklayın, ancak başlamayacaktır, bu nedenle virsh aracılığıyla başlatılması gerekir.
# virsh listesi --tüm
Kimlik Adı Durum
-------------------------------------------------- -
-centos-7.1 kapatıldı
# virsh start centos-7.1
1.2 Sistemi yapılandırın
Ağ kartını önyüklemeden sonra otomatik olarak başlayacak şekilde yapılandırın:
# vi / etc / sysconfig / network-scripts / ifcfg-ens3
...
ONBOOT = evet
# systemctl ağı yeniden başlat.service
Sanal makinenin IP adresini görüntüleyin:
# ip a
Sistem saatini CST saat dilimine (Pekin saati) ayarlayın.
# mv / etc / localtime /etc/localtime.bak
# ln -s / usr / share / zoneinfo / Asia / Shanghai / etc / localtime
# tarih
Bulut sunucusunun kök ssh uzaktan oturum açmasını desteklemesi gerekiyorsa, kök uzaktan ssh oturum açma işlevini etkinleştirmeniz, yapılandırma dosyasındaki PermitRootLogin değerini / etc / ssh / sshd_config olarak değiştirmeniz ve etkili olması için ssh hizmetini yeniden başlatmanız gerekir:
# systemctl sshd'yi yeniden başlat
Acpid yazılımını kurun. acpid, çekirdekteki güç olaylarını uygulama programına iletmek, uygulama programına güvenle çıkmasını söylemek ve uygulama programının anormal şekilde çıkıp veri hasarına neden olmasını önlemek gibi güçle ilgili olayları işleyen bir kullanıcı alanı hizmet işlemidir. Libvirt, konuk sanal makineye bir acpid olayı göndererek güç işlemini tetikleyebilir, böylece sanal makine güvenli bir şekilde kapatılır ve yeniden başlatılır, bu da güç kapatma işlemini zorlamaktan daha güvenlidir. Acpid olayı tarafından gönderilen açılış sinyali, genellikle yumuşak yeniden başlatma veya yumuşak kapatma dediğimiz şeydir.
Yazılımsal işlemleri desteklemek için sanal makinenin acpid hizmetini kurması ve otomatik olarak başlayacak şekilde ayarlaması gerekir:
# yum install -y acpid systemctl acpid'i etkinleştir
Sanal makineyi başlatmak için ana bilgisayar adını ayarlama, parolayı başlatma ve anahtarları enjekte etme gibi bulut başlatma yazılımını yükleyin.
# yum install -y cloud-init systemctl start cloud-init systemctl cloud-init'i etkinleştir
Not: CentOS serisi sistemler için, sanal makinenin ana bilgisayar adı varsayılan olarak xxx.novalocal biçiminde otomatik olarak bir ana bilgisayar adı oluşturacaktır. İptal etmek için, cloudinit / sources klasörüne girmek için aşağıdaki komutu yürütün. Dosyayı düzenleyin ve aşağıdaki içeriğe göre değiştirin.
vim /usr/lib/python2.7/site-packages/cloudinit/sources/__init__.py
__İnit __. Pyc dosyasını ve optimize edilmiş derlenmiş __init __. Pyo dosyasını silmek için aşağıdaki komutu çalıştırın.
rm -f __init __. pyc
rm -f __init __. pyo
Günlük bilgilerini temizlemek için aşağıdaki komutları yürütün.
rm -rf / var / lib / bulut / *
rm -rf / var / log / cloud-init *
Cloud-init aracının ilgili yapılandırmasının başarılı olup olmadığını kontrol edin. Aşağıdaki komutu yürütün ve Cloud-init yapılandırmasının başarılı olduğunu gösteren hiçbir hata oluşmaz.
cloud-init init --local
Uygun şekilde kurulmuş bir Cloud-init, herhangi bir hata mesajı olmadan Cloud-init sürüm ayrıntılarını görüntüler.
Zeroconf hizmetini devre dışı bırakın. Bazı işletim sistemleri DHCP kullanarak bir IP adresi elde edemediğinde, bunu zeroconf hizmeti aracılığıyla yapılandırmaya çalışırlar. Zeroconf başladığında, bir yol 169.254.0.0/16 otomatik olarak oluşturulur ve meta veri hizmetine erişen sanal makinenin adresi tam olarak 169.254.169.254'tür. Zeroconf hizmeti başlatılırsa, sanal makine, yönlendirme çakışmaları nedeniyle 169.254.169.254 üzerinden ağ düğümüne yönlendirilemez. meta veri hizmeti. OpenStack sanal makineleri genellikle IP'yi DHCP aracılığıyla alır, bu nedenle sıfırconf hizmetine ihtiyacımız yoktur. Sanal makinenin metadata servisine erişmesi için zeroconf servisini devre dışı bırakmalıyız.
Sanal makinenin metadata servisine erişebilmesi için zeroconf servisinin devre dışı bırakılması gerekir.
# echo "NOZEROCONF = evet" > > / etc / sysconfig / network
Konsolu yapılandırın. İşletim sistemi çekirdeği çöktüğünde, genellikle başlatma sırasında yanıp sönen bir çekirdek sistemi çökmesi hata mesajı bildirir ve sistem şu anda açık değildir ve uzak araçlarla (ssh gibi) erişilemez. Grub'u yapılandırabiliriz, Analiz ve sorun giderme amacıyla hata bilgilerine Seri konsol aracılığıyla erişebilmemiz için bu günlükleri Seri Konsola yönlendirin. Bu şekilde, çekirdek tarafından oluşturulan günlük, aslında console.log dosyasına yazılan ttyS0'a gönderilir. OpenStack, dosyanın içeriğini nova console-log komutuyla alabilir ve hata günlüğünü görüntüleyebilir. / Etc / default / grub dosyasını değiştirin ve aşağıdaki içeriği ekleyin.
# vim / etc / default / grub
GRUB_CMDLINE_LINUX = "crashkernel = otomatik konsol = tty0 konsol = ttyS0,115200n8"
Grup yapılandırmasını etkili olması için güncelleyin
# grub2-mkconfig -o /boot/grub2/grub.cfg
Cloud-utils-Growpart'ı kurun. Sanal makine sistem diskinin otomatik olarak genişletilmesini desteklemek için. Kök bölüm boyutu (örneğin, yukarıdaki 40 GB set) sanal makine görüntüyü oluştururken belirtilir.Sanal makinenin, 50 GB gibi bir çeşit disk tarafından belirtilen kök disk boyutuna otomatik olarak ayarlanmasını sağlamak için, yani otomatik genişletme, yükleme komutunu yürütün:
# yum install cloud-utils-Growpart -y
Kısıtlamalar
Kök bölüm dosya sistemi xfs olan görüntü, otomatik genişletmeyi desteklemez.
LVM bölmeli aynalar otomatik genişletmeyi desteklemez.
ext3 ve ext4 dosya sistemleri ile tek bölüm aynalama kullanılması tavsiye edilir.
Windows sistemi tarafından desteklenmez.
Açıklama
CentOS 6'nın otomatik bölüm genişletmeyi gerçekleştirmesi için aşağıdaki üç paketin kurulması gerekir
yum -y cloud-init cloud-utils-Growpart dracut-modülleri-Growroot yükle
Yeni oluşturulan initramfs
dracut -f
systemctl cloud-init'i etkinleştir
QGA'yı yükleyin. qemu-guest-agent, sanal makine içinde çalışan bir hizmettir.Libvirt, yerel olarak bir unix soketi oluşturacak ve bunu sanal makine içinde bir seri cihaz olarak simüle edecek, böylece ana makine ile sanal makine arasındaki iletişimi gerçekleştirecektir. TCP / IP ağının uygulanması basit ve kullanışlıdır. OpenStack platformunun sanal makine parola işlevini dinamik olarak değiştirmesini desteklemek için qemu-guest-agent'ın yüklenmesi gerekir.
# yum -y qemu-guest-agent'ı yükle
/ Etc / sysconfig / qemu-ga yapılandırma dosyasını değiştirin:
FSFREEZE_HOOK_PATHNAME = / etc / qemu-ga / fsfreeze-hook
TRANSPORT_METHOD = "virtio-seri"
DEVPATH = "/ dev / virtio-ports / org.qemu.guest_agent.0"
LOGFILE = "/ var / log / qemu-ga / qemu-ga.log"
PIDFILE = "/ var / run / qemu-ga.pid"
BLACKLIST_RPC = ""
FSFREEZE_HOOK_ENABLE = 0
Qemu-guest-agent'ı yeniden başlatın
# systemctl qemu-guest-agent'ı yeniden başlat
Qemu-guest-agent tarafından desteklenen talimatları görüntülemek için yürütün (görüntünün yapıldığı sunucuda yürütülür)
# virsh qemu-agent-command centos-7.1 '{"execute": "misafir-info"}' | python -m json.tool | grep'name '| cut -d': '-f 2 | tr -d' ","
Onay çıktısı, yönetici parolasının değiştirilmesini destekleyen konuk-set-kullanıcı-parolası komutunu içerir.
Bazı gereksiz dosyaları silin, geçmiş komutunu temizleyin ve kapatmayı yürütün:
# tarih -c
# Kapat
Sanal makinenin içindeki MAC adresi bilgilerini temizleyin:
#vir-sysprep -d centos-7.1
Sanal makineyi libvirt yönetiminden çıkarın:
# virsh centos-7.1'i tanımsız
Sıkıştırılmış görüntü:
qemu-img dönüştürmek -c -O qcow2 < Kaynak dosyası > < Hedef dosya >
# qemu-img convert -c -O qcow2 centos7.1.qcow2 Centos7.1.qcow2
Sıkıştırma etkisinin çok açık olduğu görülebilir.
Bu noktada, görüntü tamamlanır ve ardından onu OpenStack görüntü hizmetine yükleyin, genellikle arayüzü kullanarak yükleyin:
# openstack görüntüsü "Centos-7" oluştur
--halka açık
--disk-format qcow2 --container-format bare
--file ./Centos7.1.qcow2
--property hw_qemu_guest_agent = evet
Sanal makine oluştur
#nova boot --image $ Image_id --flavor $ flavour_id --nic net-id = $ network_id $ vm_name
İki, Linux sanal makine şifre değiştirme yöntemiYukarıda, Linux görüntüsünü oluşturduk. Şifreyi bir gün unutursak (ve ayrıca Keypair anahtar çiftini kaybedersek) veya ürün arayüzü işlevinin bir parçası olarak, müşterinin cmd komutları yazmak için arka plana gitmesine veya sanal makineye gitmesine izin veremezsiniz. Şifreyi dahili olarak değiştirin (ön uç, elde etmek için arka uç API arayüzünü çağırabilir), ardından şifreyi sıfırlamak için hangi yöntemler var? Linux sanal makinenin şifresini değiştirmenin yöntemleri vardır.
Qemu-misafir-aracı
libguestfs-tools
Bulut başlatma
Bulut Başlatma
Cloud-init hizmetine bağlı olarak, bir VM sanal makinesi oluştururken, parola enjeksiyonu ile yeni bir parola enjekte edebilirsiniz (örneğin, nova boot kullanırken, yönetici parolasını belirtmek için --admin-pass parametresini kullanabilirsiniz), böylece yeni VM oluşturulduktan sonra kullanılabilir Parola açılır; bu uygulama bulut init programının aynaya kurulmasını gerektirir.Small açıldıktan sonra metadata verisi cloudinit programı üzerinden alınır ve parola değiştirilir.Aynı değiştirdiği şey sanal makinenin şifresidir ancak aynadaki şifre değişmemiştir.
Libvirt tarafından yönetilen Hipervizörler için (KVM, QEMU ve LXC gibi), yönetici parolası yerleştirme varsayılan olarak devre dışıdır. Etkinleştirmek için Hesaplama düğümündeki /etc/nova/nova.conf dosyasını düzenleyin
# vim /etc/nova/nova-compute.conf
vir_type = kvm
inject_password = true
inject_partition = -1
Ardından bilgi işlem hizmetini yeniden başlatın. Etkinleştirildiğinde, bilgi işlem hizmeti, sanal makine içindeki / etc / shadow dosyasını düzenleyerek sanal makine işletim sisteminin yönetici hesabı parolasını değiştirecektir.
Horizon yapılandırma dosyasını değiştirin ve parolayı ayarlamak için arabirimi ekleyin:
# vim / etc / openstack-dashboard / local_settings
OPENSTACK_HYPERVISOR_FEATURES = {
'can_set_mount_point': Yanlış,
'can_set_password': Doğru,
}
# systemctl yeniden httpd
Gösterge Tablosu arayüzünde bir bulut ana bilgisayarı oluşturmak için az önce oluşturduğunuz görüntüyü kullanın (nova CLI komutunu kullanıyorsanız, şifreyi belirtmek için --admin-pass parametresini geçmeniz gerekir), şekilde gösterildiği gibi, belirtilen şifreyi girebilirsiniz:
Oluşturma başarılı olduktan sonra, vnc arayüzüne girin, root hesabını ve yeni şifre setini kullanın.Giriş başarılı olursa, şifre enjeksiyonu başarılıdır.
Qemu-Konuk-Temsilci
Qemu-Guest-Agent, sanal makine sisteminde çalışan küçük bir hizmettir. Bu hizmet, hipervizör ve konuk arasındaki iletişimden sorumludur. Hiper yönetici, konuk işletim sistemi bilgilerini almak veya komutları yürütmek için bu kanalı kullanır. Bu kanalın protokolüne Qemu Makine Protokolü adı verilir.Örneğin, libvirt ağ ve dosya sistemi hakkında ayrıntılı bilgi almak için bir aracı kullanır. Bunlar, org.qemu.guest_agent.0 olarak da adlandırılan virtio-serial veya isa-serial kanallarındandır. Ayrıca hipervisior sunucusunda / var / lib / libvirt / qemu / channel / target / dizininde bir dosya oluşturulacaktır.
OpenStack Nova, hw_qemu_guest_agent görüntü meta verisinin evet olup olmadığına karar vererek qemu-guest-agent'ı destekleyip desteklemeyeceğini belirler. Kod aşağıdaki gibidir:
# vim nova / Virt / libvirt / driver.py
Yansıtma özelliğini eklememiz gerektiği görülmektedir hw_qemu_guest_agent = yes, aksi takdirde qemu-guest-agent cihazı libvert sanal makineyi başlattığında oluşturulmayacaktır.Sanal makinenin qemu-guest-agent karşılık gelen seri cihazı bulamaz ve şifre değiştirilir başarısızlık. Aynı zamanda gerçek ölçümde bu öznitelik eklenmediği takdirde sanal makinedeki qemu-guest-agent hizmetinin de cihaz bulunamadığından başlayamayacağı görülmüştür.
Bu öznitelik komutunu ekleyin:
# glance image-update --property hw_qemu_guest_agent = yes $ IMAGE_ID
Aşağıdakileri doğrulamak için bilgi işlem düğümünde sorgu bilgilerini yürütün:
# virsh qemu-agent-command $ VM_ID --pretty '{"execute": "misafir-bilgisi"}'
Nova, sanal makine yönetici şifresini değiştirmek için şifre belirleme alt komutunu kullanır:
nova set-password $ VM_UUID
Veya virsh komutuyla sanal makine kullanıcı şifresini ayarlayın
# virsh set-user-password < alan adı > < kullanıcı > < parola >
Libguestfs araçları
Libguestfs, sanal makinelerin disk görüntü dosyalarına erişmek için kullanılan Linux altında bir dizi C dili API'sidir. Araç setinde yer alan araçlar, sanal kedi, sanal-df, sanal-ls, sanal kopyalama, sanal kopyalama, sanal düzenleme, misafirfler, misafir bağlantısı, sanal liste dosya sistemleri, sanal liste- Bölümler gibi araçlar için, lütfen özel kullanım için resmi web sitesine bakın. Bu araç, sanal makine kapalıyken sistemdeki dosyaların içeriğini doğrudan düzenleyebilir ve görüntüleyebilir veya dosyaları doğrudan yazabilir veya harici bir fiziksel makineye dosya kopyalayabilir.Elbette, bağlama gibi montaj işlemlerini de destekleyebilir.
Libguestfs-tools'u yükleyin
yum -y libguestfs-araçlarını yükle
Hesaplama düğümündeki komut veya API arabirimi aracılığıyla örnek numarasını bulun
# virsh listesi --tüm
Kimlik Adı Durum
-------------------------------------------------- -
1 örnek-00001035 çalışıyor
Örneği kapatın (kapatılmalıdır, aksi takdirde şifre değiştirilemez)
Yeni şifre oluştur
# openssl passwd -1 "openstack"
$ 1 $ / 20Vnod9 $ vBvUgodH2qMVTB1EiEs30.
Linux sisteminin şifrelenmiş parolası genellikle ":" ile ayrılmış 9 sütuna bölünmüş / etc / shadow dosyasında saklanır. İlk sütun kullanıcı adı ve ikinci sütun paroladır. Şifreler genellikle MD5 ile şifrelenir, burada openssl şifreleme aracını kullanırız, -1 sıradan MD5 şifrelemesidir.
kök: 6 $ H.RTQF71 $ 7u2Y9YBJPB5.76jbhlTUVdoI / aea2x6mR2yvZx0VukGzaCAWhb.kO9do DaoB9l33IweoL.GvzzksJfQzw.Ntse1: 17494: 0: 99999: 7
bölme: *: 17110: 0: 99999: 7 :::
arka plan programı: *: 17110: 0: 99999: 7 :::
adm: *: 17110: 0: 99999: 7 :::
lp: *: 17110: 0: 99999: 7 :::
senkronizasyon: *: 17110: 0: 99999: 7 :::
kapatma: *: 17110: 0: 99999: 7 :::
durma: *: 17110: 0: 99999: 7 :::
posta: *: 17110: 0: 99999: 7 :::
operatör: *: 17110: 0: 99999: 7 :::
oyunlar: *: 17110: 0: 99999: 7 :::
ftp: *: 17110: 0: 99999: 7 :::
kimse: *: 17110: 0: 99999: 7 :::
systemd-network: !!: 17494 ::::::
dbus: !!: 17494 ::::::
polkitd: !!: 17494 ::::::
postfix: !!: 17494 ::::::
chrony: !!: 17494 ::::::
sshd: !!: 17494 ::::::
Root parolasını değiştir
Yukarıda elde edilen şifreyi kopyalayın ve aşağıdaki komutu çalıştırın (örnek kimliği openstack'teki kimlik değil, virsh list komutu ile elde edilen örnek - **).
#vir-edit -d *** örnek-kimliği *** / etc / shadow
Açtıktan sonra kök hesabın ikinci sütunundaki parolayı değiştirin ve değiştirin
kök: 6 $ H.RTQF71 $ 7u2Y9YBJPB5.76jbhlTUVdoI / aea2x6mR2yvZx0VukGzaCAWhb.kO9do DaoB9l3IweoL.GvzzksJfQzw.Ntse1: 17494: 0: 99999: 7
dönüşmek
kök: $ 1 $ / 20Vnod9 $ vBvUgodH2qMVTB1EiEs30.: 17494: 0: 99999: 7 :::
Kaydedip çıkın ve ardından örneği yeniden başlatın, yeni şifre "openstack" ile oturum açabilirsiniz.
Qemu-Guest-Agent'ın en büyük avantajı, sanal makine sistem şifresini yalnızca başlatma aşamasında veya kapatma durumunda yapılabilen diğer iki yöntemin aksine herhangi bir zamanda değiştirebilmesidir.
Unutuldu, işte küçük bir not.
yazar hakkında:
Xu Chao, China Power Technology Huayun'da çalışıyor ve açık kaynak teknolojisi, bulut bilgi işlem ve CI / CD'yi seviyor.