salt.states.etcd_mod

Manage etcd Keys

New in version 2015.8.0.

depends:
  • python-etcd

This state module supports setting and removing keys from etcd.

Configuration

To work with an etcd server you must configure an etcd profile. The etcd config can be set in either the Salt Minion configuration file or in pillar:

my_etd_config:
  etcd.host: 127.0.0.1
  etcd.port: 4001

It is technically possible to configure etcd without using a profile, but this is not considered to be a best practice, especially when multiple etcd servers or clusters are available.

etcd.host: 127.0.0.1
etcd.port: 4001

Note

The etcd configuration can also be set in the Salt Master config file, but in order to use any etcd configurations defined in the Salt Master config, the pillar_opts must be set to True.

Be aware that setting pillar_opts to True has security implications as this makes all master configuration settings available in all minion's pillars.

Etcd profile configuration can be overriden using following arguments: host, port, username, password, ca, client_key and client_cert.

my-value:
  etcd.set:
    - name: /path/to/key
    - value: value
    - host: 127.0.0.1
    - port: 2379
    - username: user
    - password: pass

Available Functions

  • set

    This will set a value to a key in etcd. Changes will be returned if the key has been created or the value of the key has been updated. This means you can watch these states for changes.

    /foo/bar/baz:
      etcd.set:
        - value: foo
        - profile: my_etcd_config
    
  • wait_set

    Performs the same functionality as set but only if a watch requisite is True.

    /some/file.txt:
      file.managed:
        - source: salt://file.txt
    
    /foo/bar/baz:
      etcd.wait_set:
        - value: foo
        - profile: my_etcd_config
        - watch:
          - file: /some/file.txt
    
  • rm

    This will delete a key from etcd. If the key exists then changes will be returned and thus you can watch for changes on the state, if the key does not exist then no changes will occur.

    /foo/bar/baz:
      etcd.rm:
        - profile: my_etcd_config
    
  • wait_rm

    Performs the same functionality as rm but only if a watch requisite is True.

    /some/file.txt:
      file.managed:
        - source: salt://file.txt
    
    /foo/bar/baz:
      etcd.wait_rm:
        - profile: my_etcd_config
        - watch:
          - file: /some/file.txt
    
salt.states.etcd_mod.directory(name, profile=None, **kwargs)

Create a directory in etcd.

name
The etcd directory name, for example: /foo/bar/baz.
profile

Optional, defaults to None. Sets the etcd profile to use which has been defined in the Salt Master config.

my_etd_config:
  etcd.host: 127.0.0.1
  etcd.port: 4001
salt.states.etcd_mod.mod_watch(name, **kwargs)

Execute a etcd function based on a watch call requisite.

salt.states.etcd_mod.rm(name, recurse=False, profile=None, **kwargs)

Deletes a key from etcd. This function is also aliased as rm.

name
The etcd key name to remove, for example /foo/bar/baz.
recurse
Optional, defaults to False. If True performs a recursive delete.
profile

Optional, defaults to None. Sets the etcd profile to use which has been defined in the Salt Master config.

my_etd_config:
  etcd.host: 127.0.0.1
  etcd.port: 4001
salt.states.etcd_mod.set(name, value, profile=None, **kwargs)

Set a key in etcd and can be called as set.

name
The etcd key name, for example: /foo/bar/baz.
value
The value the key should contain.
profile

Optional, defaults to None. Sets the etcd profile to use which has been defined in the Salt Master config.

my_etd_config:
  etcd.host: 127.0.0.1
  etcd.port: 4001
salt.states.etcd_mod.wait_rm(name, recurse=False, profile=None, **kwargs)

Deletes a key from etcd only if the watch statement calls it. This function is also aliased as wait_rm.

name
The etcd key name to remove, for example /foo/bar/baz.
recurse
Optional, defaults to False. If True performs a recursive delete, see: https://python-etcd.readthedocs.io/en/latest/#delete-a-key.
profile

Optional, defaults to None. Sets the etcd profile to use which has been defined in the Salt Master config.

my_etd_config:
  etcd.host: 127.0.0.1
  etcd.port: 4001
salt.states.etcd_mod.wait_set(name, value, profile=None, **kwargs)

Set a key in etcd only if the watch statement calls it. This function is also aliased as wait_set.

name
The etcd key name, for example: /foo/bar/baz.
value
The value the key should contain.
profile

The etcd profile to use that has been configured on the Salt Master, this is optional and defaults to None.

my_etd_config:
  etcd.host: 127.0.0.1
  etcd.port: 4001