You are on page 1of 36

Mac OS X System Deployment

using Free and Open Source Tools

Just who the &^%$ is this guy?


Ed Heagle
IT Director
School District of Shell Lake
eheagle@shelllake.k12.wi.us

Shell Lakes IT Environment

Almost all Apple Mac, some Windows devices


1:1 laptop program for Grades 9-12
Large iPad deployment in Grades K-6
Laptop Carts for Grades 3-8
Mixed Server Infrastructure
(OS X Server / Linux / FreeBSD)
2 Full Time IT Support people
(Tech Coach/Tech and myself)

Why Free / Open Source Solutions?

Budget / Cost Concerns.


Reliability / Stability
Openness
Flexibility / Scalability
Community Support
Learning Opportunity / Career Betterment

FLEXIBILITY!
Most of the solutions that I am going to go over
can be integrated in your environments
somewhat easily. None of these are all or
nothing solutions.
Pick the ones you want!
Modular system design! Wheeee!

Problems / Issues Faced

Strong drive to 1:1 computing (or as close to 1:1)!


IT Department struggles
Time constraints
Software Installs and Updates
Hard to maintain monolithic images
Infrastructure Woes / Pains
Budget concerns
OS X Server: becoming more useless.
(Well that one is a strong opinion from a jaded OS X Server sysadmin.)

Problems / Issues Faced


Configuration Management
High Cost of Commercial Management Solutions
(sorry JAMF, this is true.)
User concerns
Maintaining (some sort of) sanity

Monolithic Images aka The Old Way


Exact clones of a master computer
Image files can get very large (>10GB or more)
Slow, cumbersome to deploy and update
Near impossible to use on newer models as/when
released
Still useful in some cases

Tools

AutoDMG - Create deployable system


images from OS X installer
https://github.com/MagerValp/AutoDMG

Replacement for InstaDMG


Ability to create factory style OS X images
Easy to use GUI interface
Ability to add custom packages to workflow
Command line options

AutoDMG Best Practices


Avoid including everything (think minimal)
Certain installers pkgs won't work
Cant create a 10.10 image on a 10.9
computer

DeployStudio
http://www.deploystudio.com/
Free but not Open Source
Requires a Mac for server service
Used to restore computers, can create system images.
Software and configuration (and profiles!) deployment
Workflows!
Full automation support

DeployStudio Alternatives To Mention


Apple's own tools (System Image Utility)
Not as intuitive or easy to use. YMMV
Comes with OS X Server
Blast Image Config
http://clc.its.psu.
edu/UnivServices/itadmins/mac/blastimageconfig
Freeware

DeployStudio Alternatives/Additions
Clonezilla
www.clonezilla.org

Fog
http://www.fogproject.org/

Something to Watch Out For...

Spirit
A multi-platform DeployStudio server
replacement
http://github.com/mosen/spirit

DeployStudio Best Practices


Properly plan out your workflows
Shell scripts!
Create multiple netboot sets according to OS versions
Document, Document, Document...
Test everything!

Reposado
Apple Software Update Service Replacement
https://github.com/wdas/reposado/
More features than Apple's implementation
Branches
Does not need to be running on a Mac Server
Command line based

Add-ons to Reposado
Margarita - Graphical Browser based front end
to Reposado.
https://github.com/jessepeterson/margarita

Reposado Best Practices


Make sure you have plenty of storage space
(1TB is a good idea)
Apple Package Code Signing Certificate Issues
Use branches
Test updates before putting out to production

Munki
"Managed Software installation for OS X"
https://www.munki.org/
munki allows you to distribute software, updates and even
configuration changes easily and semi automatically.
Users can install software that has been released through
munki using easy to use GUI tools.

munki 1.0 vs munki 2.0


The biggest difference the GUI for end users.
Munki 1.0 uses the classic Software Update GUI interface
from OS X 10.6, 10.7
Munki 2.0 uses a custom App Store style interface.
Munki 2.0 is fully backward compatible with Munki 1.0

munki Requirements
Clients: 10.5 up to 10.9, use Munki 1.0.
10.9 and up, use Munki 2.0
Repository stored/shared on any web server
Administrative machine needs to be OS X
(well, not exactly true)

munki Supported Installs


.pkg and .mpkg files
drag and drop install style .dmg files (ex. Firefox)
Adobe CS product updaters
App Store Apps

Repository Structure

Catalog files - Index of what is in the repository.

Auto generated with makecatalogs

Manifest files - Lists of what our clients are going to get.

List the software available to the client

Manifest files can refer to other manifest files

Pkginfo files - Dossiers of what is in the repository

Describes the installer files themselves

Managed Software Update


Installs can be mandatory or optional.
Can be set to run automatically at login window.
Users can install updates without admin authorization
(well most of the time)
Can be set to install Apple updates besides what is in
the repository.
You can force users to apply the updates!

Munki 1.0 Managed Software Update

Munki 2.0 Managed Software Center

Problem Installers
Certain Adobe Products/Updates
Java (maybe)
Stuff that doesnt install into standard install locations.

Munki Best Practices


Seriously plan out repository organization
Test, test, test! Document!
Mirror the repository
Repackage software as needed
Avoid licensed software installers if making server
publicly accessible

Munki Add ons


munkiadmin - https://github.com/hjuutilainen/munkiadmin/
(these next two can be found on https://www.munki.org/)
MunkiWebAdmin
CreateOSXInstallPKG

AutoPkg - Automated packaging and


software distribution on OS X.
https://github.com/autopkg/autopkg
Automated method of gathering third party software
for distribution
User generated Recipies available
Can integrate into a Munki workflow
Command line based

AutoPkgr - GUI Frontend to AutoPkg


https://github.com/lindegroup/autopkgr

Honorable Mentions
The Luggage - https://github.com/unixorn/luggage
CreateUserPkg - http://magervalp.github.io/CreateUserPkg/
aamporter - https://github.com/timsutton/aamporter
Packages - http://s.sudre.free.fr/Software/Packages/about.html
BSDPy - https://bitbucket.org/bruienne/bsdpy
Puppet - https://puppetlabs.com/
Sal - https://github.com/salsoftware/sal
Simian - https://github.com/google/simian
Make Profile Pkg - https://github.com/timsutton/make-profile-pkg
Jamf NetSUS https://github.com/jamf/NetSUS

Lets put it all together...


New Client

DeployStudio

Munki / Reposado

Managed Client

AutoDMG

AutoPkg

Thanks for listening.


Any Questions?

You might also like