1. 02 Jul, 2002 4 commits
  2. 19 Jun, 2002 5 commits
  3. 06 Jun, 2002 3 commits
  4. 31 May, 2002 6 commits
  5. 21 May, 2002 1 commit
  6. 08 May, 2002 1 commit
    • Leigh B. Stoller's avatar
      Support for vnodes, plus some other changes: · 386c2778
      Leigh B. Stoller authored
      1) Merge in the accounts code that I did for ron. Instead of resetting
         the password file on each reboot, look at the node status to
         determine if the password/group file should be reset. If the
         node is free, reset it. Otherwise, we track changes to the password
         and group file now, so that users can change it and not have their
         changes wiped out at each reboot. I had to do this for the ron
         nodes so that the testbed software would not alter or delete
         already existing accounts; I keep a couple of little dbm files
         listing all the accounts/groups added. The only downside right now
         is if a node is reallocated before it is wiped clean; I plan to add
         an os_teardown phase to experiment termination asap.
      2) Add tunnels support. New DB table (tunnels) provides information
         for running vtund to link up to remote nodes. Creates a vtund.conf
         file on the fly, and fires them off. The complication is that you
         cannot do the ifconfigs or the routes until the tunnels are
         connected, so that stuff has to be configured within the vtund.conf
         file on a per tunnel basis. vtund.conf has some sections for
         running commands when tunnels are brought up or down.
      3) Damage the routing configuration code that Mike did. To support
         tunnels, as noted above, rc,route is no longer a simple list of
         commands, but a program that adds/dels routes based on the netmask,
         with a special "enable" section for the other stuff. This allows me
         to call it from vtund.conf for up/down on each tunnel'ed
         interfaces, as needed. Quite gross, but no way around it.
      4) For remote nodes, add a vnodesetup script, invoked from boss when
         experiments are setup/torndown. This gets the tunnel/route/trafgen
         configuration and runs them. It then goes into the background
         waiting for a death signal, at which time it brings them down and
         cleans out the vnode state.
  7. 01 Apr, 2002 2 commits
    • Leigh B. Stoller's avatar
      Minor fixes and cleanups. · 9253e03b
      Leigh B. Stoller authored
    • Leigh B. Stoller's avatar
      First cut at supporting RON (or more generally, remote nodes). · bd587829
      Leigh B. Stoller authored
      * tmcd/ron: A new directory of client code, based on the freebsd
        client code, but scaled back to the bare minimum. Does only account
        and group file maintenance. I redid the account stuff so that only
        emulab accounts are operated on. Does not require a stub file, but
        instead keeps a couple of local dbm files recording what groups and
        accounts were added by Emulab. There is a ton of paranoia checking
        to make sure that local accounts are not touched.
        The update script that runs on the client node detaches so that the
        ssh from boss returns immediately. update can also be run from the
        node periodically and at boottime. The script is installed setuid
        root, but checks to make sure that *only* root or "emulabman" has
        invoked it.
      * utils/sshremote: New file. For remote nodes, instead of using sshtb,
        use sshremote, which ssh's in as "emulabman", which needs to be a
        local non-root user, but with an authorized_keys file containing
        boss' public key.
      * web interface changes: Allow user to specify his own public key in
        addition to the emulab key.
        Add option in showexp page to update accounts on nodes in the
        experiment. I was originally intending to do this from approveuser,
        but this was easier and faster. I will add an option to do it on the
        approveuser page later.
      * libdb.pm: Add a TBIsNodeRemote() query to see if a node is in the
        local testbed or a pcRemote node. Currently, this test is hardwired
        to a check for class=pcRemote, but this will need to change to a
        node_types property at some point.
      * node_update: Reorg so that there is a maximum number of children
        created. Previously, a child was forked for each node, but that
        could chew up too many processes, especially for remote nodes which
        might hang up. For the same reason, we need to "lock" the experiment
        so that it cannot be terminated while a node_update is in progress.
        Might be to relax that, but this was easy for now. Also add
        distinction between local and remote, since for remote we use
        sshremote insted of sshtb. Various cleanup stuff
      * mkacct; When generating a new account, include user supplied pub key
        in the authorized keys file, in addition to the eumlab generated
        key. Both keys are stored in the DB in the users table. Anytime we
        update an account, get a fresh copy of the emulab pub key, in case
        user changes it.