Gorilla, Munki & Other Apes
Desktop & laptop support technicians and IT administrators from many backgrounds and organizations have come to rely on Munki, an open-source project from Walt Disney Animation Studios, for distributing and updating the software tools their employees use on the organization's Mac fleet.
Munki uses a simple client-server model to distribute software, just like the many websites we visit every day. Clients talk to a server, requesting a predefined list of items (in this case, software and scripts that are to be installed or run on the client computer), and the server delivers those items to the client over the protocol we use every day: HTTP/HTTPS.
Munki, however, is not compatible with Windows – and so IT professionals turn to many other vendors providing their own takes on how to distribute software at scale for the Windows platform. This creates fragmentation in both the toolset and the mental model of software distribution.
The Solution (Well, My Current Favorite Solution)
Over the past month, I've become a contributor to the Gorilla project, with the goal of helping it deliver the same functionality we've come to expect from Munki, but for the Windows platform.
Gorilla uses most of the same terminology and mappings as Munki:
- It is, at its core, just a web server & a client app
- The server hosts manifests, catalogs, and packages
- The manifests determine what software is installed
- The catalogs list all available software
Gorilla is written in the Go programming language, making it fast, flexible, and powerful – and, potentially later, cross-platform.
The key differences for right now:
- There is not a "makecatalogs" tool for when a package is imported
- The manifests, catalogs, etc. are written in YAML rather than XML
But Does It Work, Really?
It really does! It's important to note that Gorilla is currently in beta (as of this writing/post update, Feb. 11, 2019).
As Gorilla continues to improve, we hope to use this tool to continue our efforts to implement IaC (Infrastructure as Code) in our organization, even for endpoint management.
To automate some of the manual work currently involved in importing a package into Gorilla's catalogs, I've written gorillaimport, a work-in-progress PowerShell module. (Pull requests happily accepted!)
I encourage you to give Gorilla a shot, and please submit issues, feedback and pull requests to help get Gorilla to 1.0!