Giter VIP home page Giter VIP logo

jss-recipes's Introduction

JSS Recipes

A collection of AutoPkg recipes that helps Jamf Pro administrators use JSSImporter to automate their software testing workflow.

Deprecation Warning

The recipes in the jss-recipes repository will be removed after January 1, 2024. Please consider switching your JSSImporter workflows to JamfUploader instead. Details: https://grahamrpugh.com/2022/02/16/jssimporter-jamf-pro-api-token-auth.html

Table of Contents

Introduction

This repository of recipes strives to represent a collective expression of best-practices in automated software patch management for administrators of Jamf Pro (Casper Suite).

Let us unpack that statement!

First and foremost, the contributors of this repository aim to agree upon a standard software testing workflow that mirrors community-supported standards in use by other deployment frameworks. While it is possible to upload and deploy software in many ways using JSSImporter, the workflow reflected in these recipes will be safe, consistent, and sane.

Next, we aim to promote this standard workflow by peer-reviewing all recipes in this repository. This process will ensure that the recipes can be relied upon to faithfully realize the standard workflow, and administrators will be able to extend and override these recipes with predictable and consistent results.

We strive to include the most common apps expected to be part of the AutoPkg domain, including but not limited to those of the "standard" Recipes repo.

Finally, we want to make the style of JSS recipes consistent, as set forth below in the Style guide.

Standard workflow for JSS recipes

Software packages are uploaded to distribution points and made available through a Self Service policy to members of the Testing group who do not already have the latest version of the software.

The following pieces work together to accomplish this workflow:

  • JSS recipes use recipes that produce standard Apple package (pkg) files as parents. This ensures that a pkg can be uploaded to the distribution points.
    • The resulting package file's name includes the software's name and version number (e.g. Firefox-38.0.5.pkg).
    • The package file's metadata includes any OS version restrictions that govern that product's installation.
  • The JSS recipe specifies the category for the package file itself, which is chosen from among a limited set of approved categories. (See the list of categories in the Style guide below.) If the category doesn't exist, it will be created.
  • JSSImporter uploads the package file to all configured distribution points.
  • The SmartGroupTemplate.xml file tells JSSImporter to create or update a smart group called [SoftwareName]-update-smart. The criteria of this group are:
    • the computer has the software in question installed
    • the version does not match the newest version that AutoPkg found
    • the computer is a member of a group called "Testing" (which is created and maintained manually by the Jamf admin)
  • The PolicyTemplate.xml file tells JSSImporter to create a single Self Service policy for each product, called Install Latest [SoftwareName]. The policy:
    • installs the latest package file.
    • is scoped to the smart group mentioned above.
    • includes a Self Service icon and description.
    • category is Testing. This groups policies together under the Testing category on the Policies page of the JSS web interface to separate and distinguish them from other policies. If the Testing category doesn't exist, it will be created.
    • has an execution frequency of "Ongoing" to allow multiple runs should tests fail. However, following a successful installation, the Self Service policy performs a recon run, which will drop the computer out of the smart group, thus preventing further executions until the next update is made available. This also enables reuse of the same policy without needing to "Flush All" the policy logs.
  • No groups other than the smart group mentioned above are created or modified.
  • In the rare case of needing an extension attribute to determine whether a package is out-of-date, and thus used to determine membership in the smart group, extension attributes will be created and/or updated. A separate [SoftwareName]ExtensionAttribute.xml file is required for this. This is most commonly the case with apps that either don't live in /Applications or report different version numbers for CFBundleShortVersionString and CFBundleVersion (Jamf only uses CFBundleShortVersionString for inventory).

The cumulative effect of all this is that software managed with AutoPkg and JSSImporter will be uploaded and configured for deployment only to computers which have clearance to install it, and will require user interaction to install.

Users familiar with the recommendations developed by the Munki community will immediately recognize the notion of a Testing → Production pipeline of software. In brief, the idea is that machines in "Production" (the vast majority of managed machines) use only the software which has been vetted and tested to work. The next smaller group, "Testing", includes computers and users who can be counted on to make use of and report back on software updates, to help prove that updates are safe to deliver. *(If a preliminary "Development" level is also desired, consider using AutoPkg "install" recipes on test Macs).

It is the viewpoint of this repo's collaborators that AutoPkg/JSSImporter is best used to facilitate the testing of software updates, not to deploy them to production, and as such, we focus on making that task more streamlined, error-free, and automated. However, one of the further goals of the Style guide is to provide maximum "overridability" of these recipes so that admins choosing to deviate from this workflow can rely on consistent behavior of all JSS recipes.

