Tabul Configuration Vault (.tabul.yml)
About
The Tabul configuration vault is a configuration file named .tabul.yml that stores:
and is located:
- at the root of your app
- or in your user home directory $HOME\.tabul
Location
By default,
- the file is searched recursively from the working directory
- if:
- found, it defines the app home directory
- not found, the path is in the user $HOME\.tabul directory.
You can get the location of the configuration vault with the variable list command.
tabul env list conf
attribute value origin description
--------- -------------------------------- ------- ------------------------
CONF /home/tabulify/.tabul/.tabul.yml Default The conf vault file path
Default creation if not found
By default, if a configuration vault file does not exist, it will be created with:
- and howtos services
kind: tabul
spec:
connections:
mysql:
comment: The default mysql data store
driver: com.mysql.cj.jdbc.Driver
password: my-secret-pw
uri: jdbc:mysql://localhost:3306/howto
user: root
varchar-default-precision: 2000
oracle:
comment: The howto oracle connection
driver: oracle.jdbc.OracleDriver
login-statements: ALTER SESSION SET CURRENT_SCHEMA = tabulify
name-quoting-enabled: false
password: oracle
uri: jdbc:oracle:thin:@localhost:1521/freepdb1
user: system
postgres:
comment: The howto postgres connection
driver: org.postgresql.Driver
password: welcome
uri: jdbc:postgresql://localhost:5432/postgres
user: postgres
smtp:
comment: HowTo Smtp Connection
from: [email protected]
to: [email protected]
uri: smtp://localhost:1025
sqlite:
comment: The sqlite default connection
driver: org.sqlite.JDBC
uri: jdbc:sqlite:////home/tabulify/.tabul/sqlite.sqlite3
sqlite_target:
comment: The default sqlite target (Sqlite cannot read and write with the same
connection)
driver: org.sqlite.JDBC
uri: jdbc:sqlite:////home/tabulify/.tabul/sqlite_target.sqlite3
sqlserver:
comment: The default sqlserver connection
driver: com.microsoft.sqlserver.jdbc.SQLServerDriver
password: TheSecret1!
uri: jdbc:sqlserver://localhost:1433;encrypt=true;trustServerCertificate=true
user: sa
services:
mysql:
environment:
MYSQL_DATABASE: howto
MYSQL_ROOT_PASSWORD: my-secret-pw
image: mysql:5.7.37
ports:
- 3306:3306
type: docker
oracle:
environment:
APP_USER: tabulify
APP_USER_PASSWORD: oracle
ORACLE_ALLOW_REMOTE: 'true'
ORACLE_DISABLE_ASYNCH_IO: 'true'
ORACLE_PASSWORD: oracle
image: ghcr.io/gvenzl/oracle-free:23.7-slim-faststart
ports:
- 1521:1521
type: docker
postgres:
environment:
POSTGRES_PASSWORD: welcome
image: postgres:13.21
ports:
- 5432:5432
type: docker
smtp:
environment:
MP_LABEL: Tabulify HowTo Service
MP_TENANT_ID: tabulify
image: axllent/mailpit:v1.25.1
ports:
- 1025:1025
- 8025:8025
type: docker
sqlserver:
environment:
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: TheSecret1!
image: mcr.microsoft.com/mssql/server:2022-CU19-ubuntu-22.04
ports:
- 1433:1433
type: docker
Cli Command
Advanced user will modify the file directly with a text editor but for convenience, we provide also:
- the Tabul Env module
In every tabul command, you can specify the location of this file with:
- the --conf global option.
- or the TABUL_CONF OS environment variable
Secret
The configuration vault supports secrets as value.
You can:
- encrypt any value with vault encrypt
- or define environment variables as value
Format
The .tabul.yml file is a manifest where the configurations are stored in the spec field
kind: tabul
spec:
# List of global attributes
env:
key1: value
key2: value
# List of connections
connections:
connectionName1:
# uri
uri: uri
# description
description: description
# user
user: user
# password
password: ${MY_PASSWORD}
# Native Driver extra attributes
natives:
# for example, for jdbc sql driver
applicationName: myName
connectionName2:
uri: xxx
# List of Services
services:
name:
type: docker
image: xxx
...