An open API service indexing awesome lists of open source software.

https://github.com/thekevjames/puppet-homebrew

homebrew (+brewcask! +taps!) package installer and provider
https://github.com/thekevjames/puppet-homebrew

brew homebrew puppet tap

Last synced: 2 months ago
JSON representation

homebrew (+brewcask! +taps!) package installer and provider

Awesome Lists containing this project

README

        

puppet-homebrew
===============

A Puppet Module to install Homebrew and manage Homebrew packages on Mac OSX.
This module can install using either homebrew or brewcask, along with a
fallback mode which attempts both.

This module supports Puppet version 4 and greater running on Ruby version 1.8.3
and greater. Note that versions of Ruby from 2.0.x to 2.2.x may no longer be
supported by Homebrew. For Puppet 3 support, please pin to version 1.7.1.

puppet-homebrew is available on the `Puppet Forge`_.

Usage
-----

Installing Packages
~~~~~~~~~~~~~~~~~~~

Use the Homebrew package provider like this:

.. code-block:: puppet

class hightower::packages {
pkglist = ['postgresql', 'nginx', 'git', 'tmux']

package { $pkglist:
ensure => present,
provider => brew,
}
}

The providers works as follows:

* ``provider => brew``: install using ``brew install ``. Do not use
brewcask.
* ``provider => brewcask``: install using ``brew cask install ``. Only use
brewcask.
* ``provider => homebrew``: attempt to install using ``brew install ``. On
failure, use ``brew cask install ``

Tapping Repositories
~~~~~~~~~~~~~~~~~~~~

To tap into new Github repositories, simply use the tap provider:

.. code-block:: puppet

package { 'neovim/neovim':
ensure => present,
provider => tap,
}

You can untap a repository by setting ensure to ``absent``.

Ordering Taps
^^^^^^^^^^^^^

When both tapping a repo and installing a package from that repository, it is
important to make sure the former happens first. This can be accomplished in a
few different ways: either by doing so on a per-package basis:

.. code-block:: puppet

package { 'neovim/neovim':
ensure => present,
provider => tap,
} ->
package { 'neovim':
ensure => present,
provider => homebrew,
}

or by setting all taps to occur before all other usages of this package with
`Resource Collectors`_:

.. code-block:: puppet

# pick whichever provider(s) are relevant
Package <| provider == tap |> -> Package <| provider == homebrew |>
Package <| provider == tap |> -> Package <| provider == brew |>
Package <| provider == tap |> -> Package <| provider == brewcask |>

Installing Brew
~~~~~~~~~~~~~~~

To install homebrew on a node (with a compiler already present!):

.. code-block:: puppet

class { 'homebrew':
user => 'hightower',
group => 'developers', # defaults to 'admin'
multiuser => false, # set to true to enable multiuser support for homebrew
}

Installing homebrew as the root user is no longer supported (as of late 2016).
Please ensure you install brew as a standard (non-root) user.

Note that some users have reported confusion between the *puppet* user and the
*homebrew* user -- it is perfectly fine to run puppet as root, in fact this is
encouraged, but the homebrew user must be non-root (generally, the system's main
user account).

If you run puppet as a non-root user and set the ``homebrew::user`` to a
*different* non-root user, you may run into issues; namely, since this module
requires the puppet user act as the homebrew user, you may get a password
prompt on each run. This can be fixed by allowing the puppet user passwordless
sudo privileges to the homebrew user.

If you are looking for a multi-user installation, please be sure to set the
multi-user flag, eg.:

.. code-block:: puppet

class { 'homebrew':
user => 'kevin',
group => 'all-users',
multiuser => true,
}

To install homebrew and a compiler (on Lion or later), eg.:

.. code-block:: puppet

class { 'homebrew':
user => 'kevin',
command_line_tools_package => 'command_line_tools_for_xcode_os_x_lion_april_2013.dmg',
command_line_tools_source => 'http://devimages.apple.com/downloads/xcode/command_line_tools_for_xcode_os_x_lion_april_2013.dmg',
}

N.B. the author of this module does not maintain a mirror to command_line_tools.
You may need to search for a copy if you use this method. At the time of this
writing, downloading the command line tools sometimes requires an Apple ID.
Sorry, dude!

Adding a Github Token
~~~~~~~~~~~~~~~~~~~~~

Homebrew uses a Github token in your environment to make your experience better
by:

- Reducing the rate limit on ``brew search`` commands
- Letting you tap your private repositories
- Allowing you to upload Gists of brew installation errors

To enable this feature, you can include:

.. code-block:: puppet

class { 'homebrew':
user => 'kevin',
github_token => 'MyT0k3n!',
}

Here's a link to `create a personal access token`_ for Github.

Original Author
---------------

Original credit for this module goes to `kelseyhightower`_. This module was
forked to provide brewcask integration.

Credit for logic involved in tapping repositories goes to `gildas`_.

.. _create a personal access token: https://github.com/settings/tokens/new?scopes=&description=Homebrew
.. _gildas: https://github.com/gildas/puppet-homebrew
.. _kelseyhightower: https://github.com/kelseyhightower
.. _Puppet Forge: https://forge.puppetlabs.com/thekevjames/homebrew
.. _Resource Collectors: https://docs.puppet.com/puppet/latest/reference/lang_collectors.html