Mastodon Mastodon - Blog posts
 logo
  • Home 
  • Tags 
  • Blog posts 
  1. Home
  2. Blog posts

Blog posts

August 20, 2014 •1 min read • Tools

Sublime Text: Keyboard Shortcut for setting Tab Width

Schwer zu finden … Wer schnell über das Keyboard die Tab Width verändern will, der tue das so: { "keys": ["super+k", "super+2"], "command": "set_setting", "args": { "setting": "tab_size", "value": 2 } }(gefunden hier: http://is.gd/Pz9zE0)

August 14, 2014 •1 min read • Solved

NAS Performance & Mac

Ich bin stolzer Besitzer eines Synology NAS. Das hängt mit meinem Mac an einem Gigabit-Ethernet, und funktioniert ziemlich gut. Große Dateien bekomme ich mit Transferraten von 100 MB/sec rüber. Aber. Möchte ich von meinem Mac aus eine Netzwerkfreigabe im Finder browsen - dann dauert das listen von Verzeichnissen SEKUNDEN. Anzeigen von JPGs (kleinen!) in der Vorschau auch gerne mal 10-20 davon. Abhilfe schafften nach langem googlen folgende Erste-Hilfe-Maßnahmen im Terminal: ...

May 9, 2014 •2 min read • Etcd

The limits of puppetDB a.k.a. etcd with puppet

Okay. Maybe this is the completely wrong way to do this, but I found no other. Comments appreciated. Situation: A DNS server cluster, meaning pacemaker managing an IP failover if one of them fails. The cluster IP (the one switching over) should be the IP used for DNS lookups. Idea: Hosts should automatically find ’their’ DNS server using something. The DNS server should register itself somewhere so it is automatically set up during the first puppet run. So far, so good. Unfortunately there are a few problems with it. My first approach was something like this: ...

January 14, 2014 •2 min read • Solved

Synology Git Server

Ich besitze ab neulich eine wundervolle Synology DS414. Schönes Teil. Und da ich aktuell ein wenig programmiere zu Hause wollte ich mir hier ein Git repository server einrichten. Das ist nicht ganz trivial, und wer sich github- oder gitlab-ähnlichen Komfort erhofft … ah, nö. Es ist commandline only, und davon viel. Aber zum Punkt - der schnellstmöglichen Einrichtung eines Git-Repo-Servers auf einer Diskstation. Der SSH-Zugriff unter Systemsteuerung > Terminal muss aktiviert sein. Es müssen Benutzer angelegt sein, und diese müssen ein Home-Verzeichnis haben (für die ssh-Schlüssel, ohne die es keinen Spaß macht). Das home-Verzeichnis aktiviert man in der Systemsteuerung > Benutzer, dann oben ein Knopf Benutzerbasis (der 2. von rechts bei mir) Wenn die Benutzer vorhanden sind legt man eine Freigabe an, das macht die Sache einfacher. Ich nutze /volume1/gitrepos. Den eigenen ssh-Schlüssel ins home-Verzeichnis kopieren. Das sollte unter /volume1/homes/ erreichbar sein, das Volume hat man vorhin in Schritt (1) ausgewählt. (natürlich muss .ssh/ 0600 und . sein, und .ssh/authorized_keys 0700 und ., aber das muss ich ja nicht extra erwähnen, oder?) Jetzt den Git-Service aktivieren, dem gewünschten Benutzer den Zugriff erlauben. Ein repository anlegen ist leider Handarbeit: Anmelden als root, dann nach /volume1/gitrepos wechseln, ein Verzeichnis anlegen … … git init bare ausführen, … und und jetzt entweder alles word-writable machen (bäh), oder dem entsprechenden Benutzer mittels chown zuweisen (yup). Beispiel: /volume1/gitrepos/my_repo Schließlich auf dem Arbeitsrechner noch git das neue Repo übergeben: git remote add origin @:/volume1/gitrepos/my_repo … und das wars. Ganz einfach, oder? Naja. ...

January 13, 2014 •1 min read • Oracle

Oracle virtualization

Ich hatte das zweifelhafte Vergnügen, mich mit OracleVM beschäftigen zu dürfen. Der Xen-basierten Virtualisierungslösung von Oracle. Zu dieser gehört der sog. “Oracle Manager”, eine WebLogic-basierte Anwendung zur Verwaltung aller VM hosts, cluster, VMs, und sonst noch allem. Die Aufgabe, die wir zu erledigen hatten, war prinzipiell einfach: Benutze den vorhandenen Manager, um auf 3 neuen Blades jeweils OracleVM (das Host-System) zu installieren, um dort ein paar virtuelle Maschinen laufen zu lassen. Der Trick: Die Blades waren über Trunk-Ports ans Netzwerk angeschlossen, da die VMs in verschiedenen Netzen operieren sollten. ...

August 1, 2013 •1 min read • Augeas

Augeas und Reihenfolge

Problem: mit HIlfe von Augeas einen Eintrag zur /etc/hosts Datei hinzufügen. Erste Lösung: augeas { "${title}" : context => '/files/etc/hosts', changes => [ "rm *[canonical = '${host}']", "set 02/canonical ${host}", "set 02/ipaddr ${ip}", ] }Funktioniert nicht. Warum? Trotz Aufruf von “save” am Ende einer jeden Sitzung im augtool ist die Reihenfolge der Anweisungen durchaus entscheidend - die Daten werden offenbar nicht erst am Ende zusammengesetzt. Hier z.B. gilt: In der gleichen Reihenfolge vorgehen, wie es auch in die Datei geschrieben werden würde. Und da steht nun mal am Anfang die IP Adresse. Daher also eine einfache kleine Änderung machen und schon gehts: ...

July 26, 2013 •1 min read • Puppet

Nervige Puppet Fehler

Was geht hier nicht? class { 'whatever' : do => 'something', before => Class[ 'something_else' ], } -> class { 'yeah_yeah' : do => 'even_more', }Na? Niemand? Gut. Lösung: “before =>” und >” mischen sich nicht. Das wäre nicht so schlimm, wäre die Fehlermeldung nicht absolut … unzureichend: err: Could not retrieve catalog from remote server: Error 400 on SERVER: undefined method `<<' for {}:Hash on node bstrap_foreman_v2. ...Noch sowas dass man nicht mehr vergisst. Glücklicherweise gibts grafische git logs … ...

July 19, 2013 •1 min read • Augeas

Puppet & Augeas & Pulp

Ach Augeas ist schon genial. Wenn nur nicht … (jaja, immer was zu meckern). Anlass diesmal: /etc/pulp/admin/admin.conf. Das ist eine in Augeas nicht vorgesehene Datei, und die Augeas-Doku ist … nun ja. Analyse: Die Datei besteht aus Sektionen ("[blablubb]"), und Einträgen (“hallo = welt”). Da sollte sich doch was finden lassen. Tut es auch: Die IniFile-Lens. Preisfrage: Wie testet man das? Beim Ausprobieren stieß ich auch auf die Information, dass die IniFile-Lens nicht für direkte Nutzung gedacht ist, sondern nur für die Nutzung in … abgeleiteten Lenses. Wie z.B. der Puppet-Lens. Die angeblich gut passt. Dann testet man das auf der Konsole folgendermaßen: ...

July 18, 2013 •1 min read • Puppet

Puppet, Arrays & Iteratoren

Endlich, endlich, endlich kommt in Puppet 3.2 die Möglichkeit, Schleifen zu bauen. Dann könnte ich eventuell folgende Aufgabenstellung ein klein wenig einfacher realisieren (aktuell arbeite ich bis zur endgültigen Umstellung unserer Systeme mit Puppet 2.7): Fasse alle im Rechner befindlichen Blockdevices der Form “/dev/sd*” - aber außer /dev/sda - in einer LVM volume group zusammen. Das Herausfinden der Blockdevices erledigt ein Fact aus Facter … naja, nicht ganz - ein in Facter 2.0 verfügbarer Fact, den ma aber dankenswerterweise zurückportieren kann. Dieser liefert uns $blockdevices - eine Komma-getrennte Liste der gefundenen devices, allerdings ohne “/dev/”, also nur “sda,sdb,sdc”. ...

July 4, 2013 •1 min read • Puppet

Puppet Stages & Notify

Die notify Funktion von Puppet hat eine seltsame Eigenschaft, die ich persönlich wenig nachvollziehbar finde. Sie impliziert einen “beforeZusammenhang zwischen der Resource, die benachrichtigt, und der benachrichtigten. Das führt zu unpraktischen Komplikationen. Der Versuch einer Herleitung: service { "tomcat" : ensure => running } file { "/etc/tomcat.conf" : notify => Service["tomcat"] }Das funktioniert bestens, und bedeutet, dass zuerst die file-Direktive abgearbeitet wird, und dann der Service. Darauf aufbauend kann ich mir sehr gut folgende Erweiterung vorstellen: class { "deployment::basic_app_server" : } file { "/etc/tomcat.conf" : notify => Service["tomcat"] }Nehmen wir an in “deployment::basic_app_server” werden einige zentrale Dinge geregelt, darunter auch der tomcat-Service. Die Absicht: Ich möchte mich darauf verlassen können, dass spezifische Module auf einem bestimmten Konfigurationsstand aufsetzen. Dafür wurden stages eigentlich erfunden (meines Erachtens nach), also erweitern wir zu: ...

July 3, 2013 •3 min read • Desktop

The year of the … Applications.

Es gibt ein paar Dinge ohne die ich nicht mehr so richtig leben möchte: Text expander, clipboard history, intuitiver Editor (ViM und emacs zählen nicht), und ein paar andere hätte ich gerne. Und hier ist des Linux größtes Plus des Linux größter Fluch: Die Flexibilität. Ein paar recht Gnome-lastige Eindrücke: Text expander: Hier tut AutoKey einen guten Job. Verwendet Python als Skriptsprache für “fancy stuff”, schon ziemlich gut. Leider führt ein fehlerhaftes Skript zu einem Einfrieren der Applikation, weniger praktisch. Außerdem werden die Tastaturkürzel nicht nach der Zuweisung aktiv - sondern erst nachdem man in der tabellarischen Übersicht auf die “Abbr” (Abbreviation) Spalte der richtigen Zeile klickt, denn dann erst “erscheint” der Kürzel dort, und dann erst ist er aktiv. Muss wohl ein Bug sein. Dennoch - klar der funktionale Favorit der Liste hier. ...

July 3, 2013 •1 min read • Fun

Sicherheitsmodus

Eben in der Mailbox: From: […] Betreff: Drucker prntr3131 läuft im Sicherheitsmodus Hallo, der Etagendrucker im 3. OG “prntr3131” druckt zur Zeit weiße Schrift auf weißem Papier. Die Hotline ist informiert und wird wohl einen Techniker bestellen. Gruß, […] 🙂

July 1, 2013 •2 min read • Mobile Life

Congstar

Seit heute morgen bin ich bei Congstar, gewechselt von O2 (bzw. discoPlus) weil mir dort die Gespräche doch recht häufig abbrachen. Sah immer lustig aus - man schaut aufs Telefon, sieht 5 Balken, dann plötzlich “Suche”, dann baut er wieder auf, und man bewegt sich dabei keinen Meter. Das fand ich nicht soo spannend, also ging ich zurück zum Altvater D1. Congstar allerdings gibt sich beste Mühe, einen nicht so besonderen ersten Eindruck zu machen. Ich lege die SIM-Karte ein, und bekomme erst mal “SIM gesperrt” angezeigt. Aha. Leider haben die mir keinen PIN geschickt. Ich also auf Verdacht ins online Portal, in dem ich meine PIN tatsächlich heraussuchen konnte. Eingegeben, ok. Dann bemerke ich das Fehlen eines Betreiberlogos, bzw. einfach jeglicher Betreiberinfos in der Kopfzeile. Dachte mir “das wird schon”, und fuhr zur Arbeit. Dort bekam ich nach ca. 1h gegen 9:45h eine email, ich könne jetzt meine PIN auf der Congstar-Seite abrufen. Aha. Ja, danke. Ich nehme das zum Anlass und google mal nach Betreiberlogo und Congstar. ...

July 1, 2013 •2 min read • Linux: Arch

The year of … the Printer.

Ah, ich bin langsam - der Post schimmelt schon eine Weile hier vor sich hin, weil ich den Screenshot hochlade. Jetzt isses soweit. Es geht also weiter mit: Drucken. Denn irgendwann lief das System schließlich, und ich kam an den Punkt, an dem ich etwas drucken wollte. Gnome war installiert, Firefox auch, also theoretisch (kenne ich ja vom Mac, da verrichtet CUPS ja auch hervorragende Dienste) einfach die WebGui aufrufen, Drucker auswählen, fertig. ...

June 24, 2013 •2 min read • Linux: Arch

The year of … the Installation.

Wie versprochen - ein klein wenig gemecker über die Linux Desktop Bemühungen. Erste Hürde: Die Installation. Meine Wahl fiel auf Arch Linux, das sollte gut sein, und ich wollte nicht auf den Ubuntu-Zug aufspringen. Bedingungen: Vollverschlüsselte Festplatte (incl. Swap und System), verlangt der Kunde. Ist prinzipiell gut dokumentiert, auch durch eine Howto eines Kollegen. Aber ich wollte statt LVM auf Partition mal BTRFS testen - wenn schon denn schon. Um es kurz zu machen - die Installation dauerte knapp 3 Tage. ...

June 21, 2013 •1 min read • Linux

The Year Of The Linux Desktop!

Es ist eine Ewigkeit her, seitdem ich hauptsächlich mit dem Linux-Desktop gearbeitet habe. Linux Server? Ständig. Dauernd. Immer. Aber Linux Desktop? Über 7 Jahre nicht mehr, mindestens. Und jetzt - die erste Frage in meinem aktuellen Projekt war: Was magst haben? Linux? Windows? 🙂 . Oh wie geil - Linux natürlich! Endlich konnte ich mal mit einer der aktuellen, vielgelobten, gut gereiften Linux-Distris arbeiten. Dennoch bin ich von der Entwicklung der letzten Jahre alles andere als begeistert. In den nächsten Posts erläutere ich anhand einiger Beispiele aus erster Hand, warum. ...

  • 2
  • 3
  • 4
In case you want to follow me

Here are some links. The further to the right, the less active.

           
(c) Axel Bock | Powered by Hinode.
Code copied to clipboard