Requirements and configuration

JSSImporter

These recipes are intended to be used with JSSImporter. Grab the latest package installer from the releases section, configure your API user and distribution points following the instructions in that project's README, and you're good to go.

Compatibility note: These recipes do not work with Allister Banks' jss-autopkg-addon fork, and the recipes in his repo will not work with JSSImporter.

Parent recipes

All JSS recipes rely on parent recipes found elsewhere. If you want to run a JSS recipe SoftwareName.jss.recipe, then you will need to ensure that the repository hosting its parent recipe is also included in your AutoPkg configuration with autopkg repo-add.

App Store apps

Some of these recipes are for applications distributed through the Mac App Store. For these recipes to work, you'll need to add Nick McSpadden's AppStoreApp recipes, which in turn require the pyasn1 package to check for updates.

Furthermore, you need to have the apps installed on the machine you are running AutoPkg on in order for AutoPkg to build the package file. If you don't own a copy of Final Cut Pro, for example, you will not be able to run the FinalCutPro.jss recipe.

To add these:

# Add Nick's repository.
autopkg repo-add nmcspadden-recipes

# Install pyasn1.
pip install --user git+https://github.com/geertj/python-asn1.git#egg=pyasn1

Obviously, make sure you meet the licensing requirements for any App Store apps you intend to distribute.

Testing group

By default, JSS recipes are scoped to a smart group which requires membership in a group called "Testing." It is up to you, the Jamf administrator, to create and maintain the Testing group as you see fit.

This group could include anything from a handful of IT coworkers to an entire class of devices, and can be either a smart or static group. If it's a smart group, any number of subgroups may be included for finer control.


Style guide

Recipes included in this repo will follow these rules:

Filename

The recipe filename should be <NAME>.jss.recipe, where <NAME> is the product's name as specified throughout the entire chain of recipes to identify the product. An optional extra-description may be added after the name, by adding a hyphen, for example MicrosoftOffice2011Updates-DisabledAllQuit.jss.recipe.

Product Subfolder

Each recipe, as well as any product-specific support files, will reside in a subfolder of the main repository. The name of the subfolder should be the value used for the product NAME. Support files like icons, product-specific template files, or scripts, will be referenced as arguments by their filename only, and JSSImporter's search-path methods will locate them correctly should the recipe be overridden. Their filenames should all have the product name as a prefix, e.g. NetHackScriptTemplate.xml.

No copies of the jss-recipes mandated files PolicyTemplate.xml or SmartGroupTemplate.xml may be present in this subfolder.

Parent recipe

The recipe's ParentRecipe must be publicly available via a shared recipe repository that is part of the AutoPkg organization.

Identifier

The recipe's Identifier should be com.github.jss-recipes.jss.<product-name>, where "product-name" is that used consistently throughout the parent recipe and the JSS recipe to identify the product in question. In special cases, like where multiple recipes for the same product are desired, an optional suffix of a hyphen or underscore and a descriptor may be added (e.g. com.github.jss-recipes.jss.MicrosoftOffice2011-DisabledAllQuit).

Processing

The recipe should have a single processor stage: JSSImporter. This rule may in special circumstances be lifted, due to missing data in the ParentRecipe, like no version information being provided. However, recipe authors should endeavor to get the ParentRecipe author to include this information so as to benefit other downstream recipes.

All arguments to the JSSImporter processor should be capable of being overridden by an Input section variable.

In the Arguments section of the JSSImporter processor, all values should be text-replacement variables; for example, the value of policy_category should be: %POLICY_CATEGORY%.

In the Input section of the recipe, the variable should be defined with an uppercase NAME set to the values desired (and in many cases, as defined later in the style guide). Following the previous example, the input variable would be named POLICY_CATEGORY, and should have the value Testing.

