AutomateIt - Open source server automation
  • Home
  • About
  • Compare
  •  
  • Screenshots
  • Tutorial
  • Documentation
  • Compatibility
  • Download
  •  
  • Community
  • Contact
  • Credits
  • Changes

AutomateIt compatibility

AutomateIt works on most server platforms. However, some special-purpose AutomateIt features require the presence of platform-specific features. This page describes the platforms and features supported by AutomateIt.

Topics

  • Platform-specific drivers
  • Driver availability
  • Cross-platform drivers
  • Determining driver availability
  • Writing drivers
  • Workarounds for missing drivers
  • Future plugins

Platform-specific drivers

For example, the ServiceManager plugin provides a high-level interface for manipulating services (“daemons”). A SysV driver helps start and stop services on all SystemV-style Unix variants, while the Chkconfig driver for RedHat-style platforms provides additional features to help enable and disable services that start on boot.

Driver availability by platform for AutomateIt 0.80116

AutomateIt provides support for many platform-specific drivers, and more are being developed:

AutomateIt driver availability
Platform Tested? Account Address Package Platform Service
Ubuntu Yes Linux Linux APT LSB UpdateRCD
Fedora Yes Linux Linux YUM LSB Chkconfig
Debian Yes Linux Linux APT Debian UpdateRCD
CentOS Yes Linux Linux YUM LSB Chkconfig
RedHat Yes Linux Linux YUM LSB Chkconfig
Gentoo Yes Linux Linux Portage Gentoo RC_Update
Solaris Yes SunOS SunOS [N/A] SunOS SYSV*
FreeBSD Yes Portable* FreeBSD [N/A] FreeBSD [N/A]
OpenBSD Yes Portable* OpenBSD [N/A] OpenBSD [N/A]
Mac OS X Yes Portable* [N/P] Portable* [N/P] [N/P] Darwin [N/P]
Windows Yes [N/P] Portable* [N/P] [N/P] Windows [N/P]
Java Yes Uses underlying platform’s drivers
Key:
* = Available now, but with limited features
[N/A] = Not yet available, but planned for version 1.0
[N/P] = No additional support planned for version 1.0

Reading the table: For example, Ubuntu has been tested and includes full-featured plugins for Account, Address, Package, Platform and Service. In contrast, Solaris has been tested, includes a feature-complete Platform and Account driver, but uses the limited-feature driver for managing Services, and has no way to manage Solaris-specific packages yet.

Technical information about specific drivers can be found in the Documentation. For example the Service plugin driver for Chkconfig will be documented as AutomateIt::ServiceManager::Chkconfig.

Cross-platform drivers

AutomateIt provides various cross-platform drivers:

Plugin Drivers
Package
  • Gem: Ruby libraries
  • Egg: Python libraries
  • PEAR: PHP libraries
  • PECL: PHP libraries
Account
  • Etc: Parses /etc entries on Unix-like platforms
  • PasswdPTY: Changes passwords using Ruby's pty
  • PasswdExpect: Changes passwords using TCL's expect
  • NSCD: Manages cache of user and group entries
Shell
  • Portable: Provides Unix-like shell commands
  • Link and Symlink: Provides Unix-like ln command
  • Which: Provides which on Unix-like platforms

Determining driver availability

Run the integration test suite to see what drivers are supported on a platform. See the documentation’s TESTING.txt for details.

Writing drivers

If no driver is available, it’s easy to write one. Most drivers can be written in less than an hour. Custom-written drivers are placed into your project’s lib directory and will be loaded automatically — there’s no need to fork AutomateIt’s source code. For technical details, see the AutomateIt::Plugin::Driver technical documentation.

Workarounds for missing drivers

If you don’t want to write a driver, there are simpler alternatives available. For example:

  • Manually define tags: AutomateIt adds an ubuntu tag when running on Ubuntu, but can’t add tags for Obscurix, an unsupported platform. To workaround this, edit the tags.yml file and tag the matching hosts with obscurix.
  • Directly run low-level tools: Run commands from recipes using sh, system or `backticks` from your recipe. This isn’t pretty, but will get the job done. Be sure to add logic to your custom commands so they can be previewed.
  • Extract reusable code into methods: Even if you don’t write a driver, use a method to encapsulate logic. So rather than writing a new package manager driver, you can just write a simple method — e.g., def obscurix_install(packages) — that includes the system commands to run the low-level tools. This will make recipes more maintainable and easier to change over to drivers.

Future plugins

Plugins that might be implemented in the future:

  • ScheduleManager — Manipulates regular command execution schedules, e.g., cron.
  • TransferManager — Transfers files from some source, e.g., rsync, sftp, http.
  • SourceManager — Manipulates source control systems, e.g., svn, cvs, hg.

Copyright © 2007-2009 Igal Koshevoy. Legal.