Jupyter Notbooks in Virtualenvs ausführen

1. Virtualenv anlegen

virtualenv   -p python3 venv    #if python2 is the default interpreter

2. Libraries installieren (ipykernel nicht vergessen)

pip3 install -r requirements.txt #dependencies

3. Kernel anlegen

python -m ipykernel install --user --name=venv

4. Virtual Env aktivieren

source venv/bin/activate

5. Im Playbook unter Kernel -> Change Kernel den Kernel venv wählen
6. Session beenden wenn Du fertig bist

deactivate

SSh Client updaten

Mein Linux Mint ist mittlerweile recht antiquiert und ebenso die Software die mitkommt. Auf ein Distupgrade habe ich keine Lust, da die / Partition voll ist und mein Rechner mit 4 Jahren bald ersetzt wird.
Mit Linux Mint 17 bekommt man openssh in der Version 6.6 aber ich brauche das super coole Feature Proxy Jump. Der Spaß ist recht schnell kompiliert:

wget http://mirror.exonetric.net/pub/OpenBSD/OpenSSH/portable/openssh-7.5p1.tar.gz
tar -zxvf openssh-7.5p1.tar.gz
 cd openssh-7.5p1/
./configure
make

Da ich nur den ssh client benötige mache ich statt

sudo make install

einfach

sudo cp ssh /usr/bin/

Fertig.

ms@w530~/Downloads/openssh-7.5p1$ ssh -V
OpenSSH_7.5p1, OpenSSL 1.0.2l  25 May 2017

Debian Datum einstellen

Wenn die Uhr nicht korrekt auf dem Rechner eingestellt ist geschehen die lustigsten Dinge.
Deshalb synchronisiert sich Debian Linux per NTP gegen einen Zeitserver. Manchmal muß man jedoch an sowas vorbei arbeiten.
Um ein Script in der Vergangenheit oder Zukunft auszuführen muß NTP deaktiviert werden.

Unter Debian / Ubuntu funktioniert das so:

root@server:~# timedatectl set-ntp 0
root@server:~# timedatectl set-time 2017-06-20
root@server:~# date
Tue Jun 20 00:00:01 CEST 2017

Im Anschluss auf keinen Fall vergessen NTP wieder zu aktivieren und die Uhr prüfen!

root@server:~# timedatectl set-ntp 1
root@server:~# date
Wed Jun 21 12:30:45 CEST 2017

Ansible Vaults bequem editieren

Ansible ist eine ganz nette Software um Serverlandschaften deklarativ zu administrieren /konfigurieren. Nicht so schön ist die Tatsache, daß alles per Yaml definiert wird – einer Auszeichnungssprache die mit Einrückungen arbeitet. Unangenehm wird es, wenn man Vault Files editieren möchte. Diese sind mit einem Passwort verschlüsselt und müssen mit dem Befehl

ansible-vault

entschlüsselt werden. Im Erfolgsfall öffnet sich nun der Default Editor (konfiguriert über update-alternatives –config editor unter Debian oder Ubuntu).

Das funktioniert prinzipiell, ist aber sehr fehleranfällig beim Anlegen von neuen Strukturen. Um z.B. Sublime Text für das Editieren zu nutzen muß nur die EDITOR Variable gesetzt werden :

EDITOR="subl -n -w"

Um den Editor dauerhaft auf Sublime umzustellen muß die Variable nur in die Shell Konfiguration ( ~/.bashrc) eingetragen werden:

export EDITOR="subl -n -w"

Kanboard – Größe der Installation reduzieren

Kanboard ist eine nette Software um kleine Projekte oder im Ernstfall sich selbst per Kanban (angeblich spricht der Japaner das als „Kamban“ aus) zu managen. Ich nutze das für kleinere Projekte in- und abseits der Arbeit mit mehr oder weniger Erfolg. Ich habe eine Instanz auf Uberspace installiert weil das Hosting da schmerzfrei über die Bühne geht und ich keinen Server betreuen muß. Einzig der Webspace ist mit 10GB schmal bemessen. Installiert ist Kanboard über git clone – wenn ich mal Lust auf Features habe pull ich einfach den Masterbranch. Bei dieser Taktik wird leider auch jeder einzelne Commit auf die Platte gezogen.

Abhilfe schafft das abschneiden der History:

git clone --depth=1 --branch master https://github.com/fguillot/kanboard

Bei composer das Flag –no-dev nicht vergessen

composer install --no-dev

und die Installation ist um ~ 70% geschrumpft

40M kanboard.de
141M kanboard.de.xxl

 

Pipe Operator in Ansible nutzen

Ansible ist ein nettes Tools  um deklarativ Rechner über SSH zu administrieren oder aufzusetzen. Deklarativ meint, daß man Zustände definiert die Ansible herbeiführen soll. Man erklärt in Tasks welche Software auf einem Rechner installiert sein soll und Ansible führ diesen Zustand herbei.

 

Ab und an muß man diesen deklarativen Pfad leider verlassen. Im konkreten Beispiel müßen alte Datenbanken (benannt nach dem Schema YYYY-mm-dd-hh-i-s)  gelöscht werden damit das RDBMS nicht volläuft. Wichtig ist es statt command shell zu nutzen, da es sonst mit dem Pipen nicht klappt.

- name: remove old databases
  shell: mysql  --user={{ vault_mysql_server[env][tld].wp_content_user }} --password='{{ vault_mysql_server[env][tld].wp_content_password }}'  --batch --execute "show databases;" |grep wp_content|sort -hr  |tail -n+4|while read line; do mysql  --user={{ vault_mysql_server[env][tld].wp_content_user }} --password='{{ vault_mysql_server[env][tld].wp_content_password }}'  --batch --execute  "DROP DATABASE $line;" 2>/dev/null;done
  register: debugOutput