# salt.pillar.sqlcipher

Retrieve Pillar data by running a SQLCipher query

Added in version 2016.3.0.

Python SQLCipher support is provided by the pysqlcipher Python package. You need this module installed to query Pillar data from a SQLCipher database.

This module is a concrete implementation of the sql_base ext_pillar for SQLCipher.

maturity:

  new

depends:

  pysqlcipher (for py2) or pysqlcipher3 (for py3)

platform:

  all

## Configuring the sqlcipher ext_pillar

Use the 'sqlcipher' key under ext_pillar for configuration of queries.

SQLCipher database connection configuration requires the following values configured in the master config:

> - `sqlcipher.database` - The SQLCipher database to connect to. Defaults to `'/var/lib/salt/pillar-sqlcipher.db'`.

> - `sqlcipher.pass` - The SQLCipher database decryption password.

> - `sqlcipher.timeout` - The connection timeout in seconds.

Example configuration

    sqlcipher:
      database: /var/lib/salt/pillar-sqlcipher.db
      pass: strong_pass_phrase
      timeout: 5.0

## Complete Example

    sqlcipher:
      database: '/var/lib/salt/pillar-sqlcipher.db'
      pass: strong_pass_phrase
      timeout: 5.0

    ext_pillar:
      - sqlcipher:
          fromdb:
            query: 'SELECT col1,col2,col3,col4,col5,col6,col7
                      FROM some_random_table
                     WHERE minion_pattern LIKE ?'
            depth: 5
            as_list: True
            with_lists: [1,3]

class salt.pillar.sqlcipher.SQLCipherExtPillar

  This class receives and processes the database rows from SQLCipher.

salt.pillar.sqlcipher.ext_pillar(minion_id, pillar, *args, **kwargs)

  Execute queries against SQLCipher, merge and return as a dict