-
Notifications
You must be signed in to change notification settings - Fork 25.8k
Provide a declarative way to manage plugins #70219
Copy link
Copy link
Closed
Labels
:Core/Infra/PluginsPlugin API and infrastructurePlugin API and infrastructure:Delivery/PackagingRPM and deb packaging, tar and zip archives, shell and batch scriptsRPM and deb packaging, tar and zip archives, shell and batch scriptsTeam:Core/InfraMeta label for core/infra teamMeta label for core/infra teamTeam:DeliveryMeta label for Delivery teamMeta label for Delivery team
Metadata
Metadata
Assignees
Labels
:Core/Infra/PluginsPlugin API and infrastructurePlugin API and infrastructure:Delivery/PackagingRPM and deb packaging, tar and zip archives, shell and batch scriptsRPM and deb packaging, tar and zip archives, shell and batch scriptsTeam:Core/InfraMeta label for core/infra teamMeta label for core/infra teamTeam:DeliveryMeta label for Delivery teamMeta label for Delivery team
Type
Fields
Give feedbackNo fields configured for issues without a type.
Today management of plugins is done through a CLI tool that exposes
list,install, andremovecommands. 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.ymlthat 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 likebatch: trueto 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.