14 Mrz 2012

Downgrade OpenStack from trunc to stable

Author: Heiko | Filed under: Linux

If you need to downgrade you OpenStack installation from trunc-Version to stable, you need only 3 steps to the goal :) .

Step1:
Show your available versions with

apt-cache showpkg nova-compute

You will get an output like this one

Versions:
2012.1~e3~20120117.12124-0ubuntu0ppa1~oneiric1 (/var/lib/dpkg/status)
Description Language:
File: /var/lib/dpkg/status
MD5: 4ede856ba4b4b8796676686d84f6183b

2011.3-0ubuntu6.4 (/var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_oneiric-updates_main_binary-amd64_Packages) (/var/lib/apt/lists/security.ubuntu.com_ubuntu_dists_oneiric-security_main_binary-amd64_Packages)
Description Language: en
File: /var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_oneiric-updates_main_i18n_Translation-en
MD5: 4ede856ba4b4b8796676686d84f6183b
Description Language:
File: /var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_oneiric-updates_main_binary-amd64_Packages
MD5: 4ede856ba4b4b8796676686d84f6183b

Step2:
Now take the current stable version and install it with aptitude

aptitude install nova-compute=2011.3-0ubuntu6.4

Step3:
You’ll see proposals of aptitude and the correct one is

The following actions will resolve these dependencies:

Downgrade the following packages:
1) nova-common [2012.1~e3~20120117.12124-0ubuntu0ppa1~oneiric1 (now) -> 2011.3-0ubuntu6.4 (oneiric-security, oneiric-updates)]
2) nova-compute-kvm [2012.1~e3~20120117.12124-0ubuntu0ppa1~oneiric1 (now) -> 2011.3-0ubuntu6.4 (oneiric-security, oneiric-updates)]
3) nova-network [2012.1~e3~20120117.12124-0ubuntu0ppa1~oneiric1 (now) -> 2011.3-0ubuntu6.4 (oneiric-security, oneiric-updates)]
4) python-nova [2012.1~e3~20120117.12124-0ubuntu0ppa1~oneiric1 (now) -> 2011.3-0ubuntu6.4 (oneiric-security, oneiric-updates)]

Accept this solution? [Y/n/q/?]

Answer with Y and that’s it :)

12 Mrz 2012

ArgumentError: invalid byte sequence in US-ASCII and bundler

Author: Heiko | Filed under: Rails, Ruby

If you get this error, so bundler can’t find UTF-8 System-ENV-Var (LANG= ; LL_AC=).
Normally you should check it in

/var/lib/locales/supported.d/

if you have all entries in this files. After that you can try to reconfigure all locales

dpkg-reconfigure locales

So if the fix above not working, you can try this workarond:

if RUBY_VERSION =~ /1.9/
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
end

You need to put it on the top of you Gemfile.

And voilà it’s working now :)

24 Nov 2011

Since Ubuntu 11.04 IPMI “no signal”

Author: Heiko | Filed under: Linux

Seit Ubuntu 11.04 verliert die IPMI das Signal zu den Servern. Dies hat etwas mit dem Framebuffer zu tun.

Um dies zu lösen muss ein Kernelparamerter eingefügt werden:

vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=”nomodeset”
update-grub

Nach einem reboot läuft die IPMI wie gewohnt.

Dieser Fehler tritt auf, sobald man die Credentials mit nova-manage für ein Projekt erstellen will.

/usr/bin/nova-manage project zipfile –project=”test” –user=”admin” –file=”/root/creds/novacreds.zip”

in /var/log/nova/nova-manage.log

CRITICAL nova [-] ‘ascii’ codec can’t encode character u’\xfc’ in position 28: ordinal not in range(128)

Sollte dieser Fehler auftreten, die Locale’s des system auf us_US umstellen!

10 Sep 2011

Travis-CI the new distribute build system

Author: Heiko | Filed under: Programming, Rails, Ruby

Travis-CI ist ein Open Source Projekt, welches dieses Jahr das Licht der Welt erblickt hat.
Inzwischen wird Travis-CI von mehr als 1500 Projekten genutzt. Darunter sind auch bekannte Open Source Projekte wie rspec oder Rails.
Anfangs konnte man Projekte, die mit Ruby geschrieben wurden, in verschiedenen Versionen(1.8, 1.9) testen. Inzwischen ist aber auch Erlang, Java Script und Clojure möglich.
Da die Community des Projektes stetig wächst, werden inzwischen auch andere Spachen wie Python in Angriff genommen.

Schaut einfach mal vorbei vielleicht erspart euch dies ja die Einrichtung eines CI-Servers.

IRC: irc.freenode.net #travis
URL:

5 Sep 2011

FrozenRails2011

Author: Heiko | Filed under: Rails

Ich freue mich auf Helsinki und die diesjährige FrozenRails. Also Leute, ihr werdet mich dort antreffen :)

20 Jun 2011

Request tracker login failure after upgrade to 3.8.7

Author: Heiko | Filed under: Linux

Nach einem Upgrade des Ubuntu(lucid) maintainer packages auf 3.8.7 taucht bei jedem Login der gleiche Fehler auf:

Can’t call method “_Accessible” without a package or object reference at /usr/share/perl5/DBIx/SearchBuilder/Record.pm line 423.

Nach längerem suchen ist mir nun aufgefallen das RT einen kleinen und unscheibaren Warning wirft.

