Skip to content

Latest commit

 

History

78 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

install-puppet

One-shot shell script that can be used to install puppet-agent on a supported POSIX platform.

Description

This repository contains a Ruby script (install.rb), which when executed will generate an install.sh file to be used for installing puppet-agent on supported FOSS POSIX platforms.

The script leverages Bolt tasks from the puppet_agent and facts modules, and attempts to change as few things as possible in order to create a working shell script which can be used with little to no external dependencies

Getting Started

Dependencies

  • A non-Windows platform for which Puppet provides official packages (see the full list here)
  • One of wget/curl/fetch/perl-LWP-Simple in order to download packages
  • bash (probably at least version 3)
  • Ability to run the script as root

Usage

Install with curl

curl -sSL https://raw.githubusercontent.com/puppetlabs/install-puppet/main/install.sh | bash

Install with wget

wget -qO - https://raw.githubusercontent.com/puppetlabs/install-puppet/main/install.sh | bash

Piping to bash is a controversial practice, so you are encouraged to inspect the contents of the script before executing it.

Script arguments

To pass flags via the curl-pipe pattern:

curl -sSL https://raw.githubusercontent.com/puppetlabs/install-puppet/main/install.sh | bash -s -- -v 6.24.0

Below is the full list of configurable options:

  • -v/--version - install a specific puppet-agent version
  • -c/--collection - install a specific puppet-agent collection (e.g. puppet7)
  • -u/--username - username for Puppet Core package downloads, paired with --password; defaults to forge-key
  • -p/--password - Forge API key or PE License ID, paired with --username
  • -n/--noop - do a dry run, do not change any files
  • --cleanup - remove the puppetlabs repository after installation finishes

Installing Puppet Core

Puppet 8.11.0 and later are distributed as Puppet Core, under puppetcore* collections (e.g. puppetcore9), and require a Forge API key. The puppet/puppet7/puppet8 collections are still free, but are frozen at their last pre-Core release (puppet8 stopped at 8.10) - any 8.11+ release only ships via puppetcore8.

To get a Forge API key:

  1. Log in at forge.puppet.com.
  2. Accept the Puppet Core EULA: profile menu → PuppetPuppet Core EULA.
  3. Enable MFA: profile → Settings → "Use Multifactor Authentication" (required before you can create a key).
  4. Profile → API KeysCreate a new key, and copy it immediately - Forge only displays it once.
./install.sh -v 9.0.0 -c puppetcore9 -u forge-key -p <FORGE_KEY>

Using PE License ID: You must use forge-key to download Puppet Core packages from yum-puppetcore.puppet.com or apt-puppetcore.puppet.com. However, either forge-key or license-id (associated with Puppet Enterprise) can be used to download artifacts from artifacts-puppetcore.puppet.com and Ruby gems from rubygems-puppetcore.puppet.com.

./install.sh -v 9.0.0 -c puppetcore9 -u license-id -p "$LICENSE_ID"

Development

The Ruby script uses parts of the bash.sh task from the facts module, and the install_shell.sh task from the puppet_agent module to generate the install.sh file. The modules are vendored as git submodules; in order to initialize them, run git submodule update --init after cloning this repository.

After making your changes, run the following command to regenerate the shell script:

ruby install.rb

You can also run shellcheck on the resulting script, it will skip the vendored task parts and only warn on code specific to this repository.

shellcheck install.sh

License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details

About

Shell script that downloads and installs puppet-agent

Resources

Code of conduct

Contributing

Security policy

Stars

4 stars

Watchers

42 watching

Forks

Releases

Packages

Used by

Contributors

Languages