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!