Adgang til brønden fra udviklingsmaskiener

Som de fleste har opdaget i forbindelse med vidreudvikling til Ding. Så er data brønden lukket baseret på IP-adresser, hvilket gør det lidt mere besværligt at lave lokal udvikling.

En løsning er at benytte SSH tunnels via en server som har adgang til brønden. Vi (aakb) benytter 2 tunneler til at opnå forbindelse til brønden.

        ---------        -----------------        -----------
        | local | <----> | cable.aakb.dk | <----> | aakb.dk |
        ---------        -----------------        -----------

Serveren cable.aakb.dk bruger vi til deployment af nye ding sites og den har derfor adgang til vores produktions server, som er hosted ved DBC og derfor har den fuld adgang til alle DBC tjenester.

Serveren

Oppe på cable.aakb.dk bruger vi autossh til automatisk at hold ssh tunnellerne åbne. Du kan benytte kommandoerne her under, dog skal du skifte services.aakb.dk ud med jeres alma server.

  1. /usr/bin/autossh -fN <a href="mailto:deploy@tealc.aakb.dk">deploy@tealc.aakb.dk</a> -i /home/deploy/.ssh/id_rsa -L 8010:services.aakb.dk:8000
  2. /usr/bin/autossh -fN <a href="mailto:deploy@tealc.aakb.dk">deploy@tealc.aakb.dk</a> -i /home/deploy/.ssh/id_rsa -L 8011:opensearch.addi.dk:80
  3. /usr/bin/autossh -fN <a href="mailto:deploy@tealc.aakb.dk">deploy@tealc.aakb.dk</a> -i /home/deploy/.ssh/id_rsa -L 8012:openspell.addi.dk:80
  4. /usr/bin/autossh -fN <a href="mailto:deploy@tealc.aakb.dk">deploy@tealc.aakb.dk</a> -i /home/deploy/.ssh/id_rsa -L 8013:openadhl.addi.dk:80
  5. /usr/bin/autossh -fN <a href="mailto:deploy@tealc.aakb.dk">deploy@tealc.aakb.dk</a> -i /home/deploy/.ssh/id_rsa -L 8014:openscan.addi.dk:80

Hvis du ønsker at disse kommandoer skal køre automatisk efter f.eks. en server genstart kan du med fordel indsætte dem i /etc/rc.local.

Lokal

På din udviklingsmaskine kan du køre dette script det laver tunneller på til serveren.

  1. #!/bin/bash
  2.  
  3. echo "Creating ssh tunnels..."
  4.  
  5. killall ssh
  6.  
  7. /usr/bin/ssh -f cable -L 8010:localhost:8010 -N
  8. /usr/bin/ssh -f cable -L 8011:localhost:8011 -N
  9. /usr/bin/ssh -f cable -L 8012:localhost:8012 -N
  10. /usr/bin/ssh -f cable -L 8013:localhost:8013 -N
  11. /usr/bin/ssh -f cable -L 8014:localhost:8014 -N
  12.  
  13. echo "done"

Hosts

Du skal tilføje de forskellige server til din hosts file (på linux /etc/hosts).

  1. 127.0.0.1 opensearch.addi.dk
  2. 127.0.0.1 openspell.addi.dk
  3. 127.0.0.1 openadhl.addi.dk
  4. 127.0.0.1 openscan.addi.dk

Settings.php

For at slippe for at skal ændre i konfiguration hvergang en ny database hentes ned kan man med fordel tilføje dette til sin settings.php fil.

  1. $conf['ting_search_url'] = 'http://opensearch.addi.dk:8011/2.1/';
  2. $conf['alma_base_url'] = 'https://localhost:8010/alma/';
  3. $conf['ting_spell_url'] = 'http://openspell.addi.dk:8012/1.2/';
  4. $conf['ting_recommendation_server'] = 'http://openadhl.addi.dk:8013/1.1/';
  5. $conf['ting_scan_url'] = 'http://openscan.addi.dk:8014/2.0/';
  6.  
  7. $conf['file_directory_path'] = 'sites/default/files';
  8. $conf['file_directory_temp'] = '/tmp';

Grupper:

Kommentarer

Essentiel viden

Dette er nyttigt for alle, der gerne vil udvikle imod Open* services. Bemærk at det også er muligt at bruge bibliotekets DEV/TEST/PROD miljø som mellemled.

Variant: Tunnel fra local til server

Vejles produktions server er også hosted hos DBC. Vi har dog direkte adgang til vores server-miljø fra Vejle Biblioteks IP, så hos os er een tunnel nok.

Lokal:

Scriptet på udviklingsmaskinen ser i Vejle lidt anderledes ud, og reflekterer at tunnellen fører direkte til produktionsserveren. Herfra kan man nå alle *.addi.dk services uden at angive noget særligt portnr. - men i syntaksen til ssh-kommandoen SKAL man have det med, så det skrives som ":80", da 80 jo er standard-porten for http.

 
  1. #!/bin/bash
    
  2. echo "Creating ssh tunnels..."
  3.  
  4. killall ssh
  5.  
  6. /usr/bin/ssh -l vejle -f vejle.ding.dbc.dk -L 8011:opensearch.addi.dk:80 -N
  7. /usr/bin/ssh -l vejle -f vejle.ding.dbc.dk -L 8012:openscan.addi.dk:80 -N
  8. /usr/bin/ssh -l vejle -f vejle.ding.dbc.dk -L 8013:openspell.addi.dk:80 -N
  9. /usr/bin/ssh -l vejle -f vejle.ding.dbc.dk -L 8014:openadhl.addi.dk:80 -N
  10.  
  11. echo "done"

"-l vejle" angiver at vi logger på produktionsserveren med brugernavnet "vejle". At kunne gøre dette kræver, at man har sendt SSH-nøglerne fra sin udviklingsserver til produktionsserveren, så den accepterer indlogning uden password fra udviklingsmaskinen.

Hosts

I Vejle som ovenfor beskrevet

Settings.php

I Vejle som ovenfor beskrevet