The JSSImporter processor will include at least the following arguments, and values (as specified in the Input section):

  • prod_name
    • The name used consistently throughout all recipes in the chain.
    • prod_name should use the NAME input variable commonly used throughout AutoPkg recipes. This is an exception to the casing rules above.
  • jss_inventory_name
    • The filename of the app bundle itself. Optional, but required if it differs from NAME.
    • Use spaces in NAME if that's how the application is named. It's 2016. Filenames can have spaces.
  • category
    • Recipes included in this repository use a limited list of package categories:
      • Computer Science
      • Digital Media
      • Games
      • Management
      • Print and Scan
      • Productivity
      • Science and Math
      • Utility
    • Admins may create overrides to specify package categories that aren't included in the standard list above.
  • policy_category (Set to Testing)
  • policy_template (Set to PolicyTemplate.xml)
  • self_service_icon
    • Icon should be named the same as the product (e.g. NetHack.png).
      • Icon can be referenced as either %NAME%.png or the actual NAME.png (e.g. NetHack.png).
    • Icon should be a PNG file.
    • Icon should be 128 x 128 pixels as per the current recommendations of JAMF, or 300 x 300 pixels to be shared with Munki recipes..
  • self_service_description
    • A short description, minus hyperbolics or sales-speak, describing what the software does.
  • groups
    • Argument value should be an array exactly as per below:
    <key>groups</key>
    <array>
        <dict>
            <key>name</key>
            <string>%GROUP_NAME%</string>
            <key>smart</key>
            <true/>
            <key>template_path</key>
            <string>%GROUP_TEMPLATE%</string>
        </dict>
    </array>
    
    • Input section variables exactly as:
    <key>GROUP_NAME</key>
    <string>%NAME%-update-smart</string>
    <key>GROUP_TEMPLATE</key>
    <string>SmartGroupTemplate.xml</string>
    
    • In the case of a product requiring an extension attribute, a different smart group template will be specified.

Other arguments are optional and desired only if necessary (extension_attribute).

Policy Template

The recipe must use this repo's standard PolicyTemplate.xml for its policy template.

Extension Attributes

While Jamf Pro can include internet plugins or other arbitrary paths in its inventory collection, it is not the default behavior. Therefore, for apps that live outside of the /Applications folder, an extension attribute should be included to manage group inclusion. This way, recipes from this repo will work immediately for admins who have not set up inventory collection beyond the default. Examples of this can be seen in the repository for more information (examples include Adobe Flash Player and Silverlight).

Also, Jamf Pro's inventory uses an app's CFBundleShortVersionString for version bookkeeping. However, some apps use that as a shortened version, and rather put the full version number in CFBundleVersion in their Info.plist. For example, Skype, according to Jamf, may be version 7.10, but in fact the full version number is 7.10.0.776. For testing purposes, obviously 7.10 will not work, so an extension attribute is required.

For these purposes, a generic extension attribute and smart group template are provided at CFBundleVersionExtensionAttribute.xml and CFBundleVersionSmartGroupTemplate.xml and should be used unless further scripting is required to accurately target the product.

Extension attributes arguments should be specified in the JSSImporter/Arguments section only, as they are not intended to be overridden.

Scripts

Likewise, scripts should only be included when absolutely necessary for package installation.

Script's arguments should be specified in the JSSImporter/Arguments section only, as they are not intended to be overridden.

Script template filenames should have the product name as a prefix, e.g. NetHackScriptTemplate.xml. The scripts referenced by the template should follow the same pattern, e.g. NetHackPostinstall.sh.

Linting

Finally, a check with plutil -lint <recipe_name> should pass.


Contributing

Pull requests are welcome! We've outlined the basic process of contributing here.

Upgrading from the old jss-recipes

If you're currently subscribed to the old sheagcraig/jss-recipes repository and would like to smoothly transition to this new autopkg/jss-recipes repository, we've prepared some instructions here which will assist you with that transition.

Troubleshooting

