Blog von Betacloud

Vagrant: Too many open files

Bei Nutzung von Vagrant unter MacOS kommt es beim Start von neuen virtuellen Systemen häufig zu der Fehlermeldung ...vagrant/util/safe_chdir.rb:25:in `chdir': Too many open files - getcwd (Errno::EMFILE). Durch Erhöhung des Limits mit ulimit -n 4096 lässt sich dieser Fehler einfach beheben.

Ansible Modul „test-infrastructure“

Auf GitHub stehen einige von uns entwickelte und eingesetzte Ansible Module zur Verfügung. In diesem Beitrag wird das Ansible Modul test-infrastructure vorgestellt.

In unserer auf Jenkins basierenden CI Umgebung testen wir unterschiedliche Konfigurationsszenarien von OpenStack. Für einige dieser Szenarien sind die im Kolla Projekt verfügbaren Ansible Rollen und Docker Images nicht ausreichend und auch gar nicht erforderlich.

Beispielsweise ist das dann der Fall, wenn die Integration des Identity Service „Keystone“ mit LDAP getestet, im Block Storage Service „Cinder“ als zusätzliches Storage Backend ein NFS Export eingebunden oder ein Amazon S3 kompatibler Object Storage für Backups von Volumes genutzt werden soll.

Um die für diese Szenarien benötigten zusätzlichen Dienste während der Tests bereitstellen zu können haben wir das Ansible Module test-infrastructure erstellt.

Es stellt derzeitig einen OpenLDAP Server mit phpLDAPAdmin, einen NFS Server und eine Docker Registry vorkonfiguriert und bereits initialisiert, beispielsweise mit LDAP Benutzern und Gruppen oder NFS Exports, auf Basis von Docker zur Verfügung.

Error response from daemon: maximum retry count cannot be used with restart policy ‚unless-stopped‘

Hat man eine OpenStack Umgebung mit Kolla <= 3.0.2 und Docker < 1.13 ausgerollt und anschliessend Docker auf eine Version >= 1.13 aktualisiert kommt es beim Start von Containern zu dem folgendem Fehler: Error response from daemon: maximum retry count cannot be used with restart policy 'unless-stopped'

Verursacht wird dieser Fehler durch eine Änderung in der Docker API v1.25. Der MaximumRetryCount, von Kolla <= 3.0.2 per Default auf den Wert 10 gesetzt, ist nun nicht mehr gültig und müsste auf 0 gesetzt sein.

In Kolla wurde dieses Problem mittlerweile behoben und in allen aktuellen Versionen wird MaximumRetryCount nicht mehr gesetzt wenn die Restart Policy unless-stopped verwendet wird. Eine gute Übersicht über die einzelnen Restart Policies findet sich im Blog von Codeship.

Probleme treten nun auf wenn man die Docker Engine auf einem Konten einer bestehenden Kolla Umgebung auf eine Version >= 1.13 aktualisiert.

Auf Stackoverflow findet sich dazu der Hinweis eine mögliche Lösung ist die direkte Bearbeitung der hostconfig.json Datei eines Containers, abgelegt im entsprechendem Verzeichnis unter /var/lib/docker/containers, gefolgt von einem Restart des Docker Services.

Mittlerweile wurde das docker update Kommando eingeführt, mit dem sich einige Parameter eines bereits erstellten Containers bearbeiten lassen. Darunter auch die zu nutzende Restart Policy.

Erfreulicherweise wird beim setzen der unless-stopped Restart Policy, für einen Container der diese Restart Policy bereits gesetzt hat, der Wert für MaximumRetryCount auf 0 gesetzt. Anschliessend ist ein Start des Containers wieder möglich.

Create a copy of a Docker volume

Quick & dirty twoliner to create a copy of a Docker volume.

Stopp eines nicht vorhandenen Dienstes

Manchmal möchte man mit einer Ansible Rolle einen Dienst stoppen, der nicht auf allen geplanten Umgebungen vorhanden ist. Um nicht vorab eine grössere Anzahl von Vorabprüfungen einzuführen lässt sich folgender Workaround verwenden. Dadurch schlägt der Task dann nicht mehr fehl wenn der zu stoppende Dienst nicht gefunden wurde.

Management IP Adresse eines XenServer ändern

Zunächst kann man sich mit dem Kommando xe pif-list alle verfügbaren physikalischen Devices anzeigen lassen.

Mit dem Kommando xe pif-param-list uuid= lassen sich Details zu einem physikalischem Device abrufen. Damit kann man überprüfen ob man die UUID des richtigen Devices herausgefunden hat.

Durch den Aufruf des Kommandos xe pif-reconfigure-ip kann nun die IP Konfiguration geändert werden.

Weitere Details im Blog von Citrix: https://www.citrix.com/blogs/wp-content/uploads/2008/07/CTXSXenTipXSChgMgmtIP.pdf.

mkpaswd: command not found

Versucht man mkpasswd über den naheliegenden Paketnamen mpasswd zu installieren erhält man lediglich den Fehler E: Unable to locate package mkpasswd.

mkpasswd ist auf Ubuntu im Paket whois enthalten. Entsprechend dieses Paket mittels apt-get install whois installieren. Nun kann beispielsweise mit mkpasswd --method=sha-512 ein gehashtes Passwort generiert werden.

Fehler beim Start des Kolla iscsid Containers

Möchte man den iscsid Container von Kolla nutzen und erhält nach dem Start in den Logs den Fehler iscsid: Can not bind IPC socket, dann liegt es daran das auf dem Hostsystem bereits ein iSCSI Dienst läuft. Dieser musst gestoppt werden bzw. muss das entsprechende Paket entfernt werden. Anschliessend lässt sich der iscsid Container ohne Probleme starten.