Install a package with chocolatey
Normally, when installing packages you copy them locally first, make any required changes to bring everything they download to an internal location, repackage the package with the edits, and build your own packages to host on your internal package repository (feed). For this exercise, however, you directly install a portable Notepad++ from Chocolatey's community feed. The Notepad++ CommandLine package is portable and shouldn't greatly affect an existing system.
- Update the manifest chocolatey.pp with the following
contents:
package {'notepadplusplus.commandline': ensure => installed, provider => chocolatey, }
- Validate the manifest by running
puppet parser validate c:\<FILE PATH>\chocolatey.pp
in the command prompt. If the parser returns nothing, it means validation passed. - Now, apply the manifest with
puppet apply c:\<FILE PATH>\chocolatey.pp
. Your output should look similar to below.Notice: Compiled catalog for win2012r2x64 in environment production in 0.75 seconds Notice: /Stage[main]/Main/Package[notepadplusplus.commandline]/ensure: created Notice: Applied catalog in 15.51 seconds
If you want to use this package for a production scenario, you need an internal custom
feed. This is simple to set up with the chocolatey_server
module. You could
also use Sonatype Nexus, Artifactory, or a CIFS share if you want to host packages with a
non-Windows option, or you can use anything on Windows that exposes a NuGet OData feed (Nuget is the packaging
infrastructure that Chocolatey uses). See the How To
Host Feed page of the chocolatey
wiki for more in-depth
information. You could also store packages on your primary server and use a file resource to
verify they are in a specific local directory prior to ensuring the packages.
Example
The following example ensures that Chocolatey, the Chocolatey Simple Server (an internal Chocolatey package repository), and some packages are installed. It requires the additional chocolatey/chocolatey_server module.
In c:\<FILE
PATH>\packages
you must have packages for Chocolatey, Chocolatey.Server, RoundhousE, Launchy,
and Git, as well as any of their dependencies for this to work.
case $operatingsystem { 'windows': { Package { provider => chocolatey, source => 'C:\packages', } } } # include chocolatey class {'chocolatey': chocolatey_download_url => 'file:///C:/packages/chocolatey.0.9.9.11.nupkg', use_7zip => false, log_output => true, } # This contains the bits to install the custom server. # include chocolatey_server class {'chocolatey_server': server_package_source => 'C:/packages', } package {'roundhouse': ensure => '0.8.5.0', } package {'launchy': ensure => installed, install_options => ['-override', '-installArgs','"', '/VERYSILENT','/NORESTART','"'], } package {'git': ensure => latest, }