Here are some basic steps for determining where to troubleshoot:

  • If you're using AutoPkgr or another automation framework with autopkg and having trouble with a jss recipe, first run the recipe in isolation and see whether the error persists. For example:

    autopkg run Firefox.jss -v
    

    The error or traceback that results from this command will help with further troubleshooting.

  • Most of the jss recipes require a parent recipe that lives in another repository. Make sure you've added all required repos. Otherwise you'll get an error like this: Could not find parent recipe for ___.jss

  • Use the latest version of JSSImporter and python-jss unless you know of a specific reason not to. The latest version of JSSImporter is always available here and installs the latest version of python-jss by default.

  • Check your JSS URL and credentials by running these commands and verifying that the resulting output can be used to successfully log in to your JSS web app:

    defaults read com.github.autopkg JSS_URL
    defaults read com.github.autopkg API_USERNAME
    defaults read com.github.autopkg API_PASSWORD
    

    If these values are not correct, you may need to modify them with the corresponding defaults write commands, by editing the values in AutoPkgr, or by editing the ~/Library/Preferences/com.github.autopkg.plist file manually. (Careful!)

  • Reading the Description of a given recipe may provide clues as to why it's failing to run. For example, the Audacity.jss recipe requires a PKG variable in order to work. If you don't provide one (via a recipe override or -p switch), you will see an error like this one:

    Error in com.github.jss-recipes.jss.Audacity: Processor: PackageRequired: Error: This recipe requires a package or disk image to be pre-downloaded and supplied to autopkg ("-p" command-line switch). This is likely due to required login credentials to download the software.

  • Additional software may be required to run JSSImporter on macOS Sierra. (See jssimporter/JSSImporter#96 (comment).)

  • If you're still having trouble, reach out to somebody using one of the methods below.

Getting help

Many of this repository's contributors (and many Jamf admins in general) can be found on the #jamfnation room within the MacAdmins Slack team or on the JAMF Nation discussion boards.

If you find a reproducible bug or error in one of the recipes in this repo, please check to see whether an issue already exists on GitHub, and submit an issue if not.

jss-recipes's People

Contributors

amandaw33 avatar catpele avatar chilcote avatar cranappras avatar d33t5 avatar firefishy avatar futureimperfect avatar homebysix avatar joeselway avatar kitzy avatar krispayne avatar lashomb avatar macmule avatar marcusmyers avatar mdoyle1 avatar mlbz521 avatar mpanighetti avatar mscottblake avatar novaksam avatar pairjal avatar rderewianko avatar rtrouton avatar shawnhonsberger avatar sheagcraig avatar skoobasteeve avatar smashism avatar smithersjr avatar smithjw avatar willpolley avatar yohan460 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jss-recipes's Issues

StopProcessingIf

I noticed that no recipes have the StopProcessingIf process in them. If upstream .pkg recipes do not have this inside them (which seems to be the case sometimes, e.g. Carbon Copy Cloner), then JSSImporter will proceed every time.

JSSImporter creates a "Testing" policy. A normal mode of operation would be to promote/stage/delete that policy after testing. But without StopProcessingIf, the policy will be re-created after every AutoPkg run, regardless of whether there is an update to the package.

To prevent this, I'm having to create my own .jss recipes for every software title, with StopProcessingIf added, like so:

            <dict>
                <key>Processor</key>
                <string>StopProcessingIf</string>
                <key>Comment</key>
                <string>Checks if the file already exists in the cache</string>
                <key>Arguments</key>
                <dict>
                    <key>predicate</key>
                    <string>new_package_request == False</string>
                </dict>
            </dict>

I may be missing something, but if not, could we add a requirement for .jss recipes to have the StopProcessingIf process in them?

Google Earth Pro.jss.recipe Error

Looks like there is a code change and caused the error:

Error in local.jss.Google Earth Pro: Processor: CodeSignatureVerifier: Error: Mismatch in authority names. Note that all verification can be disabled by setting the variable DISABLE_CODE_SIGNATURE_VERIFICATION to a non-empty value.

Repo were updated and Trust Info updated for Overrides already.

Validation fails when parent is download recipe

----------------------------------------------------
 Testing recipe: ./jss_helper/jss_helper.jss.recipe 
----------------------------------------------------
Test: Parent Recipe is in AutoPkg org. Result: False

Automatically validating pull requests

Would be splendid to have some kind of continuous integration tool like Travis run validate_recipes.py on incoming pull requests, and add a "pass" or "fail" badge automatically.

For an example of such behavior, check out pull requests to Bootstrap:

screen shot 2016-03-04 at 10 54 07 am

I'm not yet experienced with such things, but it seems like it could be a good idea.

Tableau Desktop -

When running the Tableau Desktop recipe, I'm getting the error "JSSImporter requires missing argument version".

Running the parent pkg recipe does seem to have a %version% variable.

jssimporter

Silverlight JSS recipe gives Version Error

When running the Silverlight.jss recipe (via Autopkgr or Autopkg in Terminal) I get the error: JSSImporter requires missing argument version.

I did manually create an Override with the blank version key. I am wondering why this became an issue recently.

Silverlight.jss cannot read info.plist

When you run the Silverlight.jss recipe, it will always error out saying something along the lines of:

Error running recipes
File '<cache directory>/com.github.jss-recipes.jss.Silverlight/unpack/Internet Plug-Ins/Silverlight.plugin/Contents/Info.plist' does not exist or could not be read.

The Info.plist both exists and can be read by all users. The recipe itself works just fine and uploads the file as expected. It just always sends an error code along with it.

Adobe Reader (non DC) does not have versioning

The current JSS policy for Adobe Reader non DC does not have a version coming in from the package. Without versioning it does not know to update the package. Is this something that someone with a little more experience than me can look into.

Thanks
Ryan

PatchManagementTemplate.xml?

Hi there everyone! What would you think of something like this to standardize package upload for use with Jamf's new Patch Management? If we want to stop building Policies and Smart Groups, I understand that we can delete the templates from our overrides. I was just wondering if this might be a cleaner type of method to use going forward? I don’t know and wanted to hear everyone's thoughts. Thanks! :)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <package>
        <name>%JSS_INVENTORY_NAME%</name>
        <category>%CATEGORY%</category>
        <filename>%NAME%</filename>
        <package_info></package_info>
        <package_notes></package_notes>
        <priority></priority>
        <parameters></parameters>
        <package_configuration></package_configuration>
        <os_requirements></os_requirements>
        <self_service_icon></self_service_icon>
    </package>
</plist>

Adobe Acrobat Reader DC

Does not pull the right app in the Smart Group missing "Acrobat" in the title
Same app does not pull in version number either

Is this the right spot to mention these?

Thanks
Ryan

iTerm2 - <key>JSS_INVENTORY_NAME</key>

Hi,

Can anybody verify the below and update the recipe, please?

The <key>JSS_INVENTORY_NAME</key> string needs to be updated to <string>iTerm.app</string> in order to register the installed iTerm.app, otherwise we get no computers in the group and therefore no auto updates.

Tested with a local override and it works.

Using Jamf Pro 10, although I suspect the behaviour would be the same on any version of JSS.

Thanks

Perhaps we can't have spaces in the names...

I've been working on converting my repo to the standard shown here and I encountered an issues where if I have a recipe with spaces in the name (ex. Adobe DNG Converter.jss.recipe from this repo) and you make an override of it (I use Autopkgr, but the same thing happens using autopkg from the command line) it adds spaces into identifier of the override recipe.

Example:
Source Recipe identifier

com.github.jss-recipes.jss.AdobeDNGConverter

Override Recipe identifier

local.jss.Adobe DNG Converter

validate_recipes.py needs to be updated to account for Office 2016 recipes

Currently, the Office 2016 recipes don't validate, because of necessary changes that were made to them.

--------------------------------------------------------------
 Testing recipe: ./Microsoft Excel/Microsoft Excel.jss.recipe 
--------------------------------------------------------------
Test: Parent Recipe is in AutoPkg org. Result: False
Test: Recipe has only a single processor, of type 'JSSImporter'. (Too many processors: 4 > 1) Result: False
Test: GROUP_TEMPLATE is 'SmartGroupTemplate.xml'. Result: False

Or maybe validate_recipes.py could be like pylint and we could put a comment in the recipe giving it certain waivers:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ValidationNotes</key>
    <string>IGNORE:ParentRecipe,SingleProcessor,GroupTemplate</string>
[...]

Just spitballing...

com.github.jss-recipes.jss.depnotify Glob Failed

Since upgrading to Python3, com.github.jss-recipes.jss.depnotify fails with Error processing path "~/Library/Autopkg/Cache/local.jss.DEPNotify/DEPNotify/Applications/Utilities/DEPNotify.app failed to Glob."

It looks like when it downloads the zip, it doesn't extract or build the DEPNotify.app.

Skype recipe out of date

I think I forced AutoPkgr to get the new recipe but it didn't help.

RecipeOverrides$ fgrep 10. Skype*
Skype.jss.recipe: 10.12.x,10.11.x,10.10.x,10.9.x
RecipeOverrides$ fgrep 10. Skype*
Skype.jss.recipe: 10.13.x,10.12.x,10.11.x,10.10.x,10.9.x

The Microsoft patch recipes have OS Requirements that do not include 10.13.x...

The recipes for the Microsoft office patches at OS Requirements that do not include 10.13.x and in fact the last update a year ago was to add 10.12.x..
Microsoft Excel Add 10.12.x to OS REQUIREMENTS a year ago
Microsoft OneNote Add 10.12.x to OS REQUIREMENTS a year ago
Microsoft Outlook Add 10.12.x to OS REQUIREMENTS a year ago
Microsoft PowerPoint Add 10.12.x to OS REQUIREMENTS a year ago
Microsoft Remote Desktop updated OS_REQUIREMENTS for macOS Sierra support, updated
Microsoft Word Add 10.12.x to OS REQUIREMENTS a year ago
I would be great to get these updated to support macOS High Sierra.

Proposal for an additional CFBundleVersionSmartGroupTemplate.xml criterion

Here's the current CFBundleVersionSmartGroupTemplate.xml:

<computer_group>
    <name>%group_name%</name>
    <is_smart>true</is_smart>
    <criteria>
        <criterion>
            <name>Application Title</name>
            <priority>0</priority>
            <and_or>and</and_or>
            <search_type>is</search_type>
            <value>%JSS_INVENTORY_NAME%</value>
        </criterion>
        <criterion>
            <name>%NAME%Version</name>
            <priority>1</priority>
            <and_or>and</and_or>
            <search_type>is not</search_type>
            <value>%VERSION%</value>
        </criterion>
        <criterion>
            <name>Computer Group</name>
            <priority>2</priority>
            <and_or>and</and_or>
            <search_type>member of</search_type>
            <value>Testing</value>
        </criterion>
    </criteria>
</computer_group>

I would propose adding one more criterion:

        <criterion>
            <name>%NAME%Version</name>
            <priority>3</priority>
            <and_or>and</and_or>
            <search_type>is not</search_type>
            <value></value>
        </criterion>

This would prevent computers from being scoped into the smart group if the %NAME%Version extension attribute has not yet been evaluated during a recon.

Recipes failing or asking to search github

Good morning,

I'm trying to make a zoom pkg and policy using autopkg run Zoom.jss and it fails every time with an unarchiver error. I tried two other recipes (Wireshark and Textmate) just to see if it was the zoom recipe and it says that they don't even exist.

Documentation clarification for parent recipes...

So the documentation (i.e. README.md) says:
"JSS recipes use PKG recipes as parents." However I see like for yo.jss
<key>ParentRecipe</key>
<string>com.github.sheagcraig.download.yo</string>
Maybe the docs should say:
Jss recipes use parent recipes that produce PKG installers.
Since the intent is:
"This ensures that a standard Apple package (pkg) file can be uploaded to the distribution points."
I don't think the idea was to force JSS recipes to use PKG recipes but if so then the issue need to be moved to the yo.jss :-).

Processor: Versioner: Error: File '/Applications/Kindle.app/Contents/Info.plist' does not exist or could not be read.

I got this following issue when running an override for Kindle.jss

Processing Kindle-selfservice.jss.recipe...
File '/Applications/Kindle.app/Contents/Info.plist' does not exist or could not be read.
Failed.

The following recipes failed:
    Kindle-selfservice.jss.recipe
        Error in local.jss.Kindle-selfservice: Processor: Versioner: Error: File '/Applications/Kindle.app/Contents/Info.plist' does not exist or could not be read.

Nothing downloaded, packaged or imported.

Creation of a FirefoxAutoconfig.jss recipe

I created a draft FirefoxAutoconfig.jss recipe based on com.github.gregneagle.pkg.FirefoxAutoconfig.

Questions:

  • The filename isn't going to pass validation, since the NAME is "Firefox" and not "FirefoxAutoconfig," but I think this might be worth making an exception for. Agree?
  • I want to nudge people to create their own override so they can customize the various input variables like PKG_ID for their own organization, but I'm not sure how best to do that. I've included all the input variables in the jss recipe, but that's not technically necessary and I don't think it helps deliver that nudge.

com.github.jss-recipes.jss.OracleJava8JDK (or a parent) needs updated URL

8/19/16 11:02:10.928 AM AutoPkgr[85839]: Run status: Processing com.github.jss-recipes.jss.OracleJava8JDK...
8/19/16 11:02:10.928 AM AutoPkgr[85839]: Processing com.github.jss-recipes.jss.OracleJava8JDK...
8/19/16 11:03:06.745 AM AutoPkgr[85839]: [DEBUG] Found app and version: Oracle Java 8 JDK:1.8.0
8/19/16 11:03:56.359 AM AutoPkgr[85839]: Error [1] Error running recipes
Response Code: 404 Response: Not Found. The server has not found anything matching the request URI
8/19/16 11:05:56.254 AM AutoPkgr[85839]: [DEBUG] Completed AutoPkg Task:
/usr/bin/python /usr/local/bin/autopkg run com.github.jss-recipes.jss.OracleJava8JDK --report-plist /var/folders/jh/8001rxgs1x50k8y9c475qhsw0000gp/T/com.lindegroup.AutoPkgr/20160819110210 -v

Microsoft PowerPoint-update-smart includes office 2011

Hi!

I wanted to point out that this smart group will catch PowerPoint from office 2011 and thus always be true if Office 2011 is installed.

novaksam solved it like this:

Application Title is Microsoft PowerPoint.app
and Application Version like 15.
and Application Version is not
and Computer Group member of Testing
and Operating System like 10.10
or Operating System like 10.11

thanks for the recipes!

regards
Mikael Johansson

PS. Maybe this is applicable to all the other office applications. DS.

Parallels Desktop.jss

Hello,

parallels desktop.pkg that get's created results in a corrupt install. Parallels Application appears but when you try to open it, Parallels spits out a 15431 error (seems generic) and the 'solution' just takes you to parallels support site.

This is occurring regardless of deployment method, happens when manually installing as well. I had a quick check on #AutoPkg Slack Channel and a few folks last year mentioned this issue as well so doesn't look to be specific to this version.

If I install via pd12.dmg from Parallels site and install all is OK.

Silverlight.jss issue

Hi there,

Since few days, I'm encoutered an issue with Silverlight through autopkg/autopkgr.

Here's what I can give you :
My recipe override :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Identifier</key>
    <string>local.jss.Silverlight</string>
    <key>Input</key>
    <dict>
        <key>CATEGORY</key>
        <string>Plugin_Internet</string>
        <key>DESCRIPTION</key>
        <string></string>
        <key>DOWNLOAD_URL</key>
        <string>http://www.microsoft.com/getsilverlight/handlers/getsilverlight.ashx</string>
        <key>GROUP_NAME</key>
        <string>%NAME%-update-smart</string>
        <key>GROUP_TEMPLATE</key>
        <string>%RECIPE_DIR%/SilverlightSmartGroupTemplate.xml</string>
        <key>ICON</key>
        <string>%RECIPE_DIR%/Silverlight.png</string>
        <key>NAME</key>
        <string>Silverlight</string>
        <key>POLICY_CATEGORY</key>
        <string>Plugin_Internet</string>
        <key>POLICY_TEMPLATE</key>
        <string>%RECIPE_DIR%/PolicyTemplate.xml</string>
        <key>USER_AGENT</key>
        <string>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.28.10 (KHTML, like Gecko) Version/6.0.3 Safari/536.28.10</string>
        <key>JSS_SUPPRESS_WARNINGS</key>
        <string>true</string>
    </dict>
    <key>ParentRecipe</key>
    <string>com.github.autopkg.jss.Silverlight</string>
</dict>
</plist>

When I run Silverlight.pkg (which is parent off Silverlight.jss - com.github.autopkg.pkg.Silverlight), it works fine, but when I run Silverlight.jss both from autopkgr and using command line autopkg, I get the following error :

admin$ autopkg run Silverlight.jss -vvvvv
Processing Silverlight.jss...
Failed.
Receipt written to /tmp/receipts/Silverlight-receipt-20160128-095208.plist

The following recipes failed:
    Silverlight.jss
        JSSImporter requires missing argument version

Nothing downloaded, packaged or imported.
Traceback (most recent call last): File "/usr/local/bin/autopkg", line 1460, in run_recipes autopackager.verify(recipe) File "/Library/AutoPkg/autopkglib/__init__.py", line 417, in verify % (step["Processor"], key)) AutoPackagerError: JSSImporter requires missing argument version

Can you help me (again :) ) on this ?

Name over ride not working for yo recipe...

Everything else works but the override below does not rename the package.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Identifier</key>
    <string>local.jss.UNCSystem-AutoPKG-yo</string>
    <key>Input</key>
    <dict>
        <key>CATEGORY</key>
        <string>aaUNCSystem-Test</string>
        <key>GROUP_NAME</key>
        <string></string>
        <key>GROUP_TEMPLATE</key>
        <string></string>
        <key>NAME</key>
        <string>UNCSystem-AutoPKG-yo</string>
        <key>POLICY_CATEGORY</key>
        <string></string>
        <key>POLICY_TEMPLATE</key>
        <string></string>
        <key>SELF_SERVICE_DESCRIPTION</key>
        <string>yo is a command-line utility for presenting native OS X persistent notifications with custom text, icons, sounds, and actions.</string>
        <key>SELF_SERVICE_ICON</key>
        <string></string>
    </dict>
    <key>ParentRecipe</key>
    <string>com.github.jss-recipes.jss.yo</string>
