Skip to content

Provide a declarative way to manage plugins #70219

@jasontedor

Description

@jasontedor

Today management of plugins is done through a CLI tool that exposes list, install, and remove commands. End-users and orchestration systems must use these tools to manage the installation and removal of the appropriate plugins, including addressing our existing limitation that plugins are version-locked to a patch version of Elasticsearch. These requirements lead to a poor end-user experience, and complexity for orchestration systems.

A simpler approach would be to enable plugins to be managed through a configuration.

For example, one way to do this would be via a declarative list. You could imagine a user-managed elasticsearch-plugins.yml that lists the plugin that an end-user or orchestration system wants installed (this list could be our usual syntax today, a name of an official plugin, Maven coördinates, or a URL). In the Elasticsearch startup script, we could diff this list with the installed plugins, remove those that are not listed, and install those that are. This declarative configuration file could include options like batch: true to install without inspecting permissions, and various other options for controlling how plugins are installed (for example, perhaps we need to enable setting proxy system properties here).

There are, of course, several details to work out (e.g., how do we efficiently obtain the name of non-official plugins for comparing to the list of installed plugins) but the purpose of this issue is to encourage us to investigate ways to install plugins declaratively.

Metadata

Metadata

Assignees

Labels

:Core/Infra/PluginsPlugin API and infrastructure:Delivery/PackagingRPM and deb packaging, tar and zip archives, shell and batch scriptsTeam:Core/InfraMeta label for core/infra teamTeam:DeliveryMeta label for Delivery team

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions