Select Page

NETWAYS Blog

Daily business: der Editor vim

Es ist unerfreulich lange her, dass ich das erste Mal mit vim in Berührung kam — anno 1997, um genau zu sein, während meiner ersten verzweifelten Gehversuche in Sachen S.u.S.E. Linux. Oder war das noch vi? So irgendwie habe ich das Tool über die Jahre dann hinter mir her geschleift wie eine altmodische Handtasche, mich aber viel zu spät erst ernsthafter damit befasst — ein blöder Fehler, vor dem ich einige von euch ja vielleicht bewahren kann. Denn was viele (und gerade auch Neueinsteiger) gar nicht zu ahnen scheinen: vim ist üblicherweise auf Systemen vorhanden, kann viel, ist ziemlich cool und in der Handhabung auch gar nicht so widerlich, wenn man sich erst leidlich eingearbeitet hat.

Die Konfiguration des Editors erfolgt in einer Textdatei namens .vimrc, welche im $HOME-Verzeichnis des jeweiligen Nutzers liegen muss. Beginnen wir diese Datei mit nocompatible: denn ein compatible vim ist lediglich noch ein vi, sprich alle nützlichen Erweiterungen und Errungenschaften der letzten 20 Jahre würden abgeschaltet — und wer will das schon?

set nocompatible " Using vim settings and not vi

Widmen wir uns also einigen kleinen Kniffen, die mir für die tägliche Arbeit inzwischen unverzichtbar geworden sind: naturgemäß (und da ich gerade einen Haufen müffelnden Puppet-Codes in Richtung Ansible transportieren darf) editiere ich aktuell häufig an YAML-Dateien herum, und da ist das Thema „Einrückungen“ beispielsweise sehr relevant: YAML kennt, plump gesagt, keine Tabs, und so bewährt es sich sehr in der persönlichen .vimrc bereits festzuhalten, dass ein Tab beispielsweise durch zwei Leerzeichen ersetzt wird und Einrückungen ebenfalls zwei Leerzeichen betragen sollen. Protipp: Lasst außerdem über existierende Dateien ein :retab laufen, so dass alle eventuell vorhandenen Tabs gemäß eurer Konfiguration in Leerzeichen umgesetzt werden — die Einstellungen greifen nicht automatisch bei bereits bestehendem Text. Und: möchtet ihr YAML anders einrücken als beispielsweise C oder PHP, so beschäftigt euch mit den Möglichkeiten, die autocmd bietet!

set autoindent " Guess what?
filetype plugin indent on " Enable indenting for files
set backspace=indent,eol,start " Allow backspacing over indention/ line breaks/ insertion start
set softtabstop=2 " Indent 2 spaces when hitting TAB
set shiftwidth=2 " Indend 2 spaces when autoindent
set tabstop=2 " Show existing tab with 2 spaces width
set expandtab " Convert tabs into spaces

Gerade bei YAML hilft es mir häufig sehr wenn ich sehe, an welcher Stelle im Dokument ich mich gerade befinde; deshalb lasse ich mir die Zeilen durchnummerieren und mittels Unterstreichung die aktuelle Position anzeigen. Syntax Highlighting ist natürlich großartig, das will ich unbedingt, und durch eine einfache Anweisung sorgt zukünftig für die visuelle Hervorhebung zusammengehörender Klammern. Protipp: während number die Zeilen aufsteigend durchnummeriert, stellt relativenumber die Zeilennummern relativ zur aktuellen Position dar.

set number " Enable line numbers
syntax on " Set syntax highlighting
set showmatch " Show matching brackets
set cursorline " Highlight line under cursor
set cursorcolumn " Highlight column

Was bei der täglichen Arbeit hilft: eine Statuszeile, die mit genau jenen Informationen aufwartet, die persönlich hilfreich sind. In meinem Fall sind das Angaben wie Dateiname, beispielsweise, Dateityp oder an welcher Stelle — prozentual gesehen — ich mich innerhalb meiner Datei gerade befinde. Für euch sind hier vielleicht ganz andere Informationen wichtig, weshalb ich euch die Lektüre der entsprechenden Dokumentation ans Herz legen möchte.

set laststatus=2 " Show status line
set statusline=%t " tail of filename
set statusline+=\ %{&ff} " File format
set statusline+=\ %y " Filetype
set statusline+=\ %c, " Cursor column
set statusline+=%l/%L " Cursor line/ total lines
set statusline+=\ %P " Percent through file

Was ich wirklich zu lieben lernte: undo und redo. Die Basics kennen noch die meisten: u macht die letzte Änderung rückgängig, uuu die letzten drei und 5u die letzten fünf. Wirklich interessant wird das allerdings, wenn man es mit Zeiträumen verbindet: so macht earlier 2m (alternativ: ea 2m) die Änderungen der letzten zwei Minuten rückgängig, wohingegen later 5m (alternativ: lat 5m) alle Änderungen der letzten fünf Minuten wiederherstellt. Die Sache hat nur einen Haken: wie fast überall sind diese Statements nur innerhalb der laufenden Sitzung möglich; wird der Editor beendet und die gleiche Datei später erneut editiert, ist keine History der bisherigen Änderungen verfügbar.
Wenig überraschend lässt sich auch das anpassen: über set undofile weisen wir vim an, die Änderungen jeder Datei zu persistieren; vim tut das dann jeweils in Form eines hidden file an gleicher Stelle, was auf Dauer etwas unübersichtlich werden könnte. Erstellen wir mittels mkdir ~/.vim/undo ein eigenes Verzeichnis für Dateien dieser Art, können wir vim aber auch instruieren all diese Änderunsdateien dort vorzuhalten. Das erlaubt dann auch umfangreiche Zeitsprünge: ea 3d wird die Änderungen der letzten drei Tage rückgängig machen.

set undofile " Undo history even between sessions
set undodir=~/.vim/undo " All undo files in one directory

Zuguterletzt verpassen wir unserem vim ein hübsches colorscheme — eine Auswahl solch vordefinierter Farbschemata findet sich, in Abhängigkeit verwendeter Version und Distribution, üblicherweise in /usr/share/vim/vim$VERSION/colors/ in Form von .txt-Dateien. Ich entscheide mich für desert, ihr könnt euch aussuchen was euch am besten gefällt und versiertere Nutzer erstellen sich ihre colorschemes später dann ohnehin selber… Und wenn wir ohnehin gerade mit Farbgebungen spielen lassen wir uns die Zeilennummer spaßeshalber rot hinterlegen, während die Hervorhebung der Spalte in einem aufdringlichen hellen Magenta erfolgen soll. Einschub: eine Liste verfügbarer Farben lässt sich aus vim heraus unkompliziert mit dem Kommando :h cterm-color abrufen.

colorscheme desert " Setting nice colors
highlight CursorLineNR ctermbg=red
highlight CursorColumn ctermbg=LightMagenta

Es gäbe noch So! Viel! Mehr! Belassen wir es für heute mal dabei. Eine einsatzbereite exemplarische vimrc-demo findet ihr auf GitHub; sie ist nicht als „finale Fassung“ zu verstehen sondern vielmehr als Ausgangspunkt für die Erarbeitung einer persönlichen und über die Zeit immer perfekteren Version. Und vielleicht wollt ihr über die Kommentare verraten, ob Artikel dieser Art hilfreich für euch sind — und welche Einstellung, welches Plugin, welcher Kniff für euch unverzichtbar ist?

Server löschen mit Darik´s Boot and Nuke

Da ich derzeit meinen Abteilungsdurchlauf bei Netways Managed Services mache, übernehme ich heute den wöchentlichen Post. Ich dachte mir, da ich derzeit viele Server lösche und aus dem Rechenzentrum ausbaue, wäre es ein gutes Thema über das sichere löschen von Servern zu reden. Das Tool welches wir bei Netways zum löschen von Servern und Festplatten benutzen, ist Darik´s Boot and Nuke (kurz DBAN).

Was ist DBAN?

DBAN ist ein Werkzeug zum kompletten Überschreiben von Festplatten und Servern.

Wie funktionert Darik´s Boot and Nuke?

Das Tool überschreibt die gewünschten Festplatten so oft mit Einsen und Nullen, wie man es wünscht. Dadurch ist eine Wiederherstellung der Daten nicht möglich. Außerdem kann man verschiedene “Löschmethoden” auswählen. Diese werden ich in diesem Artikel aber nicht alle einzeln aufzählen und erklären, da dies zu weit gehen würde. Die Methode welche wir zum löschen nutzen, ist DoD 5220.22-M.

Warum löschen wir Server?

Aus einem einfachen Grund: Daten von Kunden, welche sich auf den Servern befinden, dürfen nicht an die Öffentlichkeit gelangen. Für jemanden der sich in dieser Branche auskennt, ist es kein Problem übrige oder gar nicht gelöschte Daten aus den Festplatten der Server zu lesen. Sollte ein Server verschrottet werden, ist es also trotzdem nötig die Daten vorher sauber und sicher zu löschen. Außerdem werden Server, welche in guter Verfassung und auf dem heutigen Standart sind, meist nach der Löschung weiter verwendet.

Wie erstellt man einen bootbaren DBAN Stick?

Mit diesem Thema hatte ich lange zu kämpfen. Als Information vorab, DBAN ist als ISO Image zu downloaden und als bootbares Image zu nutzen. DBAN kann man mit so gut wie jeden “Startmedienersteller” bootbar auf einen Stick schreiben. Allerdings wird bei Ubuntu 18.04 (welches ich auf meinem Rechner habe) das Image nicht komplett erstellt. Es fehlen einzelne Bruchteile des Systems, welche dafür sorgen, dass ich DBAN nicht booten kann. Ich habe lange gebraucht um herauszufinden, wie ich einen DBAN Stick erstellen kann. Am Ende war es ziemlich simpel. Ich habe versucht das Image auf einem Windows 10 Rechner zu erstellen, und der bootbare Stick wurde sauber ersellt und ich konnte von ihm booten.

Eine kleine Tücke, über die ich auch gestolpert bin, sind Raids. Raids müssen vor dem löschen entfernt, bzw. jede Platte sollte als eigenständiges Raid 0 auf geführt werden, da sie sonst nicht in der Tabelle der löschbaren Festplatten auftauchen.

Ich hoffe ich konnte euch einen kleinen Einblick in DBAN liefern und habe euch für das Werkzeug begeistert.

Tobias Bauriedel
Tobias Bauriedel
Assistant Manager Operations

Tobias ist ein offener und gelassener Mensch, dem vor allem der Spaß an der Arbeit wichtig ist. Bei uns hat er seine Ausbildung zum Fachinformatiker für Systemintegration abgeschlossen und arbeitet nun im NETWAYS Professional Services - Team Operations und entwickelt nebenbei Projekte für die NPS. In seiner Freizeit engagiert er sich ehrenamtlich aktiv bei der Freiwilligen Feuerwehr als Atemschutzgerätetrager und Maschinist, bereist die Welt und unternimmt gerne etwas mit Freunden.

Happy Birthday NWS!

Es begann, wie so oft bei großen Dingen, in kleiner Runde. DevOpsDays 2015 in Ghent: Man sitzt zusammen, unterhält sich, lässt den Gedanken freien Lauf und plötzlich beginnen sie sich zu formen. In diesem Fall nehmen sie die Form einer Plattform an. Die NWS-Idee ist in den Köpfen!

Commit, Beta, live

Die NETWAYS Web Services (NWS) sollten ein SaaS Angebot sein, das seinen Nutzer*innen auf kürzestem und simpelstem Weg binnen weniger Minuten Zugang zu den passenden Open Source Anwendungen verschafft. Also machen sich die unerschrockenen NETWAYS Engineers im Oktober 2015 auf den Weg, und basteln, bauen, schrauben und testen…

  • 27.10.2015: Einer der Gründer erstellt den ersten Commit
  • OSMC 2016: Ein kleiner Kreis eingeweihter Experten sieht die Beta und gibt sein „Go“
  • März 2017: Es ist so weit: NWS geht live!

Zum Icinga 2 Satellite und Icinga 2 Master, zu Nextcloud und Rocket.Chat gesellen sich bald GitLab, RequestTracker, SuiteCRM, der Web Accelerator und 2018 zieht mit Pauken und Trompeten die Open Infrastructure Queen-OpenStack nach.

My favourite Engineers

Heute sitzen im NWS Team die Experten für alles: Programmieren, Betrieb, Rechenzentrum, Web Hosting, Storage Cluster, Cloud, DevOps, Hype. Sie bauen neue Setups und sind Support. Mehr noch: MyEngineers! Sie kümmern sich um Laufendes und künftige Software as a Service Angebote. Sie maßschneidern Open Infrastructures auf Basis von OpenStack.

Das heißt vor allem: NWS Kunden können sich voll auf ihr Business konzentrieren, ohne sich den Kopf über IT Dinge zu zerbrechen. Und haben immer einen Ansprechpartner, der sich auskennt. Wer’s nicht glaub kann sich selbst überzeugen: Die ersten 30 Tage NWS SaaS sind kostenfrei – kein Haken an der Sache. Isso.

Du willst gratulieren? Die Engineers freuen sich definitiv über deinen Besuch auf ihrer Plattform nws.netways.de und Glückwünsche auf Twitter @NetwaysCloud

Ein Hoch auf zwei Jahre NWS! Alles Gute und weiter so!

