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
- Host: GitHub
- URL: https://github.com/thekevjames/puppet-homebrew
- Owner: TheKevJames
- License: apache-2.0
- Created: 2016-02-15T04:12:08.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2025-04-11T23:05:29.000Z (2 months ago)
- Last Synced: 2025-04-12T00:22:10.998Z (2 months ago)
- Topics: brew, homebrew, puppet, tap
- Language: Ruby
- Homepage: https://forge.puppet.com/thekevjames/homebrew
- Size: 175 KB
- Stars: 18
- Watchers: 7
- Forks: 45
- Open Issues: 25
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Codeowners: .github/CODEOWNERS
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 errorsTo 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