Giter VIP home page Giter VIP logo

appetite's Introduction

Appetite

Extensible services (i.e. Splunk, JIRA) have an ever growing list of apps (includes plugins and add ons). Managing these apps can be a mess and only gets worse with complexity. Appetite is a solution that answers the following questions:

  1. Who and when did they install the app?
  2. What version of the app was installed?
  3. Did the app actually get installed?

Appetite was originally designed to deploy applications in Splunk. It fortuitously started to become more than a Splunk tool and ultimately evolved into becoming a standalone application which can be used ubiquitously across the entire environment.

Why

For app deployments you typically would use a generic automation tool (chef, puppet, etc). As the environment becomes more complicated the management of configurations with these tools becomes a major (major) pain. These generic tools are like swiss army knives - they can do many different things but are the wrong tool for surgery. A precision tool is needed that does just app deployments very well. Appetite was created as that precision tool.

Appetite was presented at Splunk .conf 2016 under the session title Unified Open-Sourced Splunk Configuration Management System.

Slides

Recording

What is it?

Appetite is a python based application that is used for generic app deployment. Here are some of the features:

  • Agentless system utilizing a remote server.
  • Locks app versions and audits distribution.
  • Leverages existing app deployment methods (if specified) and introduces version and tracking meta data.
  • Apps are referenced in a manifest file. This file is considered the source of truth for the service.
  • Plugin deployments are done under the hood and the user doesn't need to know the specifics of how they are deployed.
  • Changing, Adding, and Removing applications are handled automatically.
  • Install and update ordering though groups and sites.
  • Template variables in files within the app.
  • Everything is logged...! This enables end-to-end validation.

How it works

  1. Monitors manifest changes from repo

    The git log is checked for manifest changes. If changes are found then Appetite is triggered.

  2. Compares application versions for each host

    The manifest is broken down to apps per host. This is then compared to a manifest of current apps on the specified host.

  3. Creates host specific install payloads

    Based on the manifest breakdown, apps are copied into a compressed payload package along with metadata.

  4. Copy payload to host

    The host payload is moved to the host machine

  5. Run supplemental command (if given)

    Run commands that need to happen before the install.

  6. Installs, upgrade, or delete app

    Based on the deltas logic, apps are deleted first, then changes and adds are applied.

  7. Run supplemental command (if given)

    For some installs the service might need extra command to run/deploy the apps. These are gathered intelligently to call the minimal set of commands.

  8. Restart service if needed

    If the service needs to be restarted to recognize the app, then restart the service.

Bon-appetite

Accompanying Appetite Splunk Application to parse and analyze Appetite logs. It was written specifically to visualize applications for a Splunk environment, but can be easily modified to visualize deployments for other applications.

Supporting Documents

TODO

  • Build ability to test ssh connections and app deployment on machines (locally).
  • Add base test class that defines common helper methods and any common setup.
  • Update module file names to follow PEP 8 standards (all lowercase with underscores - https://www.python.org/dev/peps/pep-0008/#package-and-module-names)
  • Add check for corrupted git repos (failed pulls).

License

Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0 See LICENSE.

appetite's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.