Some thoughts on GOsa

At $WORK I've been setting up a server for a new project. It's going to be the foundation for a bunch of work that they're doing: bag o' passwords, code repository, website + wiki, email. I've been trying to set it up in such a way that a) it'll be a good foundation and b) it'll be easy for them to manage -- at least when it comes to adding/deleting/modifying users, email addresses and so on -- rather than having to come to me every time something needs changing.

I set up CentOS Directory server and populated it with the root and a few entries. Thus: cn=Me,ou=People,dc=example,dc=org. I've got authentication working, restricted to certain groups where necessary, and now it's time for me to think about how the non-propellerheads are going to manage accounts. That means a web front end, and I've been evaluating GOsa for the last week or so.

The good:

The bad:

* Some plugins depend on others, but this isn't shown anywhere.
  When I tried to remove the RPMs for some that I wouldn't need, I
  found that others I _did_ need failed.  If it should _all_ be
  installed, I couldn't find that documented anywhere.

* Allowing people to log in to GOsa and change certain details is
  important for me, but is documented poorly in the [ACLs
  page][2].

* But also, ACLs can be applied only to items GOsa recognizes as
  Departments (ie, `objectClass=gosaDepartment` and/or possibly
  `objectclass=gosaAdministrativeUnit`).  And you can't tell GOsa
  that `ou=People` is one of these; it complains and says that's a
  reserved keyword.

* The `gosa.conf` config file refers you to the manpage, but that
  doesn't appear to be included in the RPMs I downloaded.  The
  [wiki page][6] on the file refers you to the [raw man page in
  the source tree][7].

* It looks like vacation settings depend on an LDAP-enabled
  vacation responder like [Gnarwl][3]; this is cool, but wasn't
  documented anywhere.  The only place I found this mentioned was
  on [this blog entry][4], which contained a lot of other info
  (like how to set Postfix up; yes, I shoulda RTFM but I didn't
  know that Postfix could grab so much info out of LDAP) that I
  didn't find on the GOsa website.  In fact, that blog entry was
  probably the best source of info about GOsa configuration.

* Adding email information for people requires a GOsa-specific
  LDAP entry for a mail server; again, this is best documented in
  [that blog entry][4].

Taking the the ou=People ACL example above as a starting point, GOsa wants to create its own department entries in your root: ou=Accounting (say), with ou=Groups and ou=People under that. I have mixed feelings about this organization; it would work well for my current employer, but I'm not sure how well it'll fit for this side project.

(For the record, here's what I had to do:

    $ wget http://directory.fedoraproject.org/download/ol-schema-migrate.pl
    $ for i in $(grep 'schema/gosa' /usr/share/doc/gosa/slapd.conf-example | sed -e's/ldap/openldap/' | awk '{print $2}') ; do echo ../ol-schema-migrate.pl -b $i >>  98gosa.ldif; done

And then remove references to gosaLoginRestriction and goFaxDivertNumber.)

Overall, I'm not sure how happy I am with GOsa. It's not doing what I want now, and it looks like the only way to make that happen is to wipe the tree and start from scratch. -- Well, no, not scratch: create a GOsa-visible department (ou=Something) and stick everything in there. Given the sparse documentation, it's probably silly for me to focus on that, but that's what sticks out at me right now.