Uploaded image for project: 'Puppet Server'
  1. Puppet Server
  2. SERVER-2539

Add bulk pluginsync ability to puppet server

    XMLWordPrintable

Details

    • Improvement
    • Status: Open
    • Normal
    • Resolution: Unresolved
    • None
    • None
    • None
    • None
    • Needs Assessment

    Description

      Stories

      As a PE user, when I install a new agent and run the agent I do not want to wait minutes for plugins to download and cause a resource bottleneck on my Puppet Servers so that I can reliably run my PE infrastructure.

      As a PE engineer, I'd like to use puppetserver bulk pluginsync for apply blocks over PCP so we can remove edge case bugs around how we implemented pluginsync over PCP.

      Apply Blocks over SSH / WinRM

      This isn't a problem for apply blocks over ssh/winrm because those receive their plugins from bolt-server which basically implements it's own form of bulk pluginsync.

      Background

      In PE we added the ability for the agent to bulk download plugins before installing the agent via the frictionless installation script.

      On the master, a tarball of the plugins is created and placed in a directory for jetty to serve so the frictionless agent install script can pull it down.

      Suggested Improvement

      Instead of having a script outside of puppetserver create a tarball of the plugins that are currently synced to the agent on the master. Puppetserver could be improved to make a tarball whenever code is deployed so it's always up-to-date and the tarball could be made from grabbing the plugins from each module instead of just using the plugins synced to the agent on the master.

      An even further improvement would be to make a tarball for each possible environment instead of just a single environment but the marginal return for this improvement is low for most users.

      Other notes

      There are various other options for improving pluginsync but they may have lower marginal returns:

      • If we create tarballs for each environment then the agent logic could determine if any plugins needed to be synced and if so it should get a new tarball with all the plugins instead of doing individual downloads of each plugin. This is not easy on bandwidth but is more performant. Could be optional.
      • An improvement on the above would be to determine just the files needed by the agent and then send a single artifact needed to get the agent insync with the master.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              nick.walker Nick Walker
              Votes:
              1 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated:

                Zendesk Support