Innhold
1 Oversikt
Ved endring av hjemmeområde-relaterte verdier i Cerebrum kjøres script fra pakken reguser for å utføre oppretting, flytting, arkivering og sletting av filområder.
Dette skjer gjennom ulike batch-script som prosesserer oppgaver som har blitt lagt i kø i BofhdRequest.
1.1 BofhdRequest
BofhdRequest er en Cererbum-modul for køing av oppgaver. For å legge en oppgave i kø, vil det lagres en oppgave i tabellen bofhd_requests med en gitt oppgavetype, bofhd_request_code.
Disse oppgavene prosesseres regelmessig med scriptet contrib/no/uio/process_bofhd_requests.py. Hver oppgavetype er mappet til en oppgave som er implementert i dette scriptet.
Denne funksjonaliteten er utviklet for å:
- Starte oppgaver gjennom bofhd som skal kjøre etter ett gitt tidspunkt.
- Starte kostbare oppgaver (som kan utsettes til et senere tidspunkt) gjennom bofhd.
1.1.1 Konflikter
Det kan til enhver tid kun finnes en én oppgave med en gitt oppgavetype for en entitet. Skal det lages nye oppgaver av samme type for en entitet, må eksisterende oppgaver fjernes/prosesseres først.
Det finnes i tillegg logikk for å markere konflikter – dette for å f.eks. forhindre at arkivering av hjemmeområde feiler fordi man også har utført en oppgave som flytter dette hjemmeområdet.
1.2 reguser
Oppgaver relatert til hjemmeområder benytter en programvarepakke som er utviklet in-house, reguser. Denne pakken inneholder et sett perl-scripts som utfører flytting og arkivering av hjemmeområder, epostområder, samt filområder for Notes.
Se egen dokumentasjon for reguser.
Reguser kan hentes fra git://git.uio.no:usit-reguser, og bør plasseres på cerebellum:/site/git/usit-reguser.
Oppgave-implementasjonen for arkivering av hjemmeområde benytter ssh til å logge inn på en jump-host som har denne pakken installert. Etter innlogging, kjøres scriptene fra pakken for å administrere ulike filområder.
1.2.1 Arkivering
Scriptet for å arkivere hjemmeområder sørger for arkivering/backup av hjemmeområder, samt sletting. Scriptet er ikke tilpasset slik at man har mulighet til å slette hjemmeområde uten å ta backup, eller ta backup av hjemmeområde uten å slette.
2 Oppgaver relatert til reguser
2.1 Arkivering
Det er to BofhdRequest-oppgaver som forårsaker arkivering: archive user og delete user. Begge oppgavene går under kategorien delete, og prosesseringsscriptet må kjøres med opsjonen -p|--process, og enten ingen -t|--type eller -t|--type delete for å kjøre disse.
Begge oppgavene vil forårsake kjøring av kommandoen:
/usr/bin/ssh <exec-user>@<exec-host> \
sudo <rmscript> --username <username> --deleted-by <operator> \
--homedir <home --generation <gen>
med verdiene
- rmscript
Verdi fra cereconf.RMUSER_SCRIPT, typisk delete_user (se reguser).
Verdi: /site/git/usit-reguser/delete_user
- username
- Brukeren som skal få hjemmeområde arkivert
- operator
- Brukeren som har initiert sletting/lag oppgaven i kø for BofhdRequest. Brukes ved logging fra arkiveringsscript.
- home
- Disk og katalog til hjemmeområdet som skal arkiveres.
- gen
- En teller (registrert på brukeren <username>) som indikerer hvor mange ganger brukeren har fått sitt hjemmeområde arkivert. Brukes for å indeksere arkiv.
- mail-server
- Brukt før overgang til Exchange, for arkivering av mailbox. Sendes ikke lenger med.
2.1.1 Archive user
- Konstant
- Constants.bofhd_archive_user
- Implementasjon
Oppgaven er implementert i process_bofhd_requests.py/proc_archive_user(), og gjør minimalt vedlikehold på bruker:
- Kjører arkivering av hjemmeområde
- Inkrementerer generation-trait (backup/arkiv-teller).
- Markerer hjemmeområde som arkivert
- Request
Oppgaven vil legges i kø ved:
- Manuell frigjøring av gjestebruker
- Bofh-kommandoen user release_guest vil legge oppgaven archive user i kø for gjestebrukere.
- Automatisk frigjøring av gjestebruker
- Scriptet config/bin/uio/release_guests.py går gjennom gjestebrukere, og legger oppgaven archive user i kø for gjestebrukere som skal gjøres tilgjengelig. Scriptet gjøres regelmessig.
- Manuell kjøring av gamle scripts
Scriptet hacks/uio/OLD/archive_guest_user.py legger oppgaven archive user i kø for angitt bruker. Ikke i bruk.
Scriptet uio/OLD/force_guest_release.py rydder i gamle gjestebrukere, og sørger for at disse blir gjort ledige – og kan legge oppgaven archive user i kø. Ikke i bruk, erstattet av script for automatisk frigjøring av gjestebrukere.
2.1.2 Delete user
- Konstant
- Cerebrum.modules.bofhd.utils.Constants.bofh_delete_user
- Implementasjon
Oppgaven er implementert i process_bofhd_requests.py/proc_delete_user(), og gjør samme vedlikehold på bruker som archive user, samt:
- Sender med epost-tjener til arkiveringsscript, slik at dette har mulighet til å arkivere mailbox (ikke brukt etter overgang til Exchange).
- Oppdaterer/setter expire_date på bruker
- Fjerner spreads på bruker
- Sørger for at bruker har en default filgruppe som har samme navn som brukeren
- Melder bruker ut av alle grupper (bortsett fra dfg)
- Request
Oppgaven legges i kø ved:
- Rutineavvikling av bruker
- Scriptet deactivate_quarantined_accounts.py vil legge oppgaven delete user i kø for brukere som skal avvikles. Scriptet kjører regelmessig.
- Manuell avvikling av bruker
- Bofh-kommandoen user delete vil legge oppgaven delete user i kø for en bruker.
- Manuell kjøring av gamle scripts
- Scriptet hacks/uio/delete_inactive_users.py legger oppgaven delete user i kø for brukere med gammel auto_inaktiv-karantene. Ikke i bruk, erstattet med script for rutineavvikling av brukere.
2.1.3 Epost-arkivering
Det finnes også en egen oppgave for arkivering av Cyrus-postboks for bruker.
Oppgaven vil forårsake kjøring av kommandoen:
TODO
/usr/bin/ssh <exec-user>@<exec-host> \
sudo <cyrusscript> <server> <username> <gen>
med verdiene
- cyrusscript
Verdi fra cereconf.ARCHIVE_MAIL_SCRIPT.
Verdi: /site/cerebrum/reguser/bin/archivemail
- server
- Cyrus-tjener som har mailbox for brukeren.
- username
- Brukeren som skal få mailbox arkivert
- gen
- En teller (registrert på brukeren <username>) som indikerer hvor mange ganger brukeren har fått sitt hjemmeområde/mailbox arkivert. Brukes for å indeksere arkiv.
- Konstant
- Cerebrum.modules.bofhd.utils.Constants.bofh_email_delete
- Implementasjon
Oppgaven er implementert i process_bofhd_requests.py/proc_email_delete(), og gjør:
- Oppdaterer generation-trait
- Kjører arkiveringsscript
- Kobler opp mot cyrus-host som inneholder mailbox for brukeren og sletter mailbox-kataloger.
- Request
- Oppgaven legges i kø ved sletting av IMAP-spread på bruker.
2.2 Flytting
Det er tre BofhdRequest-oppgaver som forårsaker flytting: move user, move user now og move student.
Alle tre oppgavene går under kategorien move, og prosesseringsscriptet må kjøres med opsjonen -p|--process, og enten ingen -t|--type eller -t|--type move for å kjøre disse.
move user og move user now vil forårsake kjøring av kommandoen:
/usr/bin/ssh <exec-user>@<exec-host> \
sudo <mvscript> <username> <uid> <gid> \
<old> <new> <spread> <mailto> <move_mail>
med verdiene
- mvscript
Verdi fra cereconf.MVUSER_SCRIPT, typisk mvuser (se reguser).
Verdi: /site/cerebrum/reguser/bin/mvuser
- username
- Navn på brukeren som skal få hjemmeområde flyttet.
- uid
- UID for brukeren som skal flyttes.
- gid
- GID for brukeren sin filgruppe.
- old
- Disk og katalog for det nåværende hjemmeområdet til brukeren.
- new
- Disk og katalog som hjemmeområdet skal flyttes til.
- spread
- NIS-spreads som brukeren har.
- mailto
- Brukernavn for brukeren som setter i gang flytting.
- move_mail
- Hardkodet til 0.
2.3 Move user (now)
- Konstanter
- Cerebrum.modules.bofhd.utils.Constants.bofh_move_user
- Cerebrum.modules.bofhd.utils.Constants.bofh_move_user_now
- Implementasjon
Oppgavene er implementert i process_bofhd_requests.py/proc_move_user(), og gjør:
- Kjører script for flytting av bruker
- Oppdaterer hjemmeområde for bruker i Cerebrum
- Request
Oppgaven legges i kø ved:
- Studentautomatikk
Scriptet contrib/no/uio/process_students.py vil legge oppgaven move user i kø dersom tilknytning tilsier at studenten skal ligge på en ny disk.
TODO: Det er også en bofh_move_student-type, men denne forårsaker bare opprettelse av bofh_move_user?
- Manuell flytting av bruker
- Bofh-kommandoen user move vil legge oppgaven move user i kø for en bruker.
2.4 Move student
- Konstanter
- Cerebrum.modules.bofhd.utils.Constants.bofh_move_user
- Cerebrum.modules.bofhd.utils.Constants.bofh_move_user_now
- Implementasjon
- Oppgaven er implementert i process_bofhd_requests.py/process_move_student_requests(), og oppretter nye move user-oppgaver basert på informasjon fra studentautomatikk.
3 Oppretting
Oppretting av hjemmeområder skjer ikke gjennom BofhdRequest, men gjennom et eget script, contrib/no/uio/process_changes.py.
Dette scriptet kjøret jevnlig og ser etter nye brukere. Dersom en ny bruker har blitt opprettet, vil scriptet forsøke å kjøre kommandoen:
/usr/bin/ssh <exec-user>@<exec-host> \
sudo <script> <username> <home> <uid> <gid> "<gecos>"
med verdiene
- script
Verdi fra cereconf.CREATE_USER_SCRIPT.
Verdi: /site/cerebrum/reguser/bin/adduser_wrapper
- username
- Navn på brukeren som skal få hjemmeområde.
- home
- Disk og katalog for det nye hjemmeområdet.
- uid
- UID for brukeren.
- gid
- GID for brukeren sin filgruppe.
- gecos
- Brukeren sine gecos-felt.
- Implementasjon
- Oppgaven er implementert i process_changes/MakeUser._make_user().