Computer Club DNS uses the djbdns DNS server. The DNS record data for this program is stored in a format which is documented at http://cr.yp.to/djbdns/tinydns-data.html . Some info about our configuration is located at https://wiki.club.cc.cmu.edu/org-auth/ccwiki/Services/Club%20DNS
The Computer Club DNS record data lives in /afs/club.cc.cmu.edu/service/dns . This is a clone of a git repository which lives in /afs/club.cc.cmu.edu/git/service/dns . Both of these directories require an administrator AFS token for write access.
IDEALLY: You should make changes to the DNS by first making your own clone of the master branch of /afs/club.cc.cmu.edu/git/service/dns in a personal directory, making and committing changes in that clone, pushing those commits to /afs/club.cc.cmu.edu/git/service/dns , and then pulling those commits down in the /afs/club.cc.cmu.edu/service/dns directory. Ideally, a step by step guide to this process would follow.
IN REALITY: Getting an administrator AFS token wipes out your regular AFS token, so you lose acces to your homedir! So you have to clone and push from /tmp! FFS! That's a horrible inconvenience! A step by step guide to just editing DNS in-place and ignoring the git-based workflow follows. (Alternatively use the git-based workflow, put the repo in your home directory, and fs sa gitrepo youradminprincipal write)
Step 1
cd /afs/club.cc.cmu.edu/service/dns
kinit $USER/admin@CLUB.CC.CMU.EDU
aklog CLUB.CC.CMU.EDU
Step 2
Now find what you want to do in this section and do that "Step 2". These instructions use tinydns-edit because it validates your changes, makes them atomic, prevents duplicate records, etc. etc.
Step 2A
I made a new machine that I want to add
I want to change what a given IP is associated with
I want to configure an IP that has never been configured before
This will add both an A (forward) record and PTR (reverse) record.
# NAME = the name of the new machine
# IP = the IP of the new machine
# this will remove the old host record
sed -i "/^=.*:$IP:.*/d" DB.club.cc.cmu.edu
./tinydns-edit DB.club.cc.cmu.edu DB.club.cc.cmu.edu~ add host $NAME.club.cc.cmu.edu $IP
Step 2B
I want to add a new A record pointing at an IP address that was already configured
I want to add another virtual host to my webserver
I don't really know what I'm doing, I just want to point a domain name at an IP
This will add just an A (forward) record.
./tinydns-edit DB.club.cc.cmu.edu DB.club.cc.cmu.edu~ add alias $NAME.club.cc.cmu.edu $IP
Step 2C
I want to add MX records.
I am a smart person who wants to do something not listed.
Well, do it yourself, I'm sure you know how. Consider using tinydns-edit, check out its man page: http://manpages.ubuntu.com/manpages/trusty/man8/tinydns-edit.8.html
Step 3
# review the changes for sanity
git diff
git add DB.club.cc.cmu.edu
# change the commit message to be appropriate of course
git commit -m "I did something"
git push