Mike Delaney



5,728 latest version

2.8 quality score

Version information

  • 1.0.3 (latest)
  • 1.0.2
  • 1.0.1
  • 1.0.0
  • 0.0.6
  • 0.0.5
  • 0.0.4
  • 0.0.3
  • 0.0.2
  • 0.0.1
released Aug 25th 2017
This version is compatible with:
  • Puppet Enterprise >=3.8.3 <4.0.0
  • Puppet >=3.8.3 <4.0.0
  • Darwin

Start using this module


mdelaney/xcode — version 1.0.3 Aug 25th 2017


Table of Contents

  1. Overview
  2. Module Description - What the module does and why it is useful
  3. Setup - The basics of getting started with xcode
  4. Usage - Configuration options and additional functionality
  5. Reference - An under-the-hood peek at what the module is doing and how
  6. Limitations - OS compatibility, etc.
  7. Development - Guide for contributing to the module


This module helps you manage your installed versions of Xcode on your Mac OS X system.

Module Description

If applicable, this section should have a brief description of the technology the module integrates with and what that integration enables. This section should answer the questions: "What does this module do?" and "Why would I use it?"

If your module has a range of functionality (installation, configuration, management, etc.) this is the time to mention it.


What xcode affects

This module will help install Xcode by source (dmg, or xip) into your Mac OS X Applications directory

Setup Requirements

No special configuration needed

Beginning with xcode


To use the module simply the Xcode module, the invoke the 'xcode::instance' define with the versions of Xcode you'd like to have installed.

include xcode

xcode::instance {
    'Xcode v7.1.1':
        ensure => present,
        source => 'http://cache.mydomain.com/xcode/Xcode_7.1.1.dmg',

By default, this module will not accept the EULA for Xcode. However, if you pass in the parameter 'eula' as 'accept', we will accept the EULA for Xcode requiring no manual intervention.

If the value of 'eula' is not 'accept', then the EULA will be left as is.

include xcode

xcode::instance {
  'Xcode v7.1.1':
    ensure => present,
    source => 'http://cache.mydomain.com/xcode/Xcode_7.1.1.dmg',
    eula   => 'accept',

By default, this module will 'xcode-select' the newly installed Xcode. If you do not want this to happen set the parameter 'selected' to 'no'.

include xcode

xcode::instance {
  'Xcode v7.1.1':
    ensure   => present,
    source   => 'http://cache.mydomain.com/xcode/Xcode_7.1.1.dmg',
    selected => 'no',


A new facter 'xcode_versions' will list an array of hash that contain the installed Xcode versions. The hash is in the form of: {build: <number>, version: <string>}

For example:

        version: '7.1.1',
        build: '7B1005'


This module doesn't enforce Xocde to OS X version compatibility. If you install an Xcode version, the onus is on you to ensure that version of Xcode works with the version of Mac OS X you've installed it on.


Since your module is awesome, other users will want to play with it. Let them know what the ground rules for contributing are.

Release Notes

Version 1.0.3

  • Fixed boolean logic with eula and selected

Version 1.0.2

  • Fixed Changelog
  • Fixed Puppet module ignore file list

Version 1.0.1

  • Fixed README syntax

Version 1.0.0

  • Version matcher/extractor updated to match Xcode package published by Apple

Breaking Changes

* xcode::instance param 'source_url' renamed to 'source'
* xcode::instance param 'selected' defaulted to 'no'

Version 0.1.0

  • Minor bug fixes
  • Support for Puppet 4.x

(Thanks to @steveames for the changes)

Version 0.0.1

This is the initial release