Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jamf Pro and AutoPkg

Jamf
November 13, 2019
300

Jamf Pro and AutoPkg

Jamf

November 13, 2019
Tweet

Transcript

  1. Graham Pugh Senior Client Engineer - Apple Services ETH Zürich

    @GrahamRPugh @GrahamRPugh @grahampugh grahamrpugh.com
  2. © JAMF Software, LLC How JSSImporter automates package management and

    policy creation in Jamf Pro Presentation objectives: • AutoPkg + JSSImporter - setup and use • Use standard JSS recipes • Roll your own JSS recipes • The future of JSSImporter
  3. Photo: ETH Zürich / Gian Marco Castelberg ETH Zürich Eidgenössiche

    Technische Hochschule Zürich Swiss Federal Institute of Technology 21,397 students 9,528 staff 528 professors QS World University Rankings 2019 - 2020 1. MIT 2. Stanford 3. Harvard 4. Oxford 5. Caltech 6. ETH Zürich 7. Cambridge 8. UCL 9. Imperial 10. Chicago Apple @ ETH 3 client engineers 31 Jamf Pro instances 2000 managed clients 120 administrators 100 software titles
  4. © JAMF Software, LLC Presentation objectives: • AutoPkg + JSSImporter

    - setup and use • Use standard JSS recipes • Roll your own JSS recipes • The future of JSSImporter
  5. © JAMF Software, LLC $ Searching for recipes $ autopkg

    search iTerm2 Name Repo Path ---- ---- —— iTerm2.pkg.recipe hjuutilainen-recipes iTerm2/iTerm2.pkg.recipe iTerm2.download.recipe hjuutilainen-recipes iTerm2/iTerm2.download.recipe iTerm2.munki.recipe hjuutilainen-recipes iTerm2/iTerm2.munki.recipe iTerm2.jss.recipe jss-recipes iTerm2/iTerm2.jss.recipe iTerm2.download.recipe keeleysam-recipes iTerm2/iTerm2.download.recipe iTerm2.munki.recipe keeleysam-recipes iTerm2/iTerm2.munki.recipe iTerm2.filewave.recipe peshay-recipes iTerm2/iTerm2.filewave.recipe To add a new recipe repo, use 'autopkg repo-add <repo name>'
  6. © JAMF Software, LLC Adding a repository $ autopkg repo-add

    jss-recipes Attempting git clone... Adding /Users/g/Library/AutoPkg/RecipeRepos/com.github.autopkg.jss-recipes to RECIPE_SEARCH_DIRS… Updated search path: '.' '~/Library/AutoPkg/Recipes' '/Library/AutoPkg/Recipes' '/Users/g/Library/AutoPkg/RecipeRepos/com.github.autopkg.jss-recipes'
  7. © JAMF Software, LLC Getting recipe information $ autopkg info

    iTerm2.jss Didn't find a recipe for io.github.hjuutilainen.pkg.iTerm2. Search GitHub AutoPkg repos for an io.github.hjuutilainen.pkg.iTerm2 recipe? [y/n]: Name Repo Path ---- ---- ---- iTerm2.install.recipe hjuutilainen-recipes iTerm2/iTerm2.install.recipe iTerm2.pkg.recipe hjuutilainen-recipes iTerm2/iTerm2.pkg.recipe iTerm2.munki.recipe hjuutilainen-recipes iTerm2/iTerm2.munki.recipe iTerm2.jss.recipe jss-recipes iTerm2/iTerm2.jss.recipe iTerm2.LANrev.recipe seansgm-recipes LANrevRecipes/iTerm2.LANrev.recipe To add a new recipe repo, use 'autopkg repo-add <repo name>' Could not find parent recipe for iTerm2.jss No valid recipe found for iTerm2.jss
  8. © JAMF Software, LLC Getting recipe information $ autopkg repo-add

    hjuutilainen-recipes Attempting git clone... Adding /Users/g/Library/AutoPkg/RecipeRepos/com.github.autopkg.hjuutilainen-recipes to RECIPE_SEARCH_DIRS… Updated search path: '.' '~/Library/AutoPkg/Recipes' '/Library/AutoPkg/Recipes' ‘/Users/g/Library/AutoPkg/RecipeRepos/com.github.autopkg.jss-recipes' '/Users/g/Library/AutoPkg/RecipeRepos/com.github.autopkg.hjuutilainen-recipes'
  9. © JAMF Software, LLC Getting recipe information $ autopkg info

    iTerm2.jss Description: Downloads the current release version of iTerm 2 and makes a package. Then, uploads to the JSS. Identifier: com.github.jss-recipes.jss.iTerm2 Builds package: True Recipe file path: /Users/g/Library/AutoPkg/RecipeRepos/ com.github.autopkg.jss-recipes/iTerm2/iTerm2.jss.recipe Parent recipe(s): /Users/g/Library/AutoPkg/RecipeRepos/ com.github.autopkg.hjuutilainen-recipes/iTerm2/iTerm2.pkg.recipe /Users/g/Library/AutoPkg/RecipeRepos/ com.github.autopkg.hjuutilainen-recipes/iTerm2/ iTerm2.download.recipe
  10. © JAMF Software, LLC Getting recipe information $ defaults write

    com.github.autopkg FAIL_RECIPES_WITHOUT_TRUST_INFO -bool true
  11. © JAMF Software, LLC Running a recipe that changed $

    autopkg run iTerm2.jss Failed local trust verification. The following recipes failed: iTerm2.jss No trust information present. Nothing downloaded, packaged or imported.
  12. © JAMF Software, LLC Running a recipe that changed $

    autopkg make-override iTerm2.jss Override file saved to /Users/g/Library/AutoPkg/RecipeOverrides/iTerm2.jss.recipe
  13. © JAMF Software, LLC Running a recipe $ autopkg run

    iTerm2.jss The following new items were downloaded: Download Path ------------- /Users/g/Library/AutoPkg/Cache/local.jss.iTerm2/downloads/iTerm2-3_3_4.zip The following packages were built: Identifier Version Pkg Path ---------- ------- -------- com.googlecode.iterm2 3.3.4 /Users/g/Library/AutoPkg/Cache/local.jss.iTerm2/iTerm2-3.3.4.pkg The following changes were made to the Jamf Pro Server: Name Package Categories Groups Scripts Extension Attribute ---- ------- ---------- ------ ------- ------------------- iTerm2 iTerm2-3.3.4.pkg Testing, Computer Science iTerm2-update-smart Processing iTerm2.jss...
  14. © JAMF Software, LLC Running a recipe again Processing iTerm2.jss...

    Nothing downloaded, packaged or imported. $ autopkg run iTerm2.jss
  15. © JAMF Software, LLC Running a recipe list $ autopkg

    run --recipe-list JSS_Recipes.txt $ cat JSS_Recipes.txt Papers.jss Carbon Copy Cloner.jss VMware Horizon Client.jss Adobe Acrobat Reader DC.jss BBEdit.jss FileZilla.jss GraphicConverter 10.jss R.jss RStudio.jss Adobe Flash Player.jss Google Chrome.jss Skype.jss Microsoft Remote Desktop.jss LibreOffice.jss ISL Light Client.jss GIMP.jss DataWarrior.jss XQuartz.jss PopChar.jss Quicksilver.jss
  16. © JAMF Software, LLC Running a recipe that changed Attempting

    git pull for /Users/gpugh/Library/AutoPkg/RecipeRepos/com.github.autopkg.cgerke-recipes... Already up to date. Attempting git pull for /Users/gpugh/Library/AutoPkg/RecipeRepos/com.github.autopkg.jss-recipes... Updating 608ea78..d79e5b5 Fast-forward iTerm2/iTerm2.jss.recipe | 4 + 1 file changed, 4 insertions(+) Attempting git pull for /Users/gpugh/Library/AutoPkg/RecipeRepos/com.github.autopkg.andrewvalentine- recipes... Updating b6d4d9e..a025f7d Fast-forward .../EndNoteX9-self-install.pkg.recipe | 55 ++++++++++++++++++++++ EndNote-self-install/scripts/postinstall | 5 ++ 2 files changed, 60 insertions(+) create mode 100644 EndNote-self-install/EndNoteX9-self-install.pkg.recipe create mode 100755 EndNote-self-install/scripts/postinstall Attempting git pull for /Users/gpugh/Library/AutoPkg/RecipeRepos/com.github.autopkg.dataJAR-recipes... Updating 2028422..34ab82f Fast-forward Apache NetBeans 11/Apache NetBeans 11.munki.recipe | 4 - $ autopkg repo-update all
  17. © JAMF Software, LLC Running a recipe that changed $

    autopkg run iTerm2.jss Failed local trust verification. The following recipes failed: iTerm2.jss Parent recipe com.github.jss-recipes.jss.iTerm2 contents differ from expected. Path: /Users/gpugh/Library/AutoPkg/RecipeRepos/com.github.autopkg.jss-recipes/iTerm2/ iTerm2.jss.recipe Nothing downloaded, packaged or imported.
  18. © JAMF Software, LLC Running a recipe that changed $

    autopkg verify-trust-info -vv iTerm2.jss iTerm2.jss: FAILED Parent recipe com.github.jss-recipes.jss.iTerm2 contents differ from expected. Path: /Users/gpugh/Library/AutoPkg/RecipeRepos/com.github.autopkg.jss-recipes/ iTerm2/iTerm2.jss.recipe diff --git a/iTerm2/iTerm2.jss.recipe b/iTerm2/iTerm2.jss.recipe index 36a1c78..f9c081a 100644 --- a/iTerm2/iTerm2.jss.recipe +++ b/iTerm2/iTerm2.jss.recipe @@ -23,7 +23,7 @@ <key>POLICY_TEMPLATE</key> <string>PolicyTemplate.xml</string> <key>SELF_SERVICE_DESCRIPTION</key> - <string>iTerm2 is a replacement for Terminal.</string> + <string>iTerm2 is a free alternative to Terminal.</string> <key>SELF_SERVICE_ICON</key>
  19. © JAMF Software, LLC Running a recipe that changed $

    autopkg update-trust-info iTerm2.jss Wrote updated /Users/gpugh/Library/AutoPkg/RecipeOverrides/iTerm2.jss.recipe
  20. © JAMF Software, LLC github.com/autopkg/autopkg/wiki $ autopkg help Usage: autopkg

    <verb> <options>, where <verb> is one of the following: help (Display this help) info (Get info about configuration or a recipe) list-processors (List available core Processors) list-recipes (List recipes available locally) make-override (Make a recipe override) processor-info (Get information about a specific processor) repo-add (Add one or more recipe repo from a URL) repo-delete (Delete a recipe repo) repo-list (List installed recipe repos) repo-update (Update one or more recipe repos) run (Run one or more recipes) search (Search for recipes on GitHub.) version (Print the current version of autopkg) autopkg <verb> --help for more help for that verb Help!
  21. © JAMF Software, LLC Presentation objectives: • AutoPkg + JSSImporter

    - setup and use • Use standard JSS recipes • Roll your own JSS recipes • The future of JSSImporter
  22. No policy specified in args: Building a list of policies

    which have newer packages available... Retrieving 5 policies. Please wait... 0: Install Latest AdoptOpenJDK 8 1: Install Latest AdoptOpenJDK 11 2: Install Latest Adobe Creative Cloud 3: Install Adobe Creative Cloud Enter a number to select from list. Please choose an object: No policy specified in args: Building a list of policies which have newer packages available... Retrieving 5 policies. Please wait... 0: Install Latest AdoptOpenJDK 8 1: Install Latest AdoptOpenJDK 11 2: Install Latest Adobe Creative Cloud 3: Install Adobe Creative Cloud Enter a number to select from list. Please choose an object: 3 0: AdobeCCDA-5.0.0.354.pkg (CURRENT) (DEFAULT) Enter a number to select from list. Enter 'F' to expand the options list. Hit <Enter> to accept default choice. Please choose an object: $ jss_helper promote jss_helper
  23. © JAMF Software, LLC Presentation objectives: • AutoPkg + JSSImporter

    - setup and use • Use standard JSS recipes • Roll your own JSS recipes • The future of JSSImporter
  24. JSSRecipeCreator $ JSSRecipeCreator.py Package Category Menu ==================== 0: <None> 1:

    Browsers & Players 2: Untested 3: Administration Please choose a Package Category: (DEFAULT '') $ JSSRecipeCreator.py --package_only $ JSSRecipeCreator.py --package_only ~/Library/AutoPkg/RecipeRepos/ com.github.autopkg.recipes/VLC/VLC.pkg.recipe
  25. JSSRecipeCreator Results ====== CATEGORY: Browsers & Players Recipe Filename: VLC.jss-upload.recipe

    Description: Downloads latest VLC disk image and builds a package. Then, uploads to the Jamf Pro Server. ParentRecipe: com.github.autopkg.pkg.VLC Identifier: com.github.autopkg.jss-upload.VLC MinimumVersion: 0.2.0 NAME: VLC Writing to ./VLC.jss-upload.recipe
  26. © JAMF Software, LLC Script-only recipes No parent recipe Empty

    pkg_path Array of scripts Once-per-computer or scope based on EA <key>scripts</key> <array> <dict> <key>name</key> <string>%SCRIPT_NAME%.sh</string> <key>template_path</key> <string>%SCRIPT_TEMPLATE%</string> </dict> </array> <key>pkg_path</key> <string></string>
  27. © JAMF Software, LLC Presentation objectives: • AutoPkg + JSSImporter

    - setup and use • Use standard JSS recipes • Roll your own JSS recipes • The future of JSSImporter
  28. © JAMF Software, LLC The future of JSSImporter Python 2

    end-of-life
 January 2020 No system Python runtime in 
 "future version of macOS" AutoPkg refactor underway
  29. © JAMF Software, LLC The future of JSSImporter No official

    API object for package uploads to Jamf Cloud
  30. Thank you for listening! Give us feedback by completing the

    2-question session survey in the JNUC 2019 app. UP NEXT Jamf Pro Reporting Solutions 2:45-3:30 pm