We're excited for you to learn more about what's available in the Business editions!
Travis | AppVeyor |
---|---|
This is a Puppet package provider for chocolatey, which is like apt-get, but for Windows. This should be compatible with a wide range of Puppet versions.
This is the official module for working with the Chocolatey package manager.
This module supports all editions of Chocolatey, including FOSS, Professional and Chocolatey for Business.
This module will ultimately be able to
Chocolatey is a nicer abstraction because it nearly mimics how package managers on other operating systems work. If you can imagine the built in provider for Windows versus Chocolatey, let's take a look at the use case of installing git:
# Using built-in provider
package { "Git version 1.8.4-preview20130916":
ensure => installed,
source => 'C:\temp\Git-1.8.4-preview20130916.exe',
install_options => ['/VERYSILENT']
}
# Using Chocolatey (set as default for Windows)
package { 'git':
ensure => latest,
}
The built-in provider has the following needs:
ensure => latest
- see handling versions and upgrades
Chocolatey's provider on the other hand:
package
more platform agnostic since it looks exactly like other platforms.For reference, let's take a look at the provider features available as compared to the built-in provider and some other package managers:
Chocolatey affects your system and what software is installed on it, ranging from tools and portable software to natively installed applications.
Chocolatey requires the following components
Install this module via any of these approaches:
Ensure Chocolatey is install and configured:
include chocolatey
class {'chocolatey':
choco_install_location => 'D:\secured\choco',
}
class {'chocolatey':
chocolatey_download_url => 'https://internalurl/to/chocolatey.nupkg',
use_7zip => false,
choco_install_timeout_seconds => 2700,
}
class {'chocolatey':
chocolatey_download_url => 'file:///c:/location/of/chocolatey.0.9.9.9.nupkg',
use_7zip => false,
choco_install_timeout_seconds => 2700,
}
class {'chocolatey':
chocolatey_download_url => 'file:///c:/location/of/chocolatey.0.9.9.9.nupkg',
use_7zip => false,
choco_install_timeout_seconds => 2700,
chocolatey_version => '0.9.9.9',
}
class {'chocolatey':
log_output => true,
}
If you want to set this provider as the site-wide default,
add to your site.pp
:
if $::kernel == 'windows' {
Package { provider => chocolatey, }
}
# OR
case $operatingsystem {
'windows': {
Package { provider => chocolatey, }
}
}
package { 'notepadplusplus':
ensure => installed|latest|'1.0.0'|absent,
provider => 'chocolatey',
install_options => ['-pre','-params','"','param1','param2','"'],
uninstall_options => ['-r'],
source => 'https://myfeed.example.com/api/v2',
}
installable
and uninstallable
versionable
so ensure => '1.0'
worksupgradeable
latest
(checks upstream), absent
(uninstall)install_options
for pre-release, other cliuninstall_options
for pre-release, other cliholdable
, requires choco 0.9.9+package { 'notepadplusplus':
ensure => installed,
provider => 'chocolatey',
}
package { 'notepadplusplus':
ensure => latest,
provider => 'chocolatey',
}
package { 'notepadplusplus':
ensure => '6.7.5',
provider => 'chocolatey',
}
package { 'notepadplusplus':
ensure => '6.7.5',
provider => 'chocolatey',
source => 'C:\local\folder\packages',
}
package { 'notepadplusplus':
ensure => '6.7.5',
provider => 'chocolatey',
source => '\\unc\source\packages',
}
package { 'notepadplusplus':
ensure => '6.7.5',
provider => 'chocolatey',
source => 'https://custom.nuget.odata.feed/api/v2/',
}
package { 'notepadplusplus':
ensure => '6.7.5',
provider => 'chocolatey',
source => 'C:\local\folder\packages;https://chocolatey.org/api/v2/',
}
Spaces in arguments must always be covered with a separation. The example
below covers -installArgs "/VERYSILENT /NORESTART"
.
package {'launchy':
ensure => installed,
provider => 'chocolatey',
install_options => ['-override', '-installArgs', '"', '/VERYSILENT', '/NORESTART', '"'],
}
The underlying installer may need quotes passed to it. This is possible, but not
as intuitive. The example below covers passing
/INSTALLDIR="C:\Program Files\somewhere"
.
For this to be passed through with Chocolatey, you will need a set of double
quotes surrounding the argument and two sets of double quotes surrounding the
item that must be quoted (see how to pass/options/switches). This makes the
string look like -installArgs "/INSTALLDIR=""C:\Program Files\somewhere"""
for
proper use with Chocolatey.
Then for Puppet to handle that appropriately, we must split on every space. Yes, on every space we must split the string or the result will come out incorrectly. So this means it will look like the following:
install_options => ['-installArgs',
'"/INSTALLDIR=""C:\Program', 'Files\somewhere"""']
Make sure you have all of the right quotes - start it off with a single double quote, then two double quotes, then close it all by closing the two double quotes and then the single double quote or a possible three double quotes at the end.
package {'mysql':
ensure => latest,
provider => 'chocolatey',
install_options => ['-override', '-installArgs',
'"/INSTALLDIR=""C:\Program', 'Files\somewhere"""'],
}
You can split it up a bit for readability if it suits you:
package {'mysql':
ensure => latest,
provider => 'chocolatey',
install_options => ['-override', '-installArgs', '"'
'/INSTALLDIR=""C:\Program', 'Files\somewhere""',
'"'],
}
Note: The above is for Chocolatey v0.9.9+. You may need to look for an alternative method to pass args if you have 0.9.8.x and below.
chocolatey::install.pp
: Ensures Chocolatey is installed.chocolatey::config.pp
: Ensures Chocolatey is configured.chocolateyversion
- The version of the installed choco client (could also be provided by class parameter chocolatey_version
).choco_install_path
- The location of the installed choco client (could also be provided by class parameter choco_install_location
).Chocolatey implements a package type with a resource provider, which is built into Puppet.
This provider supports the install_options
and uninstall_options
attributes,
which allow command-line options to be passed to the choco command. These options
should be specified as documented below.
choco.exe
, usually found in C:\Program Data\chocolatey\bin\choco.exe
.
ChocolateyInstall
, then by two known locations (C:\Chocolatey\bin\choco.exe
and C:\ProgramData\chocolatey\bin\choco.exe
).C:\Chocolatey
or somewhere besides the default. NOTE: the root of C:\
is not a secure location by default, so you may want to update the security on the folder.install_options
, installable
, uninstall_options
,uninstallable
, upgradeable
, versionable
.ensure
(Property: This attribute represents concrete state on the target system.)
What state the package should be in. You can choose which package to retrieve by
specifying a version number or latest
as the ensure value. This defaults to
installed
.
Valid options: present
(also called installed
), absent
, latest
or a version
number.
install_options
An array of additional options to pass when installing a package. These options are
package-specific, and should be documented by the software vendor. One commonly
implemented option is INSTALLDIR
:
package {'launchy':
ensure => installed,
provider => 'chocolatey',
install_options => ['-installArgs', '"', '/VERYSILENT', '/NORESTART', '"'],
}
The above method of single quotes in an array is the only method you should use
in passing install_options
with the Chocolatey provider. There are other ways
to do it, but they are passed through to Chocolatey in ways that may not be
sufficient.
This is the only place in Puppet where backslash separators should be used. Note that backslashes in double-quoted strings must be double-escaped and backslashes in single-quoted strings may be double-escaped.
name
(Namevar: If ommitted, this attribute's value will default to the resource's title.)
The package name. This is the name that the packaging system uses internally.
provider
The specific backend to use for the package
resource. Chocolatey is not the
default provider for Windows so it must be specified (or by using a resource
default, shown in Usage). Valid options for this provider are 'chocolatey'
.
source
Where to find the package file. Chocolatey maintains default sources in its configuration file that it will use by default. Use this to override the default source(s).
Chocolatey accepts different values for source, including accept paths to local files/folders stored on the target system, URLs (to OData feeds), and network drive paths. Puppet will not automatically retrieve source files for you, and usually just passes the value of source to the package installation command.
You can use a file
resource if you need to manually copy package files to the
target system.
uninstall_options
An array of additional options to pass when uninstalling a package. These options are package-specific, and should be documented by the software vendor.
package {'launchy':
ensure => absent,
provider => 'chocolatey',
uninstall_options => ['-uninstallargs', '"', '/VERYSILENT', '/NORESTART', '"'],
}
The above method of single quotes in an array is the only method you should use
in passing uninstall_options
with the Chocolatey provider. There are other ways
to do it, but they are passed through to Chocolatey in ways that may not be
sufficient.
This is the only place in Puppet where backslash separators should be used. Note that backslashes in double-quoted strings must be double-escaped and backslashes in single-quoted strings may be double-escaped.
Used for managing installation and configuration of Chocolatey itself.
choco_install_location
Where Chocolatey install should be located. This needs to be an absolute path starting with a drive letter e.g. c:\
. Defaults to the currently detected install location based on the ChocolateyInstall
environment variable, falls back to 'C:\ProgramData\chocolatey'
.
use_7zip
Whether to use built-in shell or allow installer to download 7zip to extract chocolatey.nupkg
during installation. Defaults to true
.
choco_install_timeout_seconds
How long in seconds should be allowed for the install of Chocolatey (including .NET Framework 4 if necessary). Defaults to 1500
(25 minutes).
chocolatey_download_url
A url that will return chocolatey.nupkg
. This must be a url, but not necessarily an OData feed. Any old url location will work. Defaults to 'https://chocolatey.org/api/v2/package/chocolatey/'
.
enable_autouninstaller
Should auto uninstaller be turned on? Auto uninstaller is what allows Chocolatey to automatically manage the uninstall of software from Programs and Features without necessarily requiring a chocolateyUninstall.ps1
file in the package. Defaults to true
.
log_output
Log output from the installer. Defaults to false
.
ignore_proxy
Ignores the system proxy during installation when set to true
. Defaults to false
.
choco_install_location =>
in the Chocolatey class, it does not bring any of the existing packages with it. You will need to handle that through some other means.InstallChocolatey.ps1.erb
), it may not show as an error. This may be an issue with the PowerShell provider and is still under investigation.See CONTRIBUTING.md
A special thanks goes out to Rich Siegel who wrote the original provider and continues to contribute to the development of this provider.