Giter Site home page Giter Site logo

patchbot's Introduction

PatchBot - Zero Touch Packaging and Patch Management

PatchBot is a software system for providing up to date applications across a Mac fleet. It leverages AutoPkg, the JAMF patch management system, and Jamf API to build a total solution where applications are provided to the fleet without human intervention.

It is described in a number of blog posts:

You no longer need to alter the .pkg recipe override. Details on running JPCImporter as an AutoPkg post processor are at https://macintoshguy.wordpress.com/2020/07/31/patchbot-update/

You can find the components in three GitHub repositories

In this repo you can see, above, the presentation and notes from my JNUC2020 presentation about PatchBot. You can see the presentation at https://www.youtube.com/watch?v=m4casr7nXIw

If you would like help implementing this in your own environment feel free to reach out. The best place to do that is in the MacAdmins Slack channel #patchbot

v3. has now been released to production.

Changes can be summarised:

  • Replaced the need for Move.py. All the checking to see if there is a test patch to move into production is now done in the Production processor.
  • There is a new constant in the Production code, DEFAULT_DELTA to set the default number of days between test and production.
  • There is a new constant in the Production code, DEFAULT_DEADLINE The Production processor sets the Self Service deadline to this value every time it updates a "Stable" patch policy.
  • There is a new optional variable in Production .prod recipes called delta to set the number of days between test and production for that package.
  • There is a new optional variable in Production .prod recipes called deadline to set the Self Service deadline for that package.

The code should run, it has been vigorously tested. There are still things to be done. Certainly the Production processor could be cleaned up as it it grabs information to check the delta then throws it all away so the process to move a package from test into production has to find it all again, that's less than optimal and makes unnecessary API calls.

Now that delta can be defined in a .prod recipe it is now possible to move a package from test into production from the command line. autopkg run GoogleChrome.prod -k 'delta=-1' will immediately move Google Chrome from testing into production, for example. You can do the same with deadline. autopkg run GoogleChrome.prod -k 'delta=-1' -k 'deadline=2 will move Google Chrome into production with a short Self Service deadline. (You need to use '-1' instead of 0 as the code will see 0 as unset.)

visitors

patchbot's People

Contributors

honestpuck avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

patchbot's Issues

Make the category for a package a variable and set it at the top of JPCImporter.py

It's not obvious that you need a default category for your packages to exist and that at the moment the code assumes it's "Application".

If we change that to a variable at the top of the JPCImporter.py code it would make it easier for implementers. We might also mention it in the wiki under "Installation" when that gets written.

Make arguments for PatchManager and Production match names

The arguments for PatchManager are title and patch and for Production they are package and patch. I think they should be package and patch for both.

The code below will edit all your recipes to conform if you have some old ones.

for i in *.ptch.* ; do
  sed -a -e 's/title/package/' $i > tmp.recipe ; mv tmp.recipe $i
done

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.