1 Forbededelser
1.1 Nytt miljø
Cerebrum-drift har ansvar for å bestille og sette opp nytt produksjonmiljø. Dette er dokumentert på drift sitt web-område.
1.2 Migrasjon av kodebase
I forbindelse med overgang til Python 2.7, er det blitt avdekket en del ukompatibel eller utdatert kode som må fikses, i tillegg til en del endringer som er ønsket ved overgang til nytt produksjonsmiljø. Disse endringene er Cerebrum-utvikling sitt ansvar.
Hittil har følgende blitt identifisert:
- CRB-728
- Advarsler fra Python - bedre ivaretaelse (og oppfølging) av warnings
- CRB-727
- cElementTree - Rydde opp i bruk av ElementTree og lxml
- CRB-725
- Psycopg2-modul – Fikse patching av PsycoPG2 som ikke er støttet i nyere versjoner
- CRB-722
- Fjern json frå extlib – Overgang til Pythons innebygde JSON-modul
- CRB-721
- Erstatt popen2 med subprocess – popen2 er foreldet
- CRB-720
- object __init__ – Kall til object.__init__ med argumenter er frarådet
- CRB-719
- String exceptions – raise "string" er ikke lenger støttet
- CRB-723
- Fjern argparse frå extlib – argparse er en del av standardbiblioteket i PY27
- CRB-726
- M2Crypto – Vedlikehold av biblioteket M2Crypto er ikke ønsket
- lxml-modul
- Generell opprydding i bruk av xml/lxml vurderes
Det har blitt opprettet en egen branch for utvikling av disse endringene, origin/python-27-pseudo-master. Før migrasjon startes, bør endringer fra origin/master taes inn i denne branchen.
2 Sleggetest
Så snart et produksjonsmiljø er oppe å kjøre, vil vi ha mulighet for å sette i gang en «sleggetest». Dette er en test hvor vi kjører gjennom de vanligste batch-jobbene i Cerebrum, og sammenligner resultat.
Fremgangsmåten vil være relativ lik en lignende «sleggetest» som ble utført i forbindelse med overgang til GIT i første kvartal 2014. Dokumenter som beskriver fremgangsmåte og uførelse av «sleggetest» i forbindelse med denne migrasjonen ligger på UAIT sine aktivitets-sider.
2.1 Overordnet test
I praksis vil man utføre følgende:
- Sette opp miljø * Installere siste versjon av Cerebrum (branch origin/python-27-pseudo-master)
- Ta kopi av produksjonsdatabase * Konfigurere Cerebrum-installasjonen til å benytte database-kopi.
- Kjøre alle importer * Kun importer som ikke tilbakefører data til kildesystem. * Ingen jobber som sender ut e-post eller SMS.
- Kjøre alle eksporter * Ikke eksporter som kommuniserer direkte med målsystem
- Sammenligne eksporter med eksporter fra gammelt produksjonsmiljø
- Starte tjenester, verifisere at disse fungerer som forventet
3 Akseptansetest
Før overgang til nytt produksjonsmiljø, bør endringer i kode og miljø testes over en lengre periode for å luke ut eventuelle feil som har blitt oversett.
Dette kan gjøres ved å sette opp nytt produksjonsmiljø så langt som mulig, og la dette kjøre en periode, mens det holdes øye med logger.
Dette vil innebære:
- Sette opp miljø * Installere siste versjon av Cerebrum (branch origin/python-27-pseudo-master)
- Ta kopi av produksjonsdatabase * Konfigurere Cerebrum-installasjonen til å benytte database-kopi.
- Sette opp job_runner/scheduled_jobs til å kun kjøre jobber som ikke kommuniserer direkte med andre system. * Ingen importer som tilbakefører data til kildesystem * Ingen jobber som sender ut e-post eller SMS * Ingen jobber som gjør endringer i andre system (ad-sync i dry-run).
Arbeidet som gjøres med å sette opp akseptanse-test vil også kunne benyttes videre i et evt. oppsett av staging-miljø for Cerebrum.
4 Forslag
Ved overgang til nytt produksjonsmiljø, vil vi i praksis ha to miljøer kjørende parallellt. Inntil den endelige overgangen til nytt miljø, vil det gamle miljøet være gjeldene Cerebrum-miljø. Dette betyr:
- Inntil vi migrerer til nytt produksjonsmiljø, vil det nye produksjonsmiljøet være å anse som et testmiljø.
- Det nye testmiljøet vil kunne kjøre alle jobber som ikke påvirker andre system.
Videre vil «sleggetest», akseptansetest og en implisitt «smoke test» ha nok til felles til at disse kan utføres samtidig.
Dette kan utnyttes, og det foreslåes at vi setter opp et miljø med:
- Modifisert cereconf (ugyldig mail-tjener og sms-gateway)
- Begrenset passordtilgang (ingen passord til FS-database)
- Begrenset innloggingsmulighet (ingen ssh-nøkler til andre system)
- Modifisert scheduled_jobs (ingen jobber som endrer andre system)
Vi vil da kunne starte job-runner og kjøre alle gjenværende jobber parallellt med eksisterende produksjonsmiljø. Vi slipper da å vente på jobber, eller kjøre jobber manuelt for å skaffe testgrunnlag. Vi kan i stedet sammenligne eksport-filer fortløpende.
4.1 Kontroll av resultat
Ved differanse i eksport-filer, vil vi måtte undersøke årsak. Dersom jobber kjører med samme data-grunnlag skal ikke eksporter ha differanse.
4.2 Konfigurasjon
For å hindre utilsiktet utsending av e-post eller SMS, samt annen utilsiktet kommunikasjon med systemer, bør nytt produksjonsmiljø settes opp uten nødvendig informasjon til å utføre disse oppgavene.
4.2.1 SMS-utsending
Den enkleste måten å unngy utilsiktet utsending av SMS, vil være å sette en ugyldig SMS-gateway (SMS_URL) i cereconf.
SMS vil kunne sendes ut av bl.a. bofhd, send_welcome_sms, mm.
4.2.2 E-postutsending
Mange jobber forsøker å sende e-post. For å unngå utilsiktet utsending av e-post, kan man sette ugyldig SMTP_HOST i cereconf.
4.2.3 FTP/SSH/WinRM
For å unngå utilsiktet oppkobling mot eksterne system, bør det opprettes et nye nøkler for SSH-innlogging i de nye produksjonsmiljøene. Nøkkelen bør kun legges inn på maskiner som vi må snakke med i test.
Tilsvarende bør det ikke finnes brukernavn/passord for innlogging med WinRM mot AD-kontrollere som ikke skal benyttes under testing.
4.2.4 scheduled_jobs
For samtlige instanser, kan oversikten over jobber som ble benyttet i «sleggetest» våren 2014 benyttes. Det må sees over om nye jobber har blitt lagt til, eller gamle jobber har blitt tatt bort.
Oppdatert oversikt over jobber finnes for:
5 Migrasjon
Migrasjon vil kunne utføres når vi er sikre på at nytt produksjonsmiljø fungerer som forventet.
Overgangen vil medføre:
For UiO:
- Backup av produksjonsdatabase.
- Legge ut driftsmelding.
- Sette opp full konfigurasjon av nytt produksjonsmiljø.
- Stopp job-runner.
- Oppdater DNS-pekere til nytt miljø.
- Stopp bofhd.
- Kjør DNS-eksport.
- Stanse Service Guard-pakke.
- Oppdatere driftsmelding når DNS er oppdatert og nytt miljø er live.
For andre instanser:
- Backup av produksjonsdatabase.
- Legge ut driftsmelding.
- Sette opp full konfigurasjon av nytt produksjonsmiljø.
- Stanse Service Guard-pakke.
- Oppdater DNS-pekere til nytt miljø.
- Oppdatere driftsmelding når DNS er oppdatert og nytt miljø er live.
5.1 Instanser
Det foreslås at vi flytter en og en instans over i nytt produksjonsmiljø. Rekkefølgen er ikke fastslått, med det foreslås å starte med WebID, etterfulgt av UiO.
WebID er et godt startpunkt, da eventuelle feil ikke vil ha innvirkning på samarbeidspartnere, samt minst innvirkning av instansene på UiO.
UiO er en av de mer kompliserte instansene, og vil derfor kunne bidra til å oppdage eventuelle feil før vi fortsetter med instanser som driftes for samarbeidspartnere.
De resterende instansene vil kunne migreres fortløpende etter at eventuelle feil som blir oppdaget i løpet av testing og migrasjon har blitt rettet.
5.2 Tidsplan
For hver instans som migreres, bør testfasen startes minst tre dager før migrasjonen til nytt produksjonsmiljø utføres. Dette gir nok tid til å utføre en sleggetest av de største eksporter og importer, samt akseptansetest av den kjørende løsningen.
5.3 Estimert tidsbruk
Følgende tid er estimert brukt av èn drifter per instans. UAIT bør stille (minst) en utvikler per instans til disposisjon for å fikse eventuelle feil/utrede differanse på eksporter.
Overgang til nytt miljø for en instans:
>>> tpe = lambda a, m, b: (a + 4*m + b)/6.0 >>> tpe(3.875, 7.75, 15.5) 8.395833333333334
Sjekk for differanse i *LDIF etter SAP- og FS-import, samt differanse av DNS-eksport:
>>> tpe(2, 3, 5) 3.1666666666666665 >>>
I tillegg til estimater ovenfor kommer lesing av logg meldinger fra akseptansetesten. Dette er en oppgave som går løpende, og kan fortrinnsmessig bli utført av både drift og utvikling. 1 time per dag av akseptansetesten bør være nok til å utføre dette.