dcos storage profile create
Create a volume profile.
Synopsis
Arguments:
<path> A URL or local path to the volume profile configuration JSON. If
this is omitted the volume profile configuration JSON is read
from STDIN.
Read more about volume profiles and when you would use them by running
dcos storage profile --help
. In what follows we’ll assume you are familiar
with them and will describe their configuration and give some examples.
Because agents and volumes can come and go in a distributed system it may be difficult to ensure a change or delete operation has completed successfully. For this reason profiles cannot be changed once they have been created (i.e., they are immutable) and they also cannot be removed.
Instead of removing a volume profile, you can deactivate a volume profile. No new volumes can be associated with a volume profile that has been deactivated.
The volume profile configuration must be a JSON document and supports the
following fields: name
, description
, provider-selector
and
volume-configuration
.
The name
field uniquely identifies the volume profile throughout the DC/OS
cluster. It is a string of up to 128 characters. The name must consist of the
characters from [A-Za-z0-9\-]
, and must start with a letter. This field is
required.
The description
field lets you specify a human-readable description for the
volume profile 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
provider-selector
, volume-configuration
and one of either the block
or
mount
fields.
The spec.provider-selector
field is itself a nested structure that selects
which volume providers volumes of this volume profile can be allocated from. The
provider-selector
field has the following fields: plugin
and matches
. This
field is required.
The spec.provider-selector.plugin
field selects a single plugin and only
volume providers from that plugin can be used to create volumes that fit this
volume profile. This field is required.
The spec.provider-selector.matches
field further restricts the volume
providers which can be used to create volume that fit this volume profile. This
field consists of key-value pairs that must match those configured in the spec
field of the volume providers. If a volume provider does not specify one of the
key-value pairs given in the matches
field it cannot be used to create volumes
that fit this volume profile. If the spec
field of a volume provider specifies
all the key-value pairs listed in the matches
field, as well as some
additional key-value pairs, it matches the volume profile and can be used to
create volumes that fit it. This field is optional.
The spec.volume-configuration
field provides parameters that override the
plugin defaults when volumes of this volume profile are created. The available
parameters are plugin-specific and are described on the documentation page for
the specific plugin, </mesosphere/dcos/storage/latest/volume-plugins/>.
This field is optional.
Exactly one of spec.block
or spec.mount
must be specified.
If the spec.block
field is specified volumes created using the profile will
present as raw linux block devices to your application and will not be
automatically formatted. The spec.block
field accepts an empty {}
as value
as it does not currently support any type of configuration.
If the spec.mount
field is specified volumes created using the profile will be
formatted with a file system and will present as a mounted file system to your
application. The spec.mount
field value is a nested object with a single,
optional field called filesystem
. If spec.mount.filesystem
is specified
volumes will be formatted with the specified file system. If it is not specified
volumes will be formatted with the default file system. The examples illustrate
all three possibilities.
dcos storage profile create [<path>] [flags]
Examples
- Create a volume profile called
logs
from the configuration in profile.json to create volumes formatted with the default file system:
cat profile.json
{
"name": "logs",
"description": "spun down drives for log archives",
"spec": {
"provider-selector": {
"plugin": "lvm",
"matches": {
"labels": {
"rotational": "true"
}
}
},
"mount": {}
}
}
dcos storage profile create profile.json
- Create a volume profile called
safe
for LVM volumes from configuration passed on stdin to create volumes formatted with thexfs
file system:
cat <<EOF | dcos storage profile create
{
"name": "safe",
"description": "Volumes backed by RAID-1 devices.",
"spec": {
"provider-selector": {
"plugin": "lvm",
"matches": {
"labels": {"raid": "1"}
}
},
"mount": {"filesystem": "xfs"}
}
}
EOF
- Create a volume profile called
old
for LVM volumes from configuration passed on stdin to create unformatted volumes that will present as linux block devices to your application:
cat <<EOF | dcos storage profile create
{
"name": "old",
"description": "Volumes on LVM VG's labelled as 'old'.",
"spec": {
"provider-selector": {
"plugin": "lvm",
"matches": {
"labels": {"old": "true"}
}
},
"block": {}
}
}
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. |