Link Search Menu Expand Document

Solutions Automation Cheat Sheet

Classical Automation Tools

FrameworkDSLPush/PullCMCM EncryptionDrift ManagementJob SchedulingOrchestration
AnsiblePropietaryPushBuilt-inBuilt-in?Ansible TowerAnsible Tower
cfenginePropietaryPush/Pull???Enterprise Only?
PuppetRubyPush/PullHieraHiera EyamlForeman, PuppetDB, PolscanPuppet EnterprisePuppet Enterprise, mcollective
ChefRubyPush/PullBuiltinBuiltin-Pushy, (knife plugin + ZeroMQ)%
SaltstackPythonPushBuiltinBuiltin?salt-runSaltstack Enterprise

Smaller automation tools

  • Bcfg2: Alternative to puppet and cfengine by Argonne National Laboratory. (IMO out-dated)
  • cdist: configuration with shell scripting
  • EMC UIM
    • Unified Infrastructure Manager, VCE VBlock (enterprise, commercial)
  • slaughter (Perl, active, small user base)
  • Sprinkle (Ruby, quite recent)
  • Rundeck - Workflow manager for node - role systems like EC2, chef, puppet …
  • IBM Tivoli

Finally it is worth to check the Wikipedia Comparison Chart for other less known and new tools!

Automation Drift Management

Testing

Misc

  • Augeas: Very flexible file editor to be used with Puppet or standalone. Could also work with cfengine.

    $ augtool
    augtool> set /files/etc/ssh/sshd_config/PermitRootLogin no
    augtool> save
    
  • cfengine - Force running shortly after a recent execution

    cfagent -K
    
  • cfengine - Design Center: Git repository with sketches and examples for cfengine.
  • cfengine - Find and install sketches from the Design Center repository

    # cf-sketch --search utilities
    Monitoring::nagios_plugin_agent /tmp/design-center/sketches/utilities/nagios_plugin_agent
    [...]
    # cf-sketch --install Monitoring::nagios_plugin_agent
    
  • SaltStack - Run commands

    salt '*' cmd.run 'apt-get install bash'
    
  • SaltStack - Batch concurrency

    salt '*' state.highstate -b <count>
    
  • osquery - Facebook SQL facter

    echo "SELECT * FROM etc_hosts;" | osqueryi
    
    $ osqueryi
    osquery> SELECT
        ...> u.username,
        ...> g.groupname
        ...> FROM users as u
        ...> JOIN groups as g ON u.gid = g.gid;