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
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.
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
.
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
|
Run the integration test suite to see what drivers are supported on a platform. See the documentation’s TESTING.txt for details.
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.
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.
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.