[Tue Jun 21 06:31:30 2011] [warning]: Use of inherited AUTOLOAD for non-method RT::User::sha256() is deprecated at /usr/share/request-tracker3.8/lib/RT/User_Overlay.pm line 1043. (/usr/share/request-tracker3.8/lib/RT/User_Overlay.pm:1043)

Nach längerem suchen ist mir aufgefallen, das es diese Funktion nicht mehr gibt.
Also ersetzt man den Teil:

        # The truncated SHA256(salt,MD5(passwd)) form from 2010/12 is 40
        # characters long
        my $hash = MIME::Base64::decode_base64($stored);
        # The first 4 bytes are the salt, the rest is substr(SHA256,0,26)
        my $salt = substr($hash, 0, 4, "");
       - return substr(sha256($salt . Digest::MD5::md5($value)), 0, 26) eq $hash;
      + return substr(Digest::SHA::sha256($salt . Digest::MD5::md5($value)), 0, 26) eq $hash;

Schon ist das Problem gelöst.

Da ich mal wieder diesbezüglich nichts gefunden habe, dachte ich es ist mal wieder Zeit für einen Blog Eintrag.

25 Mai 2011

New Version of Xen Ruby Gem

Author: Heiko | Filed under: Rails, Ruby

Ich habe gestern eine neue Version meines xen-ruby-Gems released und bei RubyGems gepushed.
Den Source ist unter Github zu finden.

Ich werde in der Readme noch eine genaue Feature-Liste hinterlegen. Hinzugekommen ist ein Exceptionhandling das von dem System::Command Object bearbeitet und abgehandelt wird.

Ich werde in Zukunft auch hier die Release Nodes posten.

Falls Fragen oder Anmerkungen zu dem Gem bestehen, einfach den Guthub Issue-Tracker nutzen oder hier schreiben :) .

10 Mrz 2011

Hetzner partition size greater then 2TB

Author: Heiko | Filed under: Linux

Hetzner bietet das installimage-skript um mit Hilfe der Rescue-Console ein neues OS zu installieren.
Allerdings gibt es Probleme wenn man eine Partition größer als 2 TB erstellen will. Die Ursache liegt an dem verwendeten Disk-Label (MSDOS), welches Hetzner per Default verwendet (Umstellung nicht möglich).
Dieses kann nur Speicherbereiche 2^32-1 Blöcke adressieren, genauer 1,99TB. Somit muss nachträglich das Disklabel geändert und einige weitere Schritte unternommen werden.

Als erstes den Boot in die Rescue-Console!

Im Anschluss ändern wir das Disklabel.

Achtung!!!
Der MBR und die Partitionstabelle gehen dadurch verloren.

parted /dev/sda mklabel gpt


Nun ist das neue Disk-Label gpt und mit

parted /dev/sda print

ist zu sehen, das keine Partitionen mehr in der neuen Partitionstabelle stehen.


Der nächste Schritt ist testdisk. Testdisk findet verloren gegangene Partitionen wieder und kann diese in die momentan verwendete Tabelle schreiben.

testdisk /dev/sda

Alle Partitionen die Testdisk findet, sollten wieder in die neue Partitionstabelle geschrieben werden.

Nun muss eine zusätzliche Partition erstellt werden für gpt.

parted /dev/sda mkpart primary START END

Im Anschluss muss für diese Partition das Boot-Flag gesetzt werden.

Im Beispiel hier wird Grub verwendet.

parted /dev/sda set NUMBER bios_grub on


Das Ziel ist nahe :) . Nun muss die Tabelle noch umgeschrieben werden um den MBR korrekt zu erstellen.

apt-get install gptsync
gptsync /dev/sda


Nun Sollte etwas in der Art erscheinen wenn man fdisk -l aufruft.

Device Boot Start End Blocks Id System
/dev/sda1 1 267350 2147483647+ ee GPT
+ die anderen Partitionen

Nun müssen wir die Grub-Config und MBR noch korrekt erzeugen.
Hierfür mounten wir die erforderlichen Devices.

mount /dev/sda3 /mnt # Root Partiton
mount /dev/sda2 /mnt/boot # Boot Partition
mount –bind /sys /mnt/sys
mount –bind /proc /mnt/proc
mount –bind /dev /mnt/dev

und wechseln via chroot nach /mnt/

chroot /mnt

Nun noch ein

grub-install /dev/sda

reboot !

Nun sollte das System wie gehabt booten und Partitionen > 2TB anlegen lassen.
Ich hoffe es hilft, denn Hetzner bietet diesbezüglich keinen Support an.

Update:
Hetzner hat mit der neuen EX-Reihe auch ihr “installimage”-Skript angepasst. Man kann nun bequem über das Script Partitionsgrößen > 2 TB partitionieren lassen.

1 Mrz 2011

ruby xen gem

Author: Heiko | Filed under: Ruby

Am Freitag haben Clemens und ich mal begonnen ein Gem für die Steuerung von Xen zu entwickeln.

Die meisten Tasks sind implementiert, es hakt zwar noch bisschen mit dem erstellen einer komplett neuen Instanz, was ich aber die Woche noch fixen werde.
Die Dokumentation muss ich auch noch erweitern ;) .

Die Sourcen sind zu finden unter git://github.com/foexle/ruby-xen.git.
Würde mich um Feedback freuen.

In den nächsten Wochen, werde ich das Gem noch erweitern, sodass noch Backups (LVM-Snapshots) gemacht werden können.

Da dies nur ein Schnellschuss sein sollte, werde ich versuchen das ganze noch auf die Libvirt-Api zu portieren. Sodass es ein Gem zur allg. Steuerung von virtualisierten System gibt.