Arpmats System Architecture

General Overview

The Arpmats system consists of the following major components:

  • A Server: keeps track of which packages belong to which machines and the like.
  • A Client: updates the node as specified by the server
  • A Management interface: This php & web-based interface allows you to add new packages to classes, and the like.

Component details

  • arpmats-common: A perl library which is required by both the server and the client
  • arpmats-server: The server-site requirements, including:
    • A database which matches packages to cfengine classes
    • setarp: A database creation script (with associated files)
    • arpdate_db: A script to update the database from the Repository client
    • arpmats.hourly: A repository-update script which:
      • Runs arpdate_db
      • Runs hourly in cron
  • arpmats-client: Contains two scripts:
    • rh_ifsetup: Sets up sub-interfaces under Redhat (actually, anything that supports /etc/sysconfig/network-scripts/ifcfg-eth0-range0)
    • arpdate_node: A node-update script, currently written in perl, which needs to be translated into cfengine (I think). It:
      • Investigates which packages are currently on the system
      • Compares this with the list of packages in the database which should be on the system
      • Fetches the appropriate packages from the Repository Client driver
      • Installs the appropriate packages
      • Removes inappropriate packages (but no more than 10, just to be safe; safety improvements welcome)
      • Runs hourly (at least)
  • Various Package Manager drivers
    • Interfaces with the package manager; currently only supports RPM (needs dpkg support)
  • Various Repository Client drivers
    • Interfaces with the Repository Client; currently only supports up2date (which works on Fedora by using yum)
  • arpmats-testing: contains testing functions for all the other packages

Arpmats Project