Uploaded image for project: 'Puppet Agent'
  1. Puppet Agent
  2. PA-1885

Allow hard gem dependencies to be added to puppet/puppet-agent without breaking puppetserver



    • Epic
    • Status: Closed
    • Normal
    • Resolution: Fixed
    • None
    • puppet-agent 5.5.0
    • None
    • None
    • Unblock puppet-agent gem dependencies
    • Platform OS
    • Done
    • New Feature
    • Packaging changes allow puppetserver to load pure ruby gems from puppet-agent's /opt/puppetlabs/puppet/lib/ruby/vendor_gems directory.
    • Needs Assessment


      JRuby cannot load gems with native extensions. To avoid that issue, puppetserver maintains a set of gems separate from puppet-agent. However, this means if puppet-agent (or puppet) adds a hard dependency on a gem like semantic_puppet or multi_json then the puppet-agent package will be incompatible with puppetserver. Since we don't have packaging constraints to prevent newer puppet-agent packages to be installed with older puppetserver, we haven't been able to move forward with unvendoring semantic_puppet or adding a dependency with multi_json. This is also an issue for moving non-core types and providers, as puppetserver needs access to the types for compilation.

      We need to figure out a way that we can add and remove hard gem dependencies to puppet (or other puppet-agent components) without breaking puppetserver.

      One approach we've discussed is to have puppet-agent package pure ruby gems into a specific directory, that both puppet-agent and puppetserver can load from.

      Another approach is for puppetserver to vendor the puppet ruby code (as a library) and to install its transitive dependencies.


        Issue Links



              Unassigned Unassigned
              josh Josh Cooper
              0 Vote for this issue
              2 Start watching this issue



                Zendesk Support