AJAX mit Ruby on Rails und :remote => true

Mit :remote => true bietet das das Ruby Webframework Rails eine sehr einfache Methode um mit Hilfe von AJAX eine Webseite zu aktualisieren. Dieses kann z.B. einfach zu HTML-Elementen wie Formulare, Buttons, Links und Checkboxen hinzugefügt werden. Dadurch werden z.B. gefüllte Formulare nicht mehr wie gewohnt an den Webserver gesendet, sondern mit AJAX. Man erspart dem Benutzer dadurch einen lästigen ggf. langwierigen Seitenaufbau. Im Gegenzug muss man sich aber selber um eine Aktualisierung der Webseite mit Hilfe von jQuery oder JavaScript kümmern.

Folgender Code in einem View erstellt eine Checkbox welche bei einem Klick mit Hilfe von AJAX einen HTTP Post an die angeben URL sendet:

[ruby]
check_box_tag(
"my_checkbox", "i_am_checked", false,
data: {
remote: true,
url: "my_checkbox/click",
method: "POST"
}
)
[/ruby]

Der Request muss in diesem Fall vom my_checkbox Controller angenommen und verarbeitet werden. Um die Ansicht des Benutzers zu ändern schickt man mit den bekannten Rails Methoden Javascript an den Browser zurück. Im my_checkbox_controller.rb erweitert man z.B. die respond_to einfach um ein format.js:

[ruby]
def click
respond_to do |format|
format.js {}
end
end
[/ruby]

Der dazugehörigen View (click.js.erb) wird somit an den Browser zurück gesendet und man kann per JavaScript die Webseite aktualisieren:

[javascript]
console.log(‘I am the response!’)
alert(‘You clicked the checkbox!’)
[/javascript]

Rails bietet mit :remote=>true somit eine wirklich einfach Methode um AJAX für seine Webseite einzusetzen!

Achim Ledermüller
Achim Ledermüller
Senior Manager Cloud

Der Exil Regensburger kam 2012 zu NETWAYS, nachdem er dort sein Wirtschaftsinformatik Studium beendet hatte. In der Managed Services Abteilung ist er für den Betrieb und die Weiterentwicklung unserer Cloud-Plattform verantwortlich.

Monthly Snap November


 
Remember one month ago? The first talks were about to start soon, you had your first coffee, enjoyed the rich Holiday Inn breakfast, took your journal, in which you had your plan for the day scetched, you were happy to meet an old friend in the hallway on your way to Saal Jacobi, where Bernd Erk was preparing to kick-off OSMC. …
OSMC – good times! Take some of its spirit with you into the cold and dark december days and let it warm your heart like a cup of hot Christkindlesmarkt mullet wine.

Form OSMC to Open Infrastructure

How? Make yourself a cup of hot wine and read through OSMC 2018 – Day 1 and OSMC 2018 – Day 2 by Dirk, or OSMC 2018 – or: The Thirteen-Star Conference, in which our attendees share their experiences. Read Michi’s Hackathon stories and Dirk’s report about OSCAMP on Puppet. You’re more of a visual type?  Browse through our OSMC Archive and find all the videos, pics and slides.
Right after OSMC our NWS-Team hit the road to Berlin for OpenStack Summit. Check out their managed Open Infrastructure service at nws.netways.de – now with MyEngineer support!

Icinga Seminar & Berlin Camp

Lennart Betz continues his blogpost-seminar Icinga 2 – Monitoring automatisiert mit Puppet Teil 9: Profile and Teil 10: Profile Part II. Join the Icinga community in 2019: Icinga Camp Berlin: Call for Papers is running until Decemeber 31! Find all November Icinga updates here.

For the tech hearts

Achim tell you to Get your RadosGW metrics into Ceilometer. Loei explains the use and functionality of RFID & NFC. Niko shares Neuheiten beim IntelliJ-Update. Tim knows Ceph Mimic | Using loop devices as OSD
In git gud! Henrik tells the story of: How I Learned to Stop Worrying and Love my Code. Noah introduces you with GitKraken to a nearly perfect Git-Client, while Johannes shares another useful tool: PDF manipulieren mit pdftk.

Presents

In November Silke announced Black Friday mal ganz in Orange – Es darf gespart werden und Die neue Generation der SMSEagle NXS-97xx Linie stellt sich vor. It‘s always a good idea to check our Shop for special offers. Especially if you are looking for Christmas presents. In that sense: Entschleunigung vom Weihnachtsstress bei Netways!
Have a wonderful December and Christmas season! Stay tuned!