# vertica_schema – Adds or removes Vertica database schema and roles

- Synopsis

- Requirements

- Parameters

- Notes

- Examples

- Status

## Synopsis

- Adds or removes Vertica database schema and, optionally, roles with schema access privileges.

- A schema will not be removed until all the objects have been dropped.

- In such a situation, if the module tries to remove the schema it will fail and only remove roles created for the schema if they have no dependencies.

## Requirements

The below requirements are needed on the host that executes this module.

- unixODBC

- pyodbc

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
cluster - | Default: "localhost" | Name of the Vertica cluster.
create_roles - |  | Comma separated list of roles to create and grant usage and create access to the schema. aliases: create_role
db - |  | Name of the Vertica database.
login_password - |  | The password used to authenticate with.
login_user - | Default: "dbadmin" | The username used to authenticate with.
name - / required |  | Name of the schema to add or remove.
owner - |  | Name of the user to set as owner of the schema.
port - | Default: 5433 | Vertica cluster port to connect to.

state
-

Choices:
- present ←
- absent

Whether to create `present`, or drop `absent` a schema.

usage_roles - |  | Comma separated list of roles to create and grant usage access to the schema. aliases: usage_role

## Notes

Note

- The default authentication assumes that you are either logging in as or sudo’ing to the `dbadmin` account on the host.

- This module uses `pyodbc`, a Python ODBC database adapter. You must ensure that `unixODBC` and `pyodbc` is installed on the host and properly configured.

- Configuring `unixODBC` for Vertica requires `Driver = /opt/vertica/lib64/libverticaodbc.so` to be added to the `Vertica` section of either `/etc/odbcinst.ini` or `$HOME/.odbcinst.ini` and both `ErrorMessagesPath = /opt/vertica/lib64` and `DriverManagerEncoding = UTF-16` to be added to the `Driver` section of either `/etc/vertica.ini` or `$HOME/.vertica.ini`.

## Examples

    - name: creating a new vertica schema
      vertica_schema: name=schema_name db=db_name state=present

    - name: creating a new schema with specific schema owner
      vertica_schema: name=schema_name owner=dbowner db=db_name state=present

    - name: creating a new schema with roles
      vertica_schema:
        name=schema_name
        create_roles=schema_name_all
        usage_roles=schema_name_ro,schema_name_rw
        db=db_name
        state=present

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]

- This module is maintained by the Ansible Community. [community]

### Authors

- Dariusz Owczarek (@dareko)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.