# salt.pillar.rethinkdb_pillar

Provide external pillar data from RethinkDB

Added in version 2018.3.0.

depends:

  rethinkdb (on the salt-master)

## salt master rethinkdb configuration

These variables must be configured in your master configuration file.

  - `rethinkdb.host` - The RethinkDB server. Defaults to `'salt'`

  - `rethinkdb.port` - The port the RethinkDB server listens on. Defaults to `'28015'`

  - `rethinkdb.database` - The database to connect to. Defaults to `'salt'`

  - `rethinkdb.username` - The username for connecting to RethinkDB. Defaults to `''`

  - `rethinkdb.password` - The password for connecting to RethinkDB. Defaults to `''`

## salt-master ext_pillar configuration

The ext_pillar function arguments are given in single line dictionary notation.

    ext_pillar:
      - rethinkdb: {table: ext_pillar, id_field: minion_id, field: pillar_root, pillar_key: external_pillar}

In the example above the following happens.

  - The salt-master will look for external pillars in the 'ext_pillar' table on the RethinkDB host

  - The minion id will be matched against the 'minion_id' field

  - Pillars will be retrieved from the nested field 'pillar_root'

  - Found pillars will be merged inside a key called 'external_pillar'

## Module Documentation

salt.pillar.rethinkdb_pillar.ext_pillar(minion_id, pillar, table='pillar', id_field=None, field=None, pillar_key=None)

  Collect minion external pillars from a RethinkDB database

  Arguments:

  - table: The RethinkDB table containing external pillar information. Defaults to `'pillar'`

  - id_field: Field in document containing the minion id. If blank then we assume the table index matches minion ids

  - field: Specific field in the document used for pillar data, if blank then the entire document will be used

  - pillar_key: The salt-master will nest found external pillars under this key before merging into the minion pillars. If blank, external pillars will be merged at top level