dataramblers / datahack-server-ansible

A small playbook to setup a loris server and load the data from the SAH
0 stars 0 forks source link

Lokales Aufsetzen der Infrastruktur #4

Open sschuepbach opened 6 years ago

sschuepbach commented 6 years ago

Lieber @tobinski Ich habe versucht, das Ansible-Playbook gemäss der Anleitung im README lokal zu starten. Das Skript wird mit folgender Fehlermeldung abgebrochen:

fatal: [iiif.dataramblers.io]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: root@iiif.dataramblers.io: Permission denied (publickey).\r\n", "unreachable": true}

Muss ich, um die Infrastruktur lokal aufzusetzen, zuerst einen lokalen SSH-Server konfigurieren und die Adresse des Hosts in production entsprechend setzen? Oder habe ich sonst etwas übersehen / vergessen?

guenterh commented 6 years ago

@tobinski Habe heute morgen ebenso probiert das Playbook laufen zu lassen. Bekomme die gleiche Fehlermeldung wie @sschuepbach Meine Umgebung war das aktuellste ubuntu18 image in einer virtual box

ubuntu18@ubuntu18:~/environment/code/dataramblers/datahack-server-ansible$ ansible-playbook -i production playbook.yml

PLAY [Install python] ***

TASK [install python 2] ***** The authenticity of host 'iiif.dataramblers.io (159.65.127.108)' can't be established. ECDSA key fingerprint is SHA256:sG+wMpM84//R0hp/1SariYU04OcmQLLf35dnbAjOEDI. Are you sure you want to continue connecting (yes/no)? yes fatal: [iiif.dataramblers.io]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added 'iiif.dataramblers.io,159.65.127.108' (ECDSA) to the list of known hosts.\r\nroot@iiif.dataramblers.io: Permission denied (publickey).\r\n", "unreachable": true} to retry, use: --limit @/home/ubuntu18/environment/code/dataramblers/datahack-server-ansible/playbook.retry

PLAY RECAP ** iiif.dataramblers.io : ok=0 changed=0 unreachable=1 failed=0

sschuepbach commented 6 years ago

@guenterh Ich konnte das Problem nun lösen, indem ich einen lokalen SSH-Server laufen lasse, den remote_user in playbook.yml auf meinen lokal benutzten user geändert habe und den entsprechenden SSH-key via ssh-copy-id localhost auf den SSH-Server kopiert habe.

@tobinski: Wäre es möglich, die Art und Weise des SSH-Zugangs im Playbook genauer zu definieren? Bspw.: Zugang auch mit Passwort möglich, globales Setzen eines users etc.?

Zudem fände ich es nicht schlecht, einen Hinweis im README zu haben, dass Ubuntu bzw. eine andere Distro, die aptitude als Paketmanager verwendet, Voraussetzung ist (denn bei meiner Arch-Umgebung bricht der Prozess spätestens dann ab, wenn apt-get aufgerufen werden soll). :-)

guenterh commented 6 years ago

@sschuepbach @tobinski Hmh, könnt Ihr mal erklären, was das Ziel unseres Tuns ist? Bisher verstehe ich es so, dass eine mir nicht genau bekannte Umgebung bei mir lokal installiert werden soll. Ein Grund, weswegen ich eine virtuelle Maschine benutze. Wenn ich versuche den Kommentar von Sebastian zu verstehen, soll mein lokaler user auf einen ssh-server zugreifen. Damit das möglich ist, muss mein key dorthin kopiert werden. Was hat das mit meiner lokalen Umgebung zu tun?

sschuepbach commented 6 years ago

