{"id":15022692,"url":"https://github.com/puppetlabs/puppetlabs-puppet_agent","last_synced_at":"2025-05-14T19:02:25.070Z","repository":{"id":31494742,"uuid":"35058943","full_name":"puppetlabs/puppetlabs-puppet_agent","owner":"puppetlabs","description":"Module for managing Puppet-Agent","archived":false,"fork":false,"pushed_at":"2025-04-09T22:55:24.000Z","size":1866,"stargazers_count":42,"open_issues_count":15,"forks_count":193,"subscribers_count":157,"default_branch":"main","last_synced_at":"2025-04-09T23:35:21.301Z","etag":null,"topics":["module","supported"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/puppetlabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-05-04T20:50:16.000Z","updated_at":"2025-04-09T22:55:29.000Z","dependencies_parsed_at":"2023-02-16T17:46:15.932Z","dependency_job_id":"f59fb684-b935-493a-a108-740c1f5c6bd4","html_url":"https://github.com/puppetlabs/puppetlabs-puppet_agent","commit_stats":{"total_commits":851,"total_committers":152,"mean_commits":5.598684210526316,"dds":0.8989424206815511,"last_synced_commit":"26310e3028a3d54a603dc02c75019bd19c0e8b8a"},"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppetlabs-puppet_agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppetlabs-puppet_agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppetlabs-puppet_agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppetlabs-puppet_agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/puppetlabs","download_url":"https://codeload.github.com/puppetlabs/puppetlabs-puppet_agent/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248710409,"owners_count":21149186,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["module","supported"],"created_at":"2024-09-24T19:58:16.709Z","updated_at":"2025-04-13T11:47:16.451Z","avatar_url":"https://github.com/puppetlabs.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# puppet_agent\n\n[![Modules Status](https://github.com/puppetlabs/puppetlabs-puppet_agent/actions/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-puppet_agent/actions/workflows/daily_unit_tests_with_nightly_puppet_gem.yaml)\n[![Modules Status](https://github.com/puppetlabs/puppetlabs-puppet_agent/workflows/Static%20Code%20Analysis/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-puppet_agent/actions)\n[![Modules Status](https://github.com/puppetlabs/puppetlabs-puppet_agent/workflows/Unit%20Tests%20with%20nightly%20Puppet%20gem/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-puppet_agent/actions)\n[![Modules Status](https://github.com/puppetlabs/puppetlabs-puppet_agent/workflows/Unit%20Tests%20with%20released%20Puppet%20gem/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-puppet_agent/actions)\n[![Modules Status](https://github.com/puppetlabs/puppetlabs-puppet_agent/workflows/Task%20Acceptance%20Tests/badge.svg?branch=main)](https://github.com/puppetlabs/puppetlabs-puppet_agent/actions)\n\n\n#### Table of Contents\n- [puppet_agent](#puppet_agent)\n      - [Table of Contents](#table-of-contents)\n  - [Overview](#overview)\n  - [Module Description](#module-description)\n  - [Setup](#setup)\n    - [What puppet_agent affects](#what-puppet_agent-affects)\n    - [Setup requirements](#setup-requirements)\n    - [Beginning with puppet_agent](#beginning-with-puppet_agent)\n  - [Usage](#usage)\n  - [Using alternate sources](#using-alternate-sources)\n    - [Public downloads mirrors](#public-downloads-mirrors)\n    - [Absolute paths to packages](#absolute-paths-to-packages)\n    - [Alternate PE master location](#alternate-pe-master-location)\n  - [Reference](#reference)\n    - [Public classes](#public-classes)\n    - [Private classes](#private-classes)\n    - [Parameters](#parameters)\n      - [Class: puppet_agent](#class-puppet_agent)\n        - [`arch`](#arch)\n        - [`collection`](#collection)\n        - [`is_pe`](#is_pe)\n        - [`manage_repo`](#manage_repo)\n        - [`package_version`](#package_version)\n        - [`service_names`](#service_names)\n        - [`source`](#source)\n        - [`absolute_source`](#absolute_source)\n        - [`yum_source`](#yum_source)\n        - [`apt_source`](#apt_source)\n        - [`mac_source`](#mac_source)\n        - [`windows_source`](#windows_source)\n        - [`solaris_source`](#solaris_source)\n        - [`aix_source`](#aix_source)\n        - [`use_alternate_sources`](#use_alternate_sources)\n        - [`alternate_pe_source`](#alternate_pe_source)\n        - [`install_dir`](#install_dir)\n        - [`disable_proxy`](#disable_proxy)\n        - [`proxy`](#proxy)\n        - [`install_options`](#install_options)\n        - [`msi_move_locked_files`](#msi_move_locked_files)\n        - [`wait_for_pxp_agent_exit`](#wait_for_pxp_agent_exit)\n        - [`wait_for_puppet_run`](#wait_for_puppet_run)\n        - [`config`](#config)\n    - [Plans](#plans)\n      - [`puppet_agent::run`](#puppet_agentrun)\n    - [Tasks](#tasks)\n      - [`puppet_agent::version`](#puppet_agentversion)\n      - [`puppet_agent::install`](#puppet_agentinstall)\n      - [`puppet_agent::facts_diff`](#puppet_agentfacts_diff)\n      - [`puppet_agent::delete_local_filebucket`](#puppet_agentdelete_local_filebucket)\n  - [Limitations](#limitations)\n    - [Known issues](#known-issues)\n  - [Development](#development)\n  - [Codeowners](#codeowners)\n\n## Overview\n\nA module for installing, running, upgrading, and managing the configuration of Puppet agents. Supports upgrading from Puppet 6 puppet-agent packages to later versions including Puppet 7 and Puppet 8.\n\n## Module Description\n\nThe puppet_agent module installs the appropriate official Puppet package repository (on systems that support repositories); migrates configuration required by Puppet to new locations used by puppet-agent; and installs the puppet-agent package, removing the previous Puppet installation.\n\nIf a package_version parameter is provided, it will ensure that puppet-agent version is installed. The package_version parameter is required to perform upgrades starting from a puppet-agent package, also this parameter can be set to \"auto\", ensuring that agent version matches the version on the master without having to manually update package_version after upgrading the master(s). On platforms that install packages through repos (EL, Fedora, Debian, Ubuntu, SLES), the parameter can be set to \"latest\" in order to install the latest available package. To only ensure the presence of the package, the parameter can be set to \"present\".\n\nIf a config parameter is provided, it will manage the defined agent configuration settings.\n\n## Setup\n\n### What puppet_agent affects\n\n* Puppet, Facter, and Hiera.\n* Puppet's SSL directory and puppet.conf.\n* Removes deprecated settings from puppet.conf.\n\n### Setup requirements\n\nYour agents must be running a minimum version of Puppet 6. They should already be pointed at a master running Puppet Server 6 or greater, and thus successfully applying catalogs compiled with the Puppet 6 or newer language.\n\n### Beginning with puppet_agent\n\nInstall the puppet_agent module with `puppet module install puppetlabs-puppet_agent`.\n\n## Usage\n\nAdd the class to agents you want to upgrade, specifying the desired puppet-agent version:\n\n``` puppet\nclass {'::puppet_agent':\n  package_version =\u003e '7.23.0',\n}\n```\n\nThis will ensure the version `7.23.0` of the puppet-agent package is installed.\n\n## Using alternate sources\n\nIn cases where you wish to download agents from sources other than the defaults you can use source parameters to change the location to grab packages from.\n\n### Public downloads mirrors\n\nIf you wish to mirror the Puppet public downloads sites (yum.puppet.com, apt.puppet.com, downloads.puppet.com) you can provide the following parameters to change the location of downloads:\n\n* `yum_source`\n* `apt_source`\n* `mac_source`\n* `windows_source`\n* `solaris_source`\n* `aix_source`\n\nFor AIX and Solaris packages: because AIX and Solaris are PE only you must use puppetlabs-pe_repo to create repos for these platforms on the PE master, then mirror the PE master package serve.\n\nWhen working with a PE installation: if you set `use_alternate_sources` to `true` you can force agent downloads to come from downloads sites (or a mirror if you set the source parameters) rather than the PE master. **WARNING** This parameter will override the default settings in PE installations to download packages from the PE master. If you wish to continue to download from the PE master _do not_ set this parameter.\n\n### Absolute paths to packages\n\nIf your packages are already available on the target system (for example if you are using a network share) you can provide `absolute_source` the path to the packages to use during installation.\n\n**WARNING** You must provide the full path, including the package name, for this parameter to work. This also means you cannot provide the same `absolute_source` for two different types of packages.\n\n### Alternate PE master location\n\nIf you are using puppetlabs-pe_repo to serve packages, but want to provide a location other than the current master to serve packages: use `alternate_pe_source` to specify a seperate location where packages are located in the same structure that would be on a PE master.\n\n## Reference\n\n### Public classes\n* [`puppet_agent`](#class-puppetagent)\n\n### Private classes\n* `puppet_agent::install`: Installs packages.\n* `puppet_agent::osfamily::*`: Platform-specific preparation performed before upgrades.\n* `puppet_agent::prepare`: Prepares the agent for upgrade.\n* `puppet_agent::prepare::package`: Stages packages locally for install, on platforms that can't install from remote packages.\n* `puppet_agent::prepare::*`: Prepare various file configurations.\n* `puppet_agent::service`: Ensures the services are running.\n* `puppet_agent::windows::install`: Handles Windows package installation.\n\n### Parameters\n\n#### Class: puppet_agent\n\n##### `arch`\n\nThe architecture version you wish to install. Defaults to `$facts['os']['architecture']`.\n``` puppet\n  arch =\u003e 'x86_64'\n```\n\n##### `collection`\n\nThe Puppet Collection to track, should be a supported collection  (e.g. `puppet7` or `puppet8`).  Puppet collections contain the latest agents included in the collection's series, so `puppet7` will pull in the most recent Puppet 5 release (for example: 7.23.0).  **This parameter is required for installations not connected to Puppet Enterprise**\n``` puppet\n  collection =\u003e 'puppet7'\n```\n\n##### `is_pe`\n\nInstall from Puppet Enterprise (PE) repos. Enabled if communicating with a PE master.\n``` puppet\n  is_pe =\u003e true\n```\n\n##### `manage_repo`\n\nBoolean to determine whether to configure zypper/yum/apt/solaris repositories. Defaults to `true`.\nIf set to false, it is assumed an internally hosted repository will be used for the installation,\nand the native package providers will be used to query pre-configured repos on the host being upgraded.\n``` puppet\n  manage_repo =\u003e true\n```\n\n##### `package_version`\n\nThe package version to upgrade to. This must be explicitly specified.\n``` puppet\n  package_version =\u003e '7.23.0'\n```\nor\n``` puppet\n  package_version =\u003e 'auto'\n```\nor\n``` puppet\n  package_version =\u003e 'latest'\n```\nor\n``` puppet\n  package_version =\u003e 'present'\n```\n\n##### `service_names`\n\nAn array of services to start, normally `puppet`. If the array is empty, no services are started.\n``` puppet\n  service_names =\u003e ['puppet']\n```\n\n\n##### `source`\n\nINCLUDED FOR COMPATIBILITY WITH MODULE VERSIONS 1.0/2.0. PREFER USE OF \"absolute\\_source\", \"(yum/apt/mac etc.)\\_source\", \"alternate\\_pe\\_source\" OVER USE OF \"source\".\n\nThe location to find packages. Replaces base URL for unix/MacOS agents, used as fully qualified path in windows.\n\nUnix/MacOS\n``` puppet\n  source =\u003e 'https://alternate-pe-master.com:8140'\n```\n\nWindows\n``` puppet\n  source =\u003e 'C:/packages/puppet-agent-7.23.0-x64.msi'\n```\n\n##### `absolute_source`\n\nAbsolute (\"fully qualified\") source path from which you wish to download the latest version of Puppet. No path structure or package name is assumed: the fully qualified path to the package itself must be provided.\n``` puppet\n  absolute_source =\u003e 'C:/packages/puppet-agent-7.23.0-x64.msi'\n```\n\n##### `yum_source`\n\nBase URL of a location or mirrors of yum.puppet.com downloads sites. Directories under the URL should match the structure of yum.puppet.com\n``` puppet\n  yum_source =\u003e 'https://my-puppet-yum-mirror.com'\n```\n\n##### `apt_source`\n\nBase URL of a location or mirrors of apt.puppet.com downloads sites. Directories under the URL should match the structure of apt.puppet.com\n``` puppet\n  apt_source =\u003e 'https://my-puppet-apt-mirror.com'\n```\n\n##### `mac_source`\n\nBase URL of a location or mirrors of downloads.puppet.com downloads site that serves MacOS packages. Directories under the URL should match the structure of the downloads.puppet.com site\n``` puppet\n  mac_source =\u003e 'https://my-puppet-downloads-mirror.com'\n```\n\n##### `windows_source`\n\nURL of a location or mirrors of downloads.puppet.com downloads site that serves packages. Directories under the URL should match the structure of downloads.puppet.com site\n``` puppet\n  windows_source =\u003e 'https://my-puppet-downloads-mirror.com'\n```\n\n##### `solaris_source`\n\nBase URL of the location of a mirror for Solaris packages. Currently, solaris packages can only be made available by using puppetlabs-pe\\_repo. This means the mirror must be of a PE master package serve.\n``` puppet\n  solaris_source =\u003e 'https://my-pe_master-mirror.com'\n```\n\n##### `aix_source`\n\nBase URL of the location of a mirror for AIX packages. Currently, AIX packages can only be made available by using puppetlabs-pe\\_repo. This means the mirror must be of a PE master package serve.\n``` puppet\n  aix_source =\u003e 'https://my-pe_master-mirror.com'\n```\n\n\n##### `use_alternate_sources`\n\n**ONLY APPLICABLE WHEN WORKING WITH PE INSTALLTIONS**\n\nWhen set to true will force downloads to come from the values of $apt\\_source, $deb\\_source $mac\\_source etc. rather than from the default PE master package serve. Note that this will also force downloads to ignore alternate\\_pe\\_source.\n``` puppet\n  use_alternate_sources =\u003e true\n```\n\n##### `alternate_pe_source`\n\nBase URL of a location where packages are located in the same structure that's served by a PE master (the directory structure in PE for serving packages is created by the puppetlabs-pe\\_repo module). The general structure served by PE is: `/packages/${pe_server_version}/${platform_tag}/${package_name}`\n``` puppet\n  alternate_pe_source =\u003e 'https://my-alternate-pe-master.com:8140'\n```\n\n##### `install_dir`\n\nThe directory the puppet agent should be installed to. This is only applicable for Windows operating systems and when upgrading the agent to a new version; it will not cause re-installation of the same version to a new location. This must use backslashes for the path separator, and be an absolute path, for example:\n``` puppet\n  install_dir =\u003e 'D:\\Program Files\\Puppet Labs'\n```\n\n##### `disable_proxy`\n\nThis setting controls whether or not the Puppet repositories are configured with proxies. Currently this is only supported on RedHat-based OSes.\n``` puppet\n  disable_proxy =\u003e true\n```\n\n##### `proxy`\n\nThis setting specifies the proxy with which to configure the Puppet repos. Currently this is only supported on RedHat-based OSes.\n``` puppet\n  proxy =\u003e 'http://myrepo-proxy.example.com'\n```\n\n##### `install_options`\n\nAn array of additional options to pass when installing puppet-agent. Each option in the array can be either a string or a hash. Each option is automatically quoted when passed to the install command.\n\nWith Windows packages, note that file paths in `install_options` must use backslashes. (Since install options are passed directly to the installation command, forward slashes aren't automatically converted like they are in `file` resources.) Backslashes in double-quoted strings _must_ be escaped, while backslashes in single-quoted strings _can_ be escaped. The default value for Windows packages is `REINSTALLMODE=\"amus\"`.\n\nThe full list of supported MSI properties can be found [here](https://puppet.com/docs/puppet/latest/install_agents.html#msi_properties).\n\nThe Puppet installer can disable the [Windows path length limit](https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation) (260 character `MAX_PATH` limitation, requires Windows 10 1607 or later). This behavior is opt-in and can be controlled by the presence of the `ENABLE_LONG_PATHS` install option (the value does not matter). (*requires Puppet \u003e= 6.25.0/7.10.0*)\n\n``` puppet\n  install_options =\u003e ['PUPPET_AGENT_ACCOUNT_DOMAIN=ExampleCorp', 'PUPPET_AGENT_ACCOUNT_USER=bob', 'PUPPET_AGENT_ACCOUNT_PASSWORD=password', 'ENABLE_LONG_PATHS=true']\n```\n\nFor [gMSAs](https://docs.microsoft.com/en-us/windows-server/security/group-managed-service-accounts/group-managed-service-accounts-overview), you must specify the domain and gMSA user, such as:\n\n``` puppet\n  install_options =\u003e ['PUPPET_AGENT_ACCOUNT_DOMAIN=\u003cAGENT_DOMAIN_NAME\u003e', 'PUPPET_AGENT_ACCOUNT_USER=\u003cgMSA_USER\u003e']\n```  \n\n##### `msi_move_locked_files`\n\nThis is only applicable for Windows operating systems and for Puppet 5 prior to 5.5.17 or Puppet 6 prior to 6.8.0. There may be instances where file locks cause unnecessary service restarts.  By setting to true, the module will move files prior to installation that are known to cause file locks. By default this is set to false.\n\n``` puppet\n  msi_move_locked_files =\u003e true\n```\n\nIn case `msi_move_locked_files` is set to `true` while upgrading to Puppet 5 following 5.5.17 or Puppet 6 following 6.8.0, Puppet can get into a state where `puppet --version` reports the older version(5.5.16) while the package reported by Windows is the new version(5.5.17). To recover from this case `ADDLOCAL=ALL` must be added to install_options\n``` puppet\n  install_options =\u003e ['REINSTALLMODE=\"amus\"', 'ADDLOCAL=ALL']\n```\n\n#### `wait_for_pxp_agent_exit`\n\nThis is only applicable for Windows operating systems and pertains to /files/install_puppet.ps1 script. This parameterizes the module to define the wait time for the PXP agent to end successfully. The default value is 2 minutes and the timeout value must be defined in milliseconds. Example below, 8 minutes is equal to 480000.\n\n``` puppet\n  wait_for_pxp_agent_exit =\u003e 480000\n```\n\n#### `wait_for_puppet_run`\n\nThis is only applicable for Windows operating systems and pertains to /files/install_puppet.ps1 script. This parameterizes the module to define the wait time for the current puppet agent run to end successfully. The default value is 2 minutes and the timeout value must be defined in milliseconds. Example below, 8 minutes is equal to 480000.\n\n``` puppet\n  wait_for_puppet_run =\u003e 480000\n```\n\n#### `config`\n\nAn array of configuration data to enforce. Each configuration data item must be a Puppet\\_agent::Config hash, which has keys for puppet.conf section, setting, and value.  This parameter is constrained to managing only a predetermined set of configuration settings. E.g. runinterval. The optional \"ensure\" key in a Puppet\\_agent::Config hash can be used to ensure a setting is absent. In the example below, the runinterval setting in the main section is set to 1 hour, and a local environment setting is ensured absent.\n\n``` puppet\n  config =\u003e [{section =\u003e main, setting =\u003e runinterval, value =\u003e '1h'},\n             {section =\u003e main, setting =\u003e environment, ensure =\u003e absent}]\n```\n\nValid agent settings are defined by the [`Puppet_agent::Config_setting`](types/config_setting.pp) type alias.\n\n### Plans\n\n#### `puppet_agent::run`\n\nStarts a Puppet agent run on the specified targets.\n\n**Parameters**\n\n- `targets`: A list of targets to start the Puppet agent run on.\n\n**Return value**\n\nReturns a `ResultSet` object. Targets that do not have an agent installed will have a failing\n`Result` object. For targets that have an agent installed and successfully ran the agent,\nthe `Result` object will include the output of the agent run, the detailed exit code, and the\ncontents of the run report.\n\n```\n{\n  \"_output\": \u003coutput\u003e,\n  \"exitcode\": \u003cexitcode\u003e,\n  \"report\": \u003creport\u003e\n}\n```\n\n### Tasks\n\n#### `puppet_agent::version`\n\nChecks for the version of puppet-agent package installed.\n\n**Return value**\n\nThe `puppet_agent::version` task returns a Result on success specifying the version of the agent installed and how it was detected.\n\n```\n{\n  \"version\": \u003cversion\u003e,\n  \"source\": \u003csource\u003e\n}\n```\n\n#### `puppet_agent::install`\n\nInstalls the puppet-agent package.  This task should not be used for upgrading agents particularly Windows agents which have requirements other than just installing the puppet-agent msi.\nFor upgrading Windows agents please use the `puppet_agent` class through your standard Puppet deployment or via [Bolt with Puppet apply](https://puppet.com/docs/bolt/latest/applying_manifest_blocks.html).    \n\n\u003e **Note:** The `puppet_agent::install_shell` task requires the `facts::bash` implementation from the [facts](https://forge.puppet.com/puppetlabs/facts) module. Both the `puppet_agent` and `facts` modules are packaged with Bolt. For use outside of Bolt make sure the `facts` module is installed to the same `modules` directory as `puppet_agent`.\n\n**Return value**\n\nThe task returns the output of the installation script.\n\n\n#### `puppet_agent::facts_diff`\n\nExecutes `puppet facts diff` action to check if there are differences between Facter 3 and Facter 4 outputs. (*requires Puppet \u003e= 6.21.0*)\n\n**Parameters**\n\n- `exclude`: Regex used to exclude specific facts from diff. (*requires Puppet \u003e= 6.22.0*)\n\n**Return value**\n\nReturns a `ResultSet` object containing the differences.\n\n```\n{\n  \"foo\": {\n    \"new_value\": \"bar\",\n    \"old_value\": \"baz\"\n  }\n}\n```\n\n#### `puppet_agent::delete_local_filebucket`\n\nRemoves the local filebucket cache. The location of the filebucket is determined using the `clientbucketdir` puppet config.\n\n**Parameters**\n\n- `force`: ignore nonexistent files and errors.\n\n**Return value**\n\nReturns a `ResultSet` object.\n\n```\n{:success=\u003etrue}\n```\n\n## Limitations\n\nMac OS X/macOS open source packages are not supported in puppet_agent module releases prior to v2.1.0.\n\n### Known issues\n\nWindows platforms:\n\n* To upgrade the agent by executing `puppet agent -t` interactively in a console, you must leave the console open and wait for the upgrade to finish before attempting to use the `puppet` command again. During upgrades the upgrade scripts use a 'pid file' located at Drive:\\ProgramData\\PuppetLabs\\puppet\\cache\\state\\puppet_agent_upgrade.pid to indicate there is an upgrade in progress. The 'pid file' also contains the process ID of the upgrade, if you wish to track the process itself.\n\n* MSI installation failures do not produce any error. If the install fails, puppet_agent continues to be applied to the agent. If this happens, you'll need to examine the MSI log file to determine the failure's cause. You can find the location of the log file in the debug output from either a puppet apply or an agent run; the log file name follows the pattern `puppet-\u003ctimestamp\u003e-installer.log`.\n\n* If the upgrade is from Puppet 5 prior to 5.5.17 or Puppet 6 prior to 6.8.0 to newer version and `msi_move_locked_files` is set to `true`, Puppet can get into a state where `puppet --version` reports the older version(5.5.16) while the package reported by Windows is the new version(5.5.17). To recover from this case `ADDLOCAL=ALL` must be added to install_options\n``` puppet\n  install_options =\u003e ['REINSTALLMODE=\"amus\"', 'ADDLOCAL=ALL']\n```\n\n\\*NIX platforms:\n\n* Upgrading on most \\*NIX platforms (Linux, AIX, Solaris 11) will end the run after the puppet-agent upgrade finishes. This is to avoid unexpected behavior if already loaded Ruby code happens to interact with newer code that came with the upgrade, or viceversa. If run as a daemon, Puppet will automatically start a new agent run after the upgrade finishes.\n\n## Development\n\nPuppet, Inc. modules on the Puppet Forge are open projects, and community contributions are essential for keeping them great. We can’t access the huge number of platforms and myriad hardware, software, and deployment configurations that Puppet is intended to serve. We want to keep it as easy as possible to contribute changes so that our modules work in your environment. There are a few guidelines that we need contributors to follow so that we can have a chance of keeping on top of things. For more information, see our [module contribution guide.](https://puppet.com/docs/puppet/latest/contributing.html)\n\n## Codeowners\n\nSee [CODEOWNERS](CODEOWNERS)\n\nTickets: https://tickets.puppetlabs.com/browse/MODULES\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs%2Fpuppetlabs-puppet_agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpuppetlabs%2Fpuppetlabs-puppet_agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs%2Fpuppetlabs-puppet_agent/lists"}