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"

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