Lieber @guenterh Soweit ich das verstehe, soll das Repository am Ende eine Art "One-Stop-Shop" für das Deployment unseres Datenhack-Projektes und idealerweise schnell auf verschiedenen Umgebungen aufsetzbar sein. Im Moment will ich aber die Umgebung nutzen, um für die Entwicklung des Frontends lokal einen ES-Server mit den Metadaten und einen IIIF-Server mit den Bildern des SAH zur Verfügung zu haben. Mit meinen sehr rudimentären Kenntnisse von Ansible verstehe ich den Vorgang so: Es gibt einen Master, auf dem das Playbook ausgeführt wird, und Nodes (oder im vorliegenden Fall: ein Node), auf dem die Umgebung aufgesetzt werden soll. Der Master kommuniziert mit den Nodes standardmässig via SSH und dem public key-Authentifizierungsverfahren. Wenn ich die Umgebung direkt auf meinem lokalen Rechner aufsetzen will, dann muss also da auch ein SSH-Server laufen, auf dem der key meines users abgelegt ist.

Übersetzt auf deinen Fall würde das heissen: Du führst Ansible auf dem Host-OS aus, deployst aber auf der VM. Und dazu brauchst du eben im Moment SSH-Zugang auf deine VM via public key-Authentifizierung.

guenterh commented 6 years ago

Lieber @sschuepbach danke für die Details! So hätte ich das auch interpretiert, mich hatte wohl vor allem der Eintrag iiif.datarambers.io abgelenkt. Ich bin ein wenig weitergekommen, wenn ich einen lokalen user der VM benutze und ihn berechtige, auf den lokalen server zuzugreifen (wie Du beschreibst) Was nicht geht, das playbook möchte u.a. ein Verzeichnis /data anlegen, wozu es natürlich keine Berechtigung hat. Wenn ich das gaze als root ausführe, kann ich mich nicht mehr einloggen (auch wenn ich root eigene keys gebe) Das kann aber auch mit Ubuntu zusammenhängen.

Ich stoppe das an dieser Stelle mal. Ich unterstütze das Ziel eines "one stop shops" für das Ergebnis, möchte jedoch im Moment nicht zuviel Zeit mit "devops" verbringen

tobinski commented 6 years ago

@guenterh @sschuepbach Ich werde das Readme so egänzen, dass eine lokale Umgebung aufgebaut werden kann. Diese ist jedoch nicht unbedingt die Beste Wahl für die Emntwickung...

Noch kurze eine Erklärung, was das Playbook genau macht: Das Playbook setzt auf einem Linux Host den gesamten Server mit allen Packeten und den dazugehörigen Dockern-Containern auf.

Entsprechend benötigt der User sudo Rechte, damit er Pakete installieren und ausführen darf. Neben den Programmen werden auch die Daten vom Server gezogen und eingespielt. Deshalb das Verzeichnis /data Dadurch sollte es schlussendlich möglich sein unser Projekt auf einem x-beliebigen Server aufzusetzen, ohne noch manuelle etwas zu machen.

guenterh commented 6 years ago

@sschuepbach @tobinski Erstmal danke für die Details Ich habe mir die Sachen nochmals etwas angesehen (und mich u.a. etwas mit Ansible beschäftigt)

TASK [common : Check if a reboot is required] **** ok: [ubuntu18]

--> beim mir war der reboot erforderlich

Die tasks des playbooks "Download der Bilder vom Sozialarchiv" konnten erfolgreich abgeschlossen werden . Es gibt jedoch einen fail bei diesem task TASK [data : Get 5025-fb-401600 images data from the Sozialarchiv] *** changed: [ubuntu16]

TASK [data : Get 5025-fb-601771 images data from the Sozialarchiv] *** changed: [ubuntu16]

PLAY [Install iiif server and start it] **

TASK [Gathering Facts] *** ok: [ubuntu16]

TASK [dockercontainers : setup docker containers] **** fatal: [ubuntu16]: FAILED! => {"changed": false, "msg": "Unable to load docker-compose. Try pip install docker-compose. Error: No module named compose"} to retry, use: --limit @/home/swissbib/environment/code/data.science/dataramblers/datahack-server-ansible/playbook.retry

PLAY RECAP *** ubuntu16 : ok=26 changed=14 unreachable=0 failed=1

Bisher habe ich dafür keine Lösung. Möchte mich im Moment auch nicht daraum kümmern. Weil, wenn ich mich jetzt noch in die Details von Docker begebe, komme ich sonst zu gar nichts mehr. Was nicht heissen soll, dass ich ihm keine Wichtigkeit gäbe.

tobinski commented 6 years ago

ich arbeite gerade daran. Grundsätzlich gibt es den Task docker, dort wird docker und docker-copose auch installiert. Ich werde den Restart mal rausnehmen und später evt. wieder einfügen.

tobinski commented 6 years ago

Zudem überarbeite ich gerade das Readme. Werde dort einige deiner hints einbauen. @guenterh Merci fürs testen!

guenterh commented 6 years ago

@tobinski Gerne geschehen!

tobinski commented 6 years ago

@guenterh Ich hab das projekt aktualisiert und viele änderungen durchgeführt. Audch hab ich das Readme überarbeitet, so dass es jetzt besser nachvollziehbar sein sollte, wie die lokale Instanz aufgesetzt wird. Vielleicht willst du ja noch was daran anpassen

sschuepbach commented 6 years ago

@tobinski, @guenterh, vielen Dank für eure Erläuterungen und Anpassungen. Ich habe inzwischen ebenfalls versucht, die Infrastruktur auf eine virtuelle Maschine zu installieren. Da auf meinem Host VMware oder Virtualbox nicht läuft (beide verwenden propriertäre Komponente, die mein System nicht unterstützt), musste ich auf Qemu ausweichen, dessen Konfiguration ein wenig komplexer ist. Im Laufe des Ansible-Prozesses sind auch einige der von @guenterh beschriebenen Probleme aufgetreten, inzwischen konnte ich aber zumindest die Basisinstallation abschliessen. ES, Loris und Nginx laufen, doch scheint im Moment die Portfreigabe noch nicht zu funktionieren. Ich versuche nun, mithilfe der erweiterten Anleitung im README einen Schritt weiterzukommen.

guenterh commented 6 years ago

@tobinski @sschuepbach

TASK [data : Get 5025-fb-601771 images data from the Sozialarchiv] ***** ok: [ubuntu16]

PLAY [Install iiif server and start it] ****

TASK [Gathering Facts] ***** ok: [ubuntu16]

TASK [dockercontainers : Upload elasticsearch config] ** changed: [ubuntu16]

TASK [dockercontainers : change access rights to elasticsearch.yml] **** changed: [ubuntu16]

TASK [dockercontainers : Upload proxy config] ** changed: [ubuntu16]

TASK [dockercontainers : setup docker containers] ** fatal: [ubuntu16]: FAILED! => {"changed": false, "msg": "Unable to load docker-compose. Try pip install docker-compose. Error: No module named compose"} to retry, use: --limit @/home/swissbib/environment/code/data.science/dataramblers/datahack-server-ansible/playbook.retry

PLAY RECAP ***** ubuntu16 : ok=29 changed=7 unreachable=0 failed=1

ich versuche es mir noch etwas anzusehen

guenterh commented 6 years ago

Das Problem wird hier diskutiert https://github.com/ansible/ansible-modules-core/issues/5522 https://github.com/ansible/ansible/issues/29510 https://github.com/ansible/ansible/issues/29498 und hat auch etwas mit der docker-compose version zu tun

Ich verstehe das Rollenkonzept von Ansible noch zu wenig https://github.com/dataramblers/datahack-server-ansible/blob/master/playbook.yml#L22 wo kann ich für die playbooks Einstellungen machen? (zum Beispiel für docker-compsoe)

tobinski commented 6 years ago

@guenterh Ich schaues morgen nochmals an. Da ich docker immer installiere kann es sein, dass docker-compose noch fehlt... ich verwende folgende rolle https://github.com/geerlingguy/ansible-role-docker

tobinski commented 6 years ago

Ich forciere nun die Installation von docker-compose. Werde es morgen auf einer frischen Machine nochmals laufen lassen

tobinski commented 6 years ago

@sschuepbach Es sollte nur der Port 80 port frei sein. Dort läuft ein Proxy, der danach die Requests verteilt. Entsprechend musst die VM über die konfigurierte Domain zugänglich sein. In meinem Fall dataramblers.localhost