</dict>
</plist>

Removed Audacity.download due to TOS violation

Audacity's download from fosshub is now clearly in violation of their TOS, so I've removed my Audacity.download recipe and made the Audacity.munki recipe I maintain require the --pkg argument so that a user may supply their own download. This just involved changing %pathname% to %PKG% and adding a PackageRequired argument so that it's clearer to users how the recipe must be used.

Since you've also got Audacity recipes that ultimately derive from Audacity.download (or are a copy of it), I'm opening this issue on this and a couple other repos.

More details:

https://www.fosshub.com/tos.html

https://github.com/chocolatey/package-validator/wiki/ScriptsDoNotDownloadFromFossHub
http://forum.audacityteam.org/viewtopic.php?f=50&t=94040
https://www.reddit.com/r/sysadmin/comments/5g5npg/fosshub_message_for_chocolatey_please_stop_with/

Keeping the fosshub scraping working for this recipe has been a chore and Audacity is rarely ever updated, so I can't say I don't prefer this approach anyway.

Since there also seems to be duplication across a few of @homebysix, @scriptingosx and @novaksam's recipes it might also be a good time to evaluate whether any recipes could be removed in favour of one or another.

Adobe Acrobat DC.jss.recipe does not pass validation (false positive)

----------------------------------------------------------------
 Testing recipe: ./Adobe Acrobat DC/Adobe Acrobat DC.jss.recipe 
----------------------------------------------------------------
Test: GROUP_TEMPLATE is 'SmartGroupTemplate.xml'. Result: False

This is likely a problem with the validator, not the recipe. Making a note of it here so I don't forget to investigate later.

Skype version/shortversion

Hi,

I'm not sure this is a bug, let me first explain.

Since few weeks now, Skype doesn't really work well in JSS with JSSImporter due to confusion of version/shortversion.

  • Autopkgr download last Skype available, and create a pkg : 7.9.0.746 at this moment
  • JSSImporter imports it on JSS, and edit smart-group and policies.

By editing the smart group in the JSS, it seek computers for Skype version "7.9.0.746", quite normal.

But in fact, if you take a look on the Skype app, it version is 7.9 which in fact is the "CFBundleShortVersionString" on the info.plist inside the App, where "7.9.0.746" is the "CFBundleVersion".

At the end, I have a smart group that seek for version 7.9.0.746 and find only 7.9 and reinstall policy on all computer all the time. But if we change criteria to seek for version 7.9 only, a lot of client computers won't have the last 7.9 version of skype…

Is there a way to fix that kind of bug ?

Adobe Acrobat Reader DC.jss is creating a corrupted pkg

The dmg it downloads is good, and the .pkg is creates is good, but then it converts it to another .pkg which is bad. I get 2 .pkg files, AcroRdrDC_1501620039_MUI.pkg which is good, Adobe Acrobat Reader DC-15.016.20039.pkg which is bad.
acroerror

skype jss-recipe version

Might not be an issue with your code but best place to ask.

I'm using the jss-recipe for Skype with Auto Update Magic
and it installs it over and over again.

I think the problem is that one side uses the full version 7.53.0.580
and the other side uses just 7.53 and so they never match so
it continually installs. Any ideas appreciated.

All Applications which use CFBundleVersion for "real" version are not properly inventoried by Casper

As I circle back through the recipes and add Extension Attributes for things like Skype, Google Earth Pro, etc, I wonder if it would be more elegant, efficient, and manageable to instead have a second pair of reusable templates available for Smart Groups and a basic Extension Attribute that does defaults read on the app's CFBundleVersion.

Casper seems to only know about CFBundleShortVersionString in its inventory. I'll put a Feature Request up with them (or upvote an existing one if it's there) to include the most specific of the two, but then again, since we can't even do version comparisons, I don't hold out a lot of hope for that.

In the meantime, I'll template out things, and update the style guide to reference these changes.

GoogleChrome.jss — "Error the package path specified was invalid"

After running this jss recipe, it actually imported all the info onto jss, but only chrome pkg installation failed. it gave an error "Error the package path specified was invalid" '/Library/Application Support/JAMF/Downloads/Google Chrome-48.0.2564.116.pkg'. " on JSS

For other jss recipe, i've tested with no issue and installed successfully.

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.