Anschließend an unseren ADMIN-Tipp zur Installation von VMs mit einem einzigen Befehl wollen wir die Installation einer damals übergangenen Distribution nachholen: openSUSE. Eine Zeit lang waren Suse-Distributionen vor allem in Deutschland überaus populär, aber die Wirren um der Besitzverhältnisse der Firma haben den Ruf der alteingesessenen Linux-Produkt nicht unbedingt gefördert. Zudem wurde die Entwicklung der openSUSE-Distribution mehrfach umstrukturiert, was zu noch mehr Verwirrung unter den Suse-Anhängern geführt hat.
Derzeit gibt es die beiden openSUSE-Distributionen Tumbleweed und Leap. Zwar gibt es noch zwei klassische openSUSE-Versionen 13.1 und 13.2, die noch bis Ende 2016 respektive Anfang 2017 Support erhalten, aber die Zukunft gehört den beiden vorher genannten Distributionen. Leap basiert auf dem Code von Suse Linux Enterprise Server 12.1, also einer aktuellen Enterprise-Distribution, für die Suse noch bis 2024 Support leisten will. Tumbleweed ist dagegen ein sogenanntes Rolling Release, in das stets die neueste Versionen der enthaltenen Softwarepakete einfließen. Mit einem automatischen Build-Prozess werden diese Pakete regelmäßig neu übersetzt und mit einem öffentlichen Qualitätssicherungsprozess namens OpenQA getestet.
Interessant sind die openSUSE-Distributionen beispielsweise deshalb, weil sie auf Btrfs als Dateisystem für die Systempartition setzen. Dazu bietet Suse noch das Tool Snapper, das dabei hilft, die Snapshots mit Btrfs anzufertigen und zu verwalten.
Bei der automatisierten Installation hat Suse einen eigenen Mechanismus entwickelt, der auf dem Management-Tools YaST beziehungsweise dessen Nachfolger YaST2 basiert. Für die Installation mit Autoyast müssen Administratoren eine Datei in einem XML-Format schreiben, die die Systemkonfiguration enthält. Eine solche Datei lässt sich wie eine Kickstart- oder Preseed-Datei dem Libvirt-Installer übergeben.
Für Leap sieht der Aufruf wie folgt aus:
virt-install -n s2 -r 1024 --cpu=host --disk path=/var/lib/libvirt/images/s2.qcow2,format=qcow2,bus=virtio,size=10 -w network=internal,model=virtio --nographics --location=http://download.opensuse.org/distribution/leap/42.1/repo/oss -x "autoyast=file:////autoyast.xml textmode=1 console=ttyS0,115200n8" --initrd-inject=autoyast.xml
Bei der Installation von Tumbleweed ändert sich nur die URL zu den Installationsdateien:
virt-install -n s2 -r 1024 --cpu=host --disk path=/var/lib/libvirt/images/s2.qcow2,format=qcow2,bus=virtio,size=10 -w network=internal,model=virtio --nographics --location=http://download.opensuse.org/tumbleweed/repo/oss -x "autoyast=file:////autoyast.xml textmode=1 console=ttyS0,115200n8" --initrd-inject=autoyast.xml
Die folgende Autoyast-Datei lässt sich in beiden Fällen verwenden. Über die Installation hinaus installiert das File auch einen SSH Public Key im Root-Account und startet den SSH-Server:
<?xml version="1.0"?> <!DOCTYPE profile> <profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns"> <general> <mode> <confirm config:type="boolean">false</confirm> <second_stage config:type="boolean">false</second_stage> </mode> </general> <partitioning config:type="list"> <drive> <device>/dev/vda</device> <partitions config:type="list"> <partition> <filesystem config:type="symbol">btrfs</filesystem> <size>10G</size> <mount>/</mount> </partition> </partitions> </drive> </partitioning> <users config:type="list"> <user> <encrypted config:type="boolean">false</encrypted> <uid>0</uid> <gid>0</gid> <user_password>password</user_password> <username>root</username> <forename/> <surname/> </user> </users> <software> <packages config:type="list"> <package>zypper</package> </packages> <do_online_update config:type="boolean">true</do_online_update> </software> <services-manager> <default_target>multi-user</default_target> <services> <enable config:type="list"> <service>sshd</service> </enable> </services> </services-manager> <scripts> <chroot-scripts config:type="list"> <script> <chrooted config:type="boolean">true</chrooted> <filename>ssh.sh</filename> <source> <![CDATA[ #!/bin/sh umask 077 mkdir /root/.ssh echo "ssh-dss AAAAB3NzaC1kc3MAAACBAPKD0JbHFAiTgBGigIhUAampaBf6Szzqo43zxjzjCQFrbKYXLYbah7+DfpnQnNyvzkQ1KDXPKrfIHuDuHEF153xhQr62gqIoMRlbxtKbi+iQ/O7orqjrtFCEc57rGayJmWXa/qCoNy97KWlyFOSnjPNcZtsJvlZnLF3hxf+U10rvAAAAFQCoJbNCpHlvdM9nw1y+Pl3pcRaQAADFHDFDSFLFKLJLHDFFDSFLKJHDFLDSF14UdRDMvEVzhkefsUodqnEQG81cmUk3veY4Uhv3r28pgdbtrKis7p8kMZBLq4Pdd9DFRyZkcG+dff1PBgcoXi1ni0JGTR+aooyNoxmaPpKTp2vxKGRPirafQAAAIEA7bUbZzMTlol8ZoDNht2wVWk2EG/9k/L6EZyrSe39SrO5Tf7MDuqB0wLtlae2q+upWka3Ba39HsjtG7BeErJsZT9jTfRbiBKR8JAFQni5T+kVVpZl3ihEXA5kdfYp2xfvoRXSP8Uq0aDzwudwaxFgprObn8N9V7XEHHUOBR7a+Bw= of@itanet.de" >> /root/.ssh/authorized_keys systemctl enable sshd exit 0 ]]> </source> </script> </chroot-scripts> </scripts> </profile>
Zum einfacheren Kopieren ist das Autoyast-File auch als Github-Gist hinterlegt.