# Usage

by Joel Aufrecht

Here's the entire chain of code used to set up auto-rebuilding servers on test.openacs.org

- The master server shows the status of all other servers. For test.openacs.org, it listens on port 80.

  1. The acs-automated-testing parameter `IsInstallReportServer` is set to 1

  2. The acs-automated-testing parameter `XMLReportDir` is set to `/var/log/openacs-install`. This is arbitrary - it just needs to be somewhere all the servers can write to.

- For each server that will be monitored:

  1. Suppose the first test server is service1. Set up a dedicated user and automated install script.

  2. To run automated testing automatically each time the server is rebuilt, add this to /home/service1/install/install.tcl:

                set do_tclapi_testing "yes"

  3. Get the results of the automated tests dumped where the master server can see them - in this example, the same directory as above, `/var/log/openacs-install`, by adding this to install.tcl (requires 5.1):

                   set install_xml_file          "/var/lib/aolserver/service0/packages/acs-core-docs/www/files/install-autotest.xml"

     This will copy in the file `install-autotest.xml`:

         example missing

     which will, during install, configure that parameter in acs-automated-testing on the monitored server.

- To enable the 'rebuild server' link, edit the file /usr/local/bin/rebuild-server.sh:

      #!/bin/sh
      # script to trigger a server rebuild

      # hard-coding the valid server names here for some minimal security
      case $1 in
          service1) ;;
          service2) ;;
         "") echo "Usage: $0 servername"
              exit;;
          *) echo "$1 is not a permitted servername"
             exit;;
      esac

      sudo /home/$1/install/install.sh 2>&1

  and allow the `master` user to execute this file as root (this is a limitation of the automatic install script, which must be root). In `/etc/sudoers`, include a line:

      master ALL = NOPASSWD: /usr/local/bin/rebuild-server.sh