Uploaded image for project: 'Puppet'
  1. Puppet
  2. PUP-8582

Add vendor_modules to basemodulepath

    Details

    • Type: Task
    • Status: Closed
    • Priority: Normal
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: PUP 6.0.0
    • Component/s: None
    • Labels:
      None
    • Template:
    • Acceptance Criteria:
      Hide

      When running puppetserver, the server should be able to compile a catalog when the manifest contains a resource whose type/provider is in the server's vendored module path, e.g. mailalias.

      When running puppetserver, if a new version of a module is installed on the server, e.g. puppet module install, the server should prefer that over the vendored version.

      When running puppet agent, the agent should always pluginsync and use the same version of type/provider as was used to compile the catalog, even if the agent has a local vendored version. Note this behavior is broken until PUP-8696 is resolved.

      When running puppet apply/describe/resource/etc, puppet should prefer its vendored modules over whatever it pluginsynced.

      When running puppet apply/describe/resource/etc, if a new version is installed on the local host, then puppet should prefer that over vendored versions.

      If the basemodulepath setting is set of $codedir/modules, then puppet should ignore vendored modules for server, agent, apply, etc.

      Show
      When running puppetserver, the server should be able to compile a catalog when the manifest contains a resource whose type/provider is in the server's vendored module path, e.g. mailalias. When running puppetserver, if a new version of a module is installed on the server, e.g. puppet module install, the server should prefer that over the vendored version. When running puppet agent, the agent should always pluginsync and use the same version of type/provider as was used to compile the catalog, even if the agent has a local vendored version. Note this behavior is broken until PUP-8696 is resolved. When running puppet apply/describe/resource/etc, puppet should prefer its vendored modules over whatever it pluginsynced. When running puppet apply/describe/resource/etc, if a new version is installed on the local host, then puppet should prefer that over vendored versions. If the basemodulepath setting is set of $codedir/modules, then puppet should ignore vendored modules for server, agent, apply, etc.
    • Team:
      Coremunity
    • Sprint:
      Platform Core KANBAN
    • Release Notes:
      New Feature
    • Release Notes Summary:
      Hide
      Puppet's default basemodulepath now includes a vendored modules directory, which enables puppet to load modules that are vendored in the puppet-agent package. To prevent puppet from loading modules from this directory, change the basemodulepath back to its previous value, e.g. on *nix "$codedir/modules:/opt/puppetlabs/puppet/modules". On Windows: "$codedir/modules"
      Show
      Puppet's default basemodulepath now includes a vendored modules directory, which enables puppet to load modules that are vendored in the puppet-agent package. To prevent puppet from loading modules from this directory, change the basemodulepath back to its previous value, e.g. on *nix "$codedir/modules:/opt/puppetlabs/puppet/modules". On Windows: "$codedir/modules"
    • QA Risk Assessment:
      Needs Assessment

      Description

      Append the vendored modules directory to the default basemodulepath visible across all environments.

      Pluginsync should download modules' lib directories.
      The compiler should be able to load types from the modules' lib directories.

      The vendored modules directory should have the least precedence (per-environment modulepath, global modulepath, and pluginsync libdir) should all have higher priority, so that the vendored versions can be overrridden.

      puppetserver: installing an updated module should override vendor_modules (from the puppet-agent package on the local host).
      puppet agent: pluginsynced modules should override vendor_modules
      puppet apply/resource: locally installed modules should override vendor_modules

      The modules mount must resolve files in the same way that the autoloader does so that the same type (and its respective provider) used during compilation are pluginsynced to the agent.

      It should be possible to remove the vendored modules directory from the either the basemodulepath or in a per-environment modulepath so that the vendored modules are ignored, eg. trying to compile a manifest should fail if the type is not installed using PMT.

        Attachments

          Issue Links

            Activity

              jsd-sla-details-panel

                People

                • Assignee:
                  josh Josh Cooper
                  Reporter:
                  josh Josh Cooper
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: