dcos storage plugin-configuration update
Update a plugin configuration.
Synopsis
Arguments:
<path> A URL or local path to the plugin configuration JSON. If this is
omitted the volume provider configuration JSON is read from STDIN.
Read more about plugin configurations and when you would use them by running
dcos storage plugin-configuration --help
. In what follows we’ll assume you
are familiar with them and will describe how to add them with examples.
The plugin configuration is updated by passing a JSON document to this command.
The JSON document may consist of the following fields: name
, description
,
and spec
.
The name
field identifies the plugin configuration. The name
field
corresponds to the spec.plugin.name
field when creating a new volume provider
or volume profile. Currently, the only supported plugin names are “lvm” and
"devices". This field is required.
The description
field lets you specify a human-readable description for the
plugin configuration to add some extra context. This is a string of up to 512
characters. This field is optional.
The spec
field is itself a nested structure. It contains the csi-template
field. This field is required.
The spec.csi-template
field is quite complex. In most cases it will be
easiest to view an existing plugin configuration using the dcos storage plugin-configuration list
command and then modify one as needed from there.
cat <<EOF | dcos storage plugin-configuration update
{
"name": "lvm",
"description": "Default configuration for the lvm plugin shipped with DSS",
"spec": {
"csi-template": {
"services": [
"CONTROLLER_SERVICE",
"NODE_SERVICE"
],
"command": {
"value": "{{.Cmdline | json }}",
"shell": true,
"environment": {
"CONTAINER_LOGGER_DESTINATION_TYPE": "journald+logrotate",
"CONTAINER_LOGGER_EXTRA_LABELS": "{\"CSI_PLUGIN\":\"csilvm\"}",
"LD_LIBRARY_PATH": "/opt/mesosphere/lib",
"PATH": "/opt/mesosphere/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"FOO": "bar"
},
"uris": [
{
"value": "http://storage-artifacts.marathon.l4lb.thisdcos.directory:10000/csilvm",
"cache": true,
"executable": true
}
]
},
"resources": [
{
"name": "cpus",
"value": 0.1
},
{
"name": "mem",
"value": 128
},
{
"name": "disk",
"value": 10
}
]
}
}
}
EOF
Again, writing these by hand is extremely challenging. It is far more likely
that you will want to modify an existing plugin configuration by viewing it (by
running dcos storage plugin-configuration list
or dcos storage plugin-configuration generate
), edit the output by hand, and finally
submitting it to dcos storage provider update
. When using an existing plugin
configuration as a template, remember to remove the config-version
and
created-at
fields before passing it to dcos storage plugin-configuration update
as those fields are automatically populated by DSS and cannot be set
manually.
When a plugin configuration is updated, a new version of that plugin
configuration is created. The previous versions of the plugin configuration
still exist. A specific plugin configuration is uniquely identified by its
name
and its config-version
. In most cases the intended value of the
config-version
field is the latest version of the plugin configuration. To
avoid having to look up the plugin configuration config-version
you can pass
the string “latest” instead. DSS will replace the value “latest” with the
latest config-version
of the plugin configuration.
After a plugin configuration is updated, existing volume providers will still
use the version of the plugin configuration they were created with, even though
a newer one has been created. Existing providers need to be modified using the
dcos storage provider modify
command in order to upgrade them to the new
plugin configuration version. Doing so is simple, as the example below shows.
# Show the list of existing providers. There is only one volume provider called 'lvm-ssds'.
dcos storage provider list --plugin=lvm --json
{
"providers": [
{
"name": "lvm-ssds",
"spec": {
"plugin": {
"name": "lvm",
"config-version": 1,
}
...
}
}
]
}
# We see that it currently lists the plugin as 'lvm' and the 'config-version' as 1.
# We will proceed to upgrade this volume provider from 'config-version: 1' to 'config-version: 3'.
cat <<EOF | dcos storage provider modify
{
"name": "lvm-ssds",
"spec": {
"plugin": {
"name": "lvm",
"config-version": 3
}
}
}
EOF
# Upgrade this volume provider from 'config-version: 1' to 'config-version: latest'.
cat <<EOF | dcos storage provider modify
{
"name": "lvm-ssds",
"spec": {
"plugin": {
"name": "lvm",
"config-version": "latest"
}
}
}
EOF
If the spec.plugin
field is present in the volume provider configuration JSON
the volume provider’s plugin configuration is updated. If the spec.plugin
field is not present, the provider’s plugin configuration version is not
modified.
dcos storage plugin-configuration update [<path>] [flags]
Examples
- Generate a plugin configuration for the
lvm
volume provider:
dcos storage plugin-configuration generate --name=lvm
{
"name": "lvm",
"description": "Default configuration for the lvm plugin shipped with DSS",
"spec": {
"csi-template": {
"services": [
"CONTROLLER_SERVICE",
"NODE_SERVICE"
],
"command": {
"value": "{{.Cmdline | json }}",
"shell": true,
"environment": {
"CONTAINER_LOGGER_DESTINATION_TYPE": "journald+logrotate",
"CONTAINER_LOGGER_EXTRA_LABELS": "{\"CSI_PLUGIN\":\"csilvm\"}",
"LD_LIBRARY_PATH": "/opt/mesosphere/lib",
"PATH": "/opt/mesosphere/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
},
"uris": [
{
"value": "http://storage-artifacts.marathon.l4lb.thisdcos.directory:10000/csilvm",
"cache": true,
"executable": true
}
]
},
"resources": [
{
"name": "cpus",
"value": 0.1
},
{
"name": "mem",
"value": 128
},
{
"name": "disk",
"value": 10
}
]
}
}
}
- Update this configuration by adding an environment variable:
cat <<EOF | dcos storage plugin-configuration update
{
"name": "lvm",
"description": "Default configuration for the lvm plugin shipped with DSS",
"spec": {
"csi-template": {
"services": [
"CONTROLLER_SERVICE",
"NODE_SERVICE"
],
"command": {
"value": "{{.Cmdline | json }}",
"shell": true,
"environment": {
"CONTAINER_LOGGER_DESTINATION_TYPE": "journald+logrotate",
"CONTAINER_LOGGER_EXTRA_LABELS": "{\"CSI_PLUGIN\":\"csilvm\"}",
"LD_LIBRARY_PATH": "/opt/mesosphere/lib",
"PATH": "/opt/mesosphere/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"FOO": "bar"
},
"uris": [
{
"value": "http://storage-artifacts.marathon.l4lb.thisdcos.directory:10000/csilvm",
"cache": true,
"executable": true
}
]
},
"resources": [
{
"name": "cpus",
"value": 0.1
},
{
"name": "mem",
"value": 128
},
{
"name": "disk",
"value": 10
}
]
}
}
}
EOF
Options inherited from parent commands
Name | Description |
---|---|
-h ,--help |
Help for this command. |
--timeout duration |
Override the default operation timeout. (default 55s) |
-v ,--verbose |
Verbose mode. |