Trigger

“Go ahead, pull it!”

About

Trigger is a Python framework and suite of tools for interfacing with network devices and managing network configuration and security policy. Trigger was designed to increase the speed and efficiency of network configuration management.

Trigger’s core device interaction utilizes the freely available Twisted event-driven networking engine. The libraries can connect to network devices by any available method (e.g. telnet, SSH), communicate with them in their native interface (e.g. Juniper JunoScript, Cisco IOS), and return output. Trigger is able to manage any number of jobs in parallel and handle output or errors as they return.

Motivation

Trigger was created to facilitate rapid provisioning and automation of firewall policy change requests by Network Security. It has since expanded to cover all network device configuration.

The complexity of the network was increasing much more quickly than the amount of time we had to spend on administering it, both because AOL’s products and services were becoming more sophisticated and because we were continually expanding infrastructure. This pressure created a workload gap that had be filled with tools that increased productivity.

Pre-Trigger tools worked only for some common cases and required extensive knowledge of the network, and careful attention during edits and loads. Sometimes this resulted in a system-impacting errors, and it routine work more dangerous and unrewarding than it should have been.

With the high number of network devices on the AOL network Trigger has become invaluable to the performance and reliability of the AOL network infrastructure.

History

Trigger was originally originally written by the AOL Network Security team and is now maintained by the Network Engineering organization.

Once upon a time Trigger was actually called SIMIAN, a really bad acronym that stood for System Integrating Management of Individual Access to Networks. It has since outgrown its original purpose and can be used for any network hardware management operations, so we decided to ditch the acronym and just go with a name that more accurately hints at what it does.

Supported Vendors

Trigger currently supports devices manufactured by the following vendors:

  • Arista Networks
    • All 7000-family platforms
  • Brocade Networks
    • MLX routers and VDX switches
  • Cisco Systems
    • IOS-based platforms only including all Catalyst switches and GSR/OSR routers
  • Dell
    • PowerConnect switches
  • Foundry/Brocade
    • All router and switch platforms (NetIron, ServerIron, et al.)
  • Juniper Networks
    • All router and switch platforms running Junos
    • NetScreen firewalls running ScreenOS (Junos not yet supported)
  • Citrix Systems
    • NetScaler web accelerator switches (SSH only, no REST/SOAP yet)

Installation

To install Trigger, please check out the installation docs!

Configuration

This is a work in progress, but it’s not a bad start. Please have a look and give us feedback on how we can improve!

Documentation

Please note that all documentation is written with users of Python 2.6 in mind. It’s safe to assume that Trigger will not work properly on Python versions earlier than Python 2.6.

For now, most of our documentation is automatically generated form the source code documentation, which is usually very detailed. As we move along, this will change, especially with regards to some of the more creative ways in which we use Trigger’s major functionality.

Tutorial

Coming Soon.

Usage Documentation

Once you’ve properly installed Trigger, you might want to know how to use it. Please have a look at the usage documentation!

FAQ

You guessed it: Coming Soon.

Change Log

Please review the Changelog.

Contributing

Any hackers interested in improving Trigger (or even users interested in how Trigger is put together or released) please see the Trigger Development page. It contains comprehensive info on contributing, repository layout, our release strategy, and more.

Getting Help

If you’ve scoured the Usage and API documentation and still can’t find an answer to your question, below are various support resources that should help. Please do at least skim the documentation before posting tickets or mailing list questions, however!

Mailing list

The best way to get help with using Trigger is via the trigger-users mailing list (Google Group). We’ll do our best to reply promptly!

Twitter

Trigger has an official Twitter account, @pytrigger, which is used for announcements and occasional related news tidbits (e.g. “Hey, check out this neat article on Trigger!”).

Email

If you don’t do Twitter or mailing lists, please feel free to drop us an email at pytrigger@aol.com.

Bugs/ticket tracker

To file new bugs or search existing ones, please use the GitHub issue tracker, located at https://github.com/aol/trigger/issues.

IRC

IRC coming Soon™.

Wiki

We will use GitHub’s built-in wiki located at https://github.com/aol/trigger/wiki.

License

Trigger is licensed under the Clear BSD License which is based on the BSD 3-Clause License, and adds a term expressly stating it does not grant you any patent licenses.

For the explicit details, please see the License page.

Indices and tables