Wir haben uns eine virtuelle Maschine gebaut, die wir fuer verschiedene Zwecke wiederverwenden koennen, indem wir sie duplizieren. Aber ich bin faul, und es fuehlt sich nicht richtig an, wenn ich meine virtuelle Infrastruktur aufbauen will. Ich kann sie nur einmal aufbauen und muss damit leben. Ich moechte dynamischer sein: meine Infrastruktur so oft erstellen und zerstoeren wie ich will, mit einem Knopfdruck.

Gluecklicherweise gibt es einige clevere Leute bei Vagrant. Sie bieten Automatisierungssoftware fuer virtuelle Maschinen. Und weisst du was? Wir werden das in diesem Beitrag ausprobieren.

Also, lass uns unsere virtuelle Maschine verwenden, die wir in “Installation von CentOS 6.2 mit VirtualBox” erstellt haben.

Wir brauchen eine sogenannte “Base Box”. Die folgenden Schritte werden groesstenteils wiederholen, was in diesem HowTo bereitgestellt wurde, aber ich werde sie hier mit meinen box-spezifischen Anpassungen praesentieren, falls es welche gibt. Das weiss ich noch nicht.

Okay, lass uns VirtualBox mit unserem minimalen CentOS-Image starten.

Vorkonfiguration

Einige Aenderungen muessen vorgenommen werden, um unsere Base Box erstellen zu koennen.

Zuerst habe ich das Disketten- und CD-Laufwerk deaktiviert. Wir werden sie in Zukunft sicher nicht brauchen.

Ich habe auch Audio deaktiviert.

Denk dran: Netzwerk ist auf NAT eingestellt!

Benutzer- und Rechteverwaltung

Als root angemeldet, habe ich sein Passwort geaendert mit

passwd

Ich habe auch den Benutzer vagrant erstellt und sein Passwort auf vagrant gesetzt

useradd vagrant
passwd vagrant

Jetzt muessen wir sicherstellen, dass der Hauptbenutzer vagrant passwortlose sudo-Privilegien hat. Starte deine Maschine, melde dich als vagrant an, und tippe dann

su
yum -y install sudo

Als naechstes muessen wir die Datei /etc/sudoers bearbeiten. Da wir keinen anstaendigen Texteditor haben, hol dir einen mit

yum -y install vim

Jetzt tippe

vim /etc/sudoers

STOP! Bearbeite es nicht auf diese Weise. Es gibt einen speziellen Befehl zum Bearbeiten dieser Datei - tippe einfach

visudo

Fuege die folgende Zeile hinzu

%admin ALL=NOPASSWD: ALL

Uebrigens, behalte vim; wir werden es spaeter brauchen, das ist sicher.

Jetzt erstellen wir eine neue Gruppe namens admin und fuegen den Benutzer vagrant hinzu.

groupadd admin
usermod -a -G admin vagrant

Teste, was du getan hast, indem du tippst

sudo which sudo

Die Ausgabe sollte /usr/bin/sudo sein.

Die Dokumentation auf der Vagrant-Seite sagt, dass du sudo mit /etc/init.d/sudo restart neu starten musst. Hat bei mir nicht funktioniert … sagte “No such file or directory.” Aber es funktioniert trotzdem.

VirtualBox Guest Additions

Als naechstes kommt die Installation der VirtualBox Guest Additions. Ich habe darueber in einem frueheren Blogbeitrag geschrieben, als ich eine Desktop-Umgebung auf unserer minimalen CentOS-Installation installiert habe. Hier sind die Schritte:

yum update kernel
yum install gcc
yum install kernel-devel
yum install make
export MAKE='/usr/bin/gmake -i'
mkdir /media/VirtualBoxGuestAdditions

mount -r /dev/cdrom /media/VirtualBoxGuestAdditions
sh /media/VirtualBoxGuestAdditions/VBoxLinuxAdditions.run

Du kannst die fehlgeschlagene Installation der Windows-Systemtreiber getrost ignorieren, da wir sie nicht brauchen werden. Fertig mit den Guest Additions.

Weitere Software holen

Lass uns noch etwas mehr Software holen, die wir spaeter brauchen.

Wir beginnen mit Ruby und RubyGems

yum install ruby
yum install rubygems

Ja, Dokumentation ist gut. Lass uns die Hauptinformationsquelle holen:

yum install man

Zusaetzlich brauchen wir Puppet. Mehr darueber, warum wir es brauchen, folgt in einem kommenden Blogbeitrag. Die Installation mit einem Befehl reicht diesmal nicht aus. Wir muessen yum sagen, wo es zu finden ist.

Ich bin im Grunde diesem HowTo gefolgt.

vim /etc/yum.repos.d/puppet.repo

Und fuege Folgendes hinzu:

[puppetlabs]
name=Puppet Labs Packages
baseurl=http://yum.puppetlabs.com/el/$releasever/products/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://yum.puppetlabs.com/RPM-GPG-KEY-puppetlabs

Dann brauchen wir das EPEL x86_64 yum Repository:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm

Installiere die Puppet-Master-Pakete und dann die Puppet-Client-Pakete:

yum install puppet-server

Beantworte einfach jede Frage mit “yes”, um alles zu installieren.

SSH-Schluessel-basierte Authentifizierung

Als naechstes bereiten wir alles fuer die automatische SSH-Schluessel-basierte Authentifizierung vor.

cd
mkdir.ssh
chmod 700.ssh
touch.ssh/authorized_keys
chmod 600.ssh/authorized_keys

Jetzt hol dir die Vagrant-SSH-Schluessel. Lege den privaten Schluessel (umbenannt in id_rsa.vagrant) auf dein Host-System und den oeffentlichen Schluessel in deine Gast-VM.

Hol die Schluessel von hier.

Setze ausserdem UseDNS auf no in /etc/ssh/sshd_config, um die SSH-Leistung auf deinem Host-System zu verbessern.

Du kannst den SSH-Schluessel kopieren, indem du den freigegebenen Ordner einbindest

Kopiere auf deinem Host-Betriebssystem den oeffentlichen Schluessel in den freigegebenen Ordner.

Dann habe ich in meiner virtuellen Maschine diese Freigabe eingebunden mit

sudo mount -t vboxsf share /mnt

Dann fuege ihn zu deiner Datei mit den oeffentlichen Schluesseln hinzu

cat /mnt/vagrant.pub >> /home/vagrant/.ssh/authorized_keys

Zum Schluss tippe

visudo

und aendere die Zeile

defaults requiretty

zu

#Defaults requiretty

Einpacken

Lass uns alles einpacken. Fahre deine virtuelle Maschine herunter und fuehre dann den folgenden Befehl in deiner nativen Shell aus

vagrant package --base "CentOS Base Box"

Lass uns unsere kleine Box testen, indem wir eine Vagrant-Box in einem anderen Verzeichnis erstellen:

mkdir test_environment
cd test_environment
vagrant box add my_test_box /<path_to_your_box>/package.box
vagrant init my_test_box
vagrant up

Nach diesem Befehl bekam ich die folgende Nachricht (in rot!):

SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.

Ich muss definitiv das gesamte Authentifizierungsthema noch einmal ueberpruefen.

Um dich in deine Box einzuloggen, tippe

vagrant ssh

Tataaa. Ich bin in meiner Vagrant-Box angemeldet.

Lass uns das Ganze zerstoeren und es neu erstellen, wenn wir es das naechste Mal brauchen.

vagrant destroy

Fertig fuer heute!