This is an automated email from the ASF dual-hosted git repository.
DImuthuUpe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-custos.git
The following commit(s) were added to refs/heads/master by this push:
new 26cb06dd9 Cleanup repo and adding installation instruction
26cb06dd9 is described below
commit 26cb06dd949ce893a11ab5d1823b592553367b89
Author: DImuthuUpe <[email protected]>
AuthorDate: Sun May 17 23:22:14 2026 -0400
Cleanup repo and adding installation instruction
---
CONTRIBUTING.md | 70 ++++++++
INSTALL.md | 64 +++++++
dev-ops/compose/docker-compose.yml | 72 +-------
.../compose/grafana/dashboards/amie-service.json | 195 ---------------------
.../grafana/provisioning/dashboards/dashboards.yml | 12 --
.../grafana/provisioning/datasources/mariadb.yml | 17 --
.../provisioning/datasources/prometheus.yml | 9 -
dev-ops/compose/prometheus/prometheus.yml | 18 --
dev-ops/compose/vault/config/vault-config.hcl | 29 ---
9 files changed, 135 insertions(+), 351 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..608e1d8fa
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,70 @@
+# Contributing
+
+Thanks for your interest in contributing to Apache Airavata Custos. This
document covers the repository layout, build commands, coding conventions, and
the pull request workflow.
+
+For instructions on running Custos locally against a database, see
[INSTALL.md](INSTALL.md).
+
+## Prerequisites
+
+- Go **1.24+**
+- `git`
+
+## Repository layout
+
+- `cmd/server/` — main HTTP API entry point
+- `internal/` — server, store, and database wiring (not importable outside the
module)
+- `pkg/` — public packages (models, service, events)
+- `connectors/` — protocol/site-specific connectors (ACCESS, SLURM, …)
+- `extensions/` — out-of-process extensions (PAM module, SSH cert signer, …)
+- `dev-ops/compose/` — local Docker Compose stack (MariaDB, Keycloak, Vault,
Prometheus, Grafana)
+
+## Build
+
+From the repository root:
+
+```bash
+go build ./...
+go vet ./...
+go test ./...
+```
+
+All three should be clean before opening a pull request.
+
+## Database migrations
+
+Migrations live in `internal/db/migrations/` and are embedded into the binary
via `//go:embed`. They are applied automatically on server start.
+
+To add a new migration, create a matching pair following the existing
numbering:
+
+```
+internal/db/migrations/NNN_short_name.up.sql
+internal/db/migrations/NNN_short_name.down.sql
+```
+
+Every SQL file must carry the Apache 2.0 license header (see existing files
for the exact comment block).
+
+## Coding conventions
+
+- Every new Go or SQL file must include the Apache 2.0 license header used
throughout the repo.
+- Service-layer errors use the sentinel errors in `pkg/service`
(`ErrInvalidInput`, `ErrNotFound`, `ErrAlreadyExists`); HTTP handlers translate
them to 400/404/409 respectively.
+- Database work happens inside `s.inTx(ctx, func(*sql.Tx) error { … })`. Do
not nest transactions.
+- HTTP routing uses the Go 1.22 `ServeMux` with `r.PathValue` for path
parameters.
+- Publish domain events through `pkg/events.Bus` from the service layer; never
from handlers or stores.
+
+## Tests
+
+Run the full test suite from the repo root:
+
+```bash
+go test ./...
+```
+
+Connector packages (for example `connectors/SLURM/Association-Mapper/...`) use
`httptest` and do not require external services.
+
+## Submitting changes
+
+1. Open an issue describing the change, if one does not already exist.
+2. Create a topic branch off `main`.
+3. Make focused, well-scoped commits with clear messages.
+4. Ensure `go build ./...`, `go vet ./...`, and `go test ./...` all pass.
+5. Open a pull request and link the related issue.
diff --git a/INSTALL.md b/INSTALL.md
new file mode 100644
index 000000000..185c29294
--- /dev/null
+++ b/INSTALL.md
@@ -0,0 +1,64 @@
+# Local Installation
+
+This guide covers running Apache Airavata Custos locally for development and
testing. For coding conventions, build commands, and contribution workflow, see
[CONTRIBUTING.md](CONTRIBUTING.md).
+
+## Prerequisites
+
+- Go **1.24+**
+- Docker and Docker Compose (for the local MariaDB and supporting services)
+- `git`
+
+## Running locally with a database
+
+The server requires a MariaDB/MySQL database. The easiest way to get one is
via the bundled Docker Compose stack.
+
+### 1. Start MariaDB
+
+```bash
+cd dev-ops/compose
+docker compose up -d db
+```
+
+This starts MariaDB on `localhost:3306` and runs `dbinit/init-db.sh`, which
creates the `custos` database and the `admin` user (password `admin`).
+
+To stop it later:
+
+```bash
+docker compose down
+```
+
+Use `docker compose down -v` if you also want to wipe the database volume.
+
+### 2. Run the API server
+
+From the repository root:
+
+```bash
+export
DATABASE_DSN='admin:admin@tcp(localhost:3306)/custos?parseTime=true&charset=utf8mb4&multiStatements=true'
+export HTTP_ADDR=':8080'
+go run ./cmd/server
+```
+
+On startup, the server:
+
+1. Opens the database connection (`internal/db`).
+2. Runs the embedded migrations (`internal/db/migrations/`).
+3. Wires the event bus, service layer, and HTTP router.
+4. Listens on `HTTP_ADDR`.
+
+### Environment variables
+
+| Variable | Default
| Description |
+|----------------------|--------------------------------------------------------------------|----------------------------------------------|
+| `DATABASE_DSN` | _(required)_
| Go MySQL DSN; must allow multi-statements |
+| `HTTP_ADDR` | `:8080`
| Listen address for the HTTP API |
+| `DB_MAX_OPEN_CONNS` | `25`
| Max open DB connections |
+| `DB_MAX_IDLE_CONNS` | `5`
| Max idle DB connections |
+
+### Optional services
+
+The Compose file also defines Keycloak, Vault, Adminer, Prometheus, and
Grafana. Start them as needed, for example:
+
+```bash
+docker compose up -d adminer # DB UI at http://localhost:18080
+```
diff --git a/dev-ops/compose/docker-compose.yml
b/dev-ops/compose/docker-compose.yml
index 2895e3443..a462a94d4 100644
--- a/dev-ops/compose/docker-compose.yml
+++ b/dev-ops/compose/docker-compose.yml
@@ -18,24 +18,6 @@
version: "3.8"
services:
- keycloak:
- image: quay.io/keycloak/keycloak:24.0.0
- environment:
- KC_HOSTNAME: localhost
- KC_HOSTNAME_PORT: 8080
- KC_HOSTNAME_STRICT_BACKCHANNEL: "true"
- KC_DB: mariadb
- KC_DB_URL: jdbc:mariadb://db:3306/keycloak?characterEncoding=UTF-8
- KC_DB_USERNAME: admin
- KC_DB_PASSWORD: admin
- KEYCLOAK_ADMIN: admin
- KEYCLOAK_ADMIN_PASSWORD: admin
- ports:
- - "8080:8080"
- command:
- - start-dev
- restart: unless-stopped
-
db:
container_name: custos_db
image: mariadb:11.2
@@ -55,56 +37,4 @@ services:
image: adminer
restart: always
ports:
- - 18080:8080
-
- prometheus:
- image: prom/prometheus:latest
- container_name: prometheus
- restart: unless-stopped
- ports:
- - "9090:9090"
- volumes:
- - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- extra_hosts:
- - "host.docker.internal:host-gateway"
-
- grafana:
- image: grafana/grafana:latest
- container_name: grafana
- restart: unless-stopped
- ports:
- - "3000:3000"
- environment:
- GF_SECURITY_ADMIN_USER: admin
- GF_SECURITY_ADMIN_PASSWORD: admin
- GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH:
/var/lib/grafana/dashboards/amie-service.json
- volumes:
- - ./grafana/provisioning:/etc/grafana/provisioning
- - ./grafana/dashboards:/var/lib/grafana/dashboards
-
- vault:
- image: vault:1.11.0
- container_name: vault
- restart: unless-stopped
- ports:
- - "8201:8201"
- - "8200:8200"
- environment:
- VAULT_ADDR: http://0.0.0.0:8201
- VAULT_API_ADDR: http://127.0.0.1:8200
- VAULT_CLUSTER_ADDR: http://127.0.0.1:8201
- VAULT_LOCAL_CONFIG: '{"listener": [{"tcp":{"address":
"0.0.0.0:8201","tls_disable":"1"}}], "default_lease_ttl": "168h",
"max_lease_ttl": "720h", "ui": true}'
- cap_add:
- - IPC_LOCK
- volumes:
- - ./vault/data:/vault/data
- - ./vault/config:/vault/config
- entrypoint: vault server
- command: -config=/vault/config/vault-config.hcl
- healthcheck:
- test: "vault login 00000000-0000-0000-0000-000000000000 &&
- vault kv get secret &&
- vault secrets disable secret &&
- vault secrets enable -version=1 -path=secret kv &&
- vault secrets enable -version=1 -path=resourcesecret kv"
- interval: 5s
\ No newline at end of file
+ - 18080:8080
\ No newline at end of file
diff --git a/dev-ops/compose/grafana/dashboards/amie-service.json
b/dev-ops/compose/grafana/dashboards/amie-service.json
deleted file mode 100644
index aef134d30..000000000
--- a/dev-ops/compose/grafana/dashboards/amie-service.json
+++ /dev/null
@@ -1,195 +0,0 @@
-{
- "annotations": { "list": [] },
- "editable": true,
- "fiscalYearStartMonth": 0,
- "graphTooltip": 1,
- "links": [],
- "panels": [
- {
- "type": "stat",
- "title": "Total Packets Received",
- "gridPos": { "h": 4, "w": 6, "x": 0, "y": 0 },
- "targets": [{
- "rawSql": "SELECT COUNT(*) AS Total FROM amie_packets WHERE
$__timeFilter(received_at)",
- "format": "table",
- "refId": "A"
- }],
- "fieldConfig": { "defaults": { "thresholds": { "steps": [{ "color":
"blue", "value": null }] } } },
- "options": { "colorMode": "background", "textMode": "value_and_name" },
- "datasource": { "type": "mysql", "uid": "mariadb-amie" }
- },
- {
- "type": "stat",
- "title": "Packets Succeeded",
- "gridPos": { "h": 4, "w": 6, "x": 6, "y": 0 },
- "targets": [{
- "rawSql": "SELECT COUNT(*) AS Succeeded FROM amie_processing_events
WHERE status = 'SUCCEEDED' AND $__timeFilter(created_at)",
- "format": "table",
- "refId": "A"
- }],
- "fieldConfig": { "defaults": { "thresholds": { "steps": [{ "color":
"green", "value": null }] } } },
- "options": { "colorMode": "background", "textMode": "value_and_name" },
- "datasource": { "type": "mysql", "uid": "mariadb-amie" }
- },
- {
- "type": "stat",
- "title": "Packets Failed",
- "gridPos": { "h": 4, "w": 6, "x": 12, "y": 0 },
- "targets": [{
- "rawSql": "SELECT COUNT(*) AS Failed FROM amie_processing_events WHERE
status = 'PERMANENTLY_FAILED' AND $__timeFilter(created_at)",
- "format": "table",
- "refId": "A"
- }],
- "fieldConfig": { "defaults": { "thresholds": { "steps": [{ "color":
"green", "value": null }, { "color": "red", "value": 1 }] } } },
- "options": { "colorMode": "background", "textMode": "value_and_name" },
- "datasource": { "type": "mysql", "uid": "mariadb-amie" }
- },
- {
- "type": "stat",
- "title": "Retries",
- "gridPos": { "h": 4, "w": 6, "x": 18, "y": 0 },
- "targets": [{
- "rawSql": "SELECT COALESCE(SUM(attempts - 1), 0) AS Retries FROM
amie_processing_events WHERE status IN ('SUCCEEDED','PERMANENTLY_FAILED') AND
$__timeFilter(finished_at)",
- "format": "table",
- "refId": "A"
- }],
- "fieldConfig": { "defaults": { "thresholds": { "steps": [{ "color":
"green", "value": null }, { "color": "orange", "value": 1 }, { "color": "red",
"value": 5 }] } } },
- "options": { "colorMode": "background", "textMode": "value_and_name" },
- "datasource": { "type": "mysql", "uid": "mariadb-amie" }
- },
- {
- "type": "timeseries",
- "title": "Packets Processed Over Time",
- "gridPos": { "h": 8, "w": 12, "x": 0, "y": 4 },
- "targets": [{
- "rawSql": "SELECT $__timeGroupAlias(e.finished_at, $__interval, 0),
p.type AS metric, COUNT(*) AS value FROM amie_processing_events e JOIN
amie_packets p ON p.id = e.packet_id WHERE e.status = 'SUCCEEDED' AND
$__timeFilter(e.finished_at) GROUP BY 1, p.type ORDER BY 1",
- "format": "time_series",
- "refId": "A"
- }],
- "fieldConfig": { "defaults": { "custom": { "drawStyle": "line",
"lineWidth": 2, "fillOpacity": 15, "pointSize": 5, "showPoints": "auto" } } },
- "options": { "tooltip": { "mode": "multi" }, "legend": { "displayMode":
"table", "placement": "bottom", "calcs": ["sum"] } },
- "datasource": { "type": "mysql", "uid": "mariadb-amie" }
- },
- {
- "type": "timeseries",
- "title": "Failures & Retries Over Time",
- "gridPos": { "h": 8, "w": 12, "x": 12, "y": 4 },
- "targets": [
- {
- "rawSql": "SELECT $__timeGroupAlias(occurred_at, $__interval, 0),
COUNT(*) AS \"Failed Attempts\" FROM amie_processing_errors WHERE
$__timeFilter(occurred_at) GROUP BY 1 ORDER BY 1",
- "format": "time_series",
- "refId": "A"
- },
- {
- "rawSql": "SELECT $__timeGroupAlias(finished_at, $__interval, 0),
COUNT(*) AS \"Permanent Failures\" FROM amie_processing_events WHERE status =
'PERMANENTLY_FAILED' AND $__timeFilter(finished_at) GROUP BY 1 ORDER BY 1",
- "format": "time_series",
- "refId": "B"
- }
- ],
- "fieldConfig": { "defaults": { "custom": { "drawStyle": "line",
"lineWidth": 2, "fillOpacity": 15 }, "color": { "mode": "palette-classic" } } },
- "options": { "tooltip": { "mode": "multi" }, "legend": { "displayMode":
"table", "placement": "bottom", "calcs": ["sum"] } },
- "datasource": { "type": "mysql", "uid": "mariadb-amie" }
- },
- {
- "type": "piechart",
- "title": "Packets by Type",
- "gridPos": { "h": 8, "w": 8, "x": 0, "y": 12 },
- "targets": [{
- "rawSql": "SELECT type AS metric, COUNT(*) AS value FROM amie_packets
WHERE $__timeFilter(received_at) GROUP BY type",
- "format": "table",
- "refId": "A"
- }],
- "transformations": [
- { "id": "rowsToFields", "options": {} }
- ],
- "options": { "legend": { "displayMode": "table", "placement": "right",
"values": ["value", "percent"] }, "pieType": "donut" },
- "datasource": { "type": "mysql", "uid": "mariadb-amie" }
- },
- {
- "type": "piechart",
- "title": "Processing Outcomes",
- "gridPos": { "h": 8, "w": 8, "x": 8, "y": 12 },
- "targets": [{
- "rawSql": "SELECT CASE status WHEN 'SUCCEEDED' THEN 'succeeded' WHEN
'PERMANENTLY_FAILED' THEN 'permanently_failed' WHEN 'RETRY_SCHEDULED' THEN
'retry_scheduled' END AS metric, COUNT(*) AS value FROM amie_processing_events
WHERE status IN ('SUCCEEDED','PERMANENTLY_FAILED','RETRY_SCHEDULED') AND
$__timeFilter(created_at) GROUP BY status",
- "format": "table",
- "refId": "A"
- }],
- "transformations": [
- { "id": "rowsToFields", "options": {} }
- ],
- "fieldConfig": { "overrides": [
- { "matcher": { "id": "byName", "options": "succeeded" }, "properties":
[{ "id": "color", "value": { "fixedColor": "green", "mode": "fixed" } }] },
- { "matcher": { "id": "byName", "options": "permanently_failed" },
"properties": [{ "id": "color", "value": { "fixedColor": "red", "mode": "fixed"
} }] },
- { "matcher": { "id": "byName", "options": "retry_scheduled" },
"properties": [{ "id": "color", "value": { "fixedColor": "orange", "mode":
"fixed" } }] }
- ] },
- "options": { "legend": { "displayMode": "table", "placement": "right",
"values": ["value", "percent"] }, "pieType": "donut" },
- "datasource": { "type": "mysql", "uid": "mariadb-amie" }
- },
- {
- "type": "bargauge",
- "title": "Packets Received by Type",
- "gridPos": { "h": 8, "w": 8, "x": 16, "y": 12 },
- "targets": [{
- "rawSql": "SELECT type AS metric, COUNT(*) AS value FROM amie_packets
WHERE $__timeFilter(received_at) GROUP BY type",
- "format": "table",
- "refId": "A"
- }],
- "transformations": [
- { "id": "rowsToFields", "options": {} }
- ],
- "fieldConfig": { "defaults": { "thresholds": { "steps": [{ "color":
"blue", "value": null }] } } },
- "options": { "displayMode": "gradient", "orientation": "horizontal",
"showUnfilled": true },
- "datasource": { "type": "mysql", "uid": "mariadb-amie" }
- },
- {
- "type": "timeseries",
- "title": "Poller: Packets Fetched per Cycle",
- "gridPos": { "h": 8, "w": 12, "x": 0, "y": 20 },
- "targets": [
- { "expr": "rate(amie_poller_packets_fetched_total[5m]) * 60",
"legendFormat": "Packets/min" }
- ],
- "fieldConfig": { "defaults": { "custom": { "drawStyle": "bars",
"lineWidth": 1, "fillOpacity": 50 }, "color": { "fixedColor": "purple", "mode":
"fixed" } } },
- "datasource": { "type": "prometheus", "uid": "PBFA97CFB590B2093" }
- },
- {
- "type": "timeseries",
- "title": "Processing Duration (p50 / p95 / p99)",
- "gridPos": { "h": 8, "w": 12, "x": 12, "y": 20 },
- "targets": [
- { "expr": "histogram_quantile(0.50, sum by (le)
(rate(amie_packet_processing_duration_seconds_bucket[5m])))", "legendFormat":
"p50" },
- { "expr": "histogram_quantile(0.95, sum by (le)
(rate(amie_packet_processing_duration_seconds_bucket[5m])))", "legendFormat":
"p95" },
- { "expr": "histogram_quantile(0.99, sum by (le)
(rate(amie_packet_processing_duration_seconds_bucket[5m])))", "legendFormat":
"p99" }
- ],
- "fieldConfig": { "defaults": { "unit": "s", "custom": { "drawStyle":
"line", "lineWidth": 2, "fillOpacity": 10 } } },
- "options": { "tooltip": { "mode": "multi" }, "legend": { "displayMode":
"table", "placement": "bottom", "calcs": ["lastNotNull"] } },
- "datasource": { "type": "prometheus", "uid": "PBFA97CFB590B2093" }
- },
- {
- "type": "table",
- "title": "Processed Count by Type & Outcome",
- "gridPos": { "h": 8, "w": 24, "x": 0, "y": 28 },
- "targets": [{
- "rawSql": "SELECT p.type AS type, CASE e.status WHEN 'SUCCEEDED' THEN
'succeeded' WHEN 'PERMANENTLY_FAILED' THEN 'permanently_failed' WHEN
'RETRY_SCHEDULED' THEN 'retry_scheduled' END AS outcome, COUNT(*) AS count FROM
amie_processing_events e JOIN amie_packets p ON p.id = e.packet_id WHERE
e.status IN ('SUCCEEDED','PERMANENTLY_FAILED','RETRY_SCHEDULED') AND
$__timeFilter(e.created_at) GROUP BY p.type, e.status",
- "format": "table",
- "refId": "A"
- }],
- "transformations": [
- { "id": "organize", "options": { "excludeByName": {}, "renameByName":
{ "type": "Packet Type", "outcome": "Outcome", "count": "Count" } } }
- ],
- "fieldConfig": { "overrides": [
- { "matcher": { "id": "byName", "options": "Outcome" }, "properties":
[{ "id": "custom.cellOptions", "value": { "type": "color-text" } }, { "id":
"mappings", "value": [{ "type": "value", "options": { "succeeded": { "color":
"green", "text": "Succeeded" }, "permanently_failed": { "color": "red", "text":
"Failed" }, "retry_scheduled": { "color": "orange", "text": "Retried" } } }] }]
}
- ] },
- "datasource": { "type": "mysql", "uid": "mariadb-amie" }
- }
- ],
- "refresh": "10s",
- "schemaVersion": 39,
- "tags": ["custos", "amie", "access-ci"],
- "templating": { "list": [] },
- "time": { "from": "now-1h", "to": "now" },
- "timepicker": {},
- "timezone": "browser",
- "title": "ACCESS CI — AMIE Packet Processing",
- "uid": "custos-amie-overview",
- "version": 1
-}
diff --git a/dev-ops/compose/grafana/provisioning/dashboards/dashboards.yml
b/dev-ops/compose/grafana/provisioning/dashboards/dashboards.yml
deleted file mode 100644
index 3b928441c..000000000
--- a/dev-ops/compose/grafana/provisioning/dashboards/dashboards.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-apiVersion: 1
-
-providers:
- - name: 'Custos'
- orgId: 1
- folder: 'Custos'
- type: file
- disableDeletion: false
- editable: true
- options:
- path: /var/lib/grafana/dashboards
- foldersFromFilesStructure: false
diff --git a/dev-ops/compose/grafana/provisioning/datasources/mariadb.yml
b/dev-ops/compose/grafana/provisioning/datasources/mariadb.yml
deleted file mode 100644
index 0e94eb34b..000000000
--- a/dev-ops/compose/grafana/provisioning/datasources/mariadb.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-apiVersion: 1
-
-datasources:
- - name: MariaDB-AMIE
- uid: mariadb-amie
- type: mysql
- access: proxy
- url: custos_db:3306
- database: access_ci
- user: admin
- secureJsonData:
- password: admin
- jsonData:
- maxOpenConns: 5
- maxIdleConns: 2
- connMaxLifetime: 14400
- editable: false
diff --git a/dev-ops/compose/grafana/provisioning/datasources/prometheus.yml
b/dev-ops/compose/grafana/provisioning/datasources/prometheus.yml
deleted file mode 100644
index bb009bb21..000000000
--- a/dev-ops/compose/grafana/provisioning/datasources/prometheus.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-apiVersion: 1
-
-datasources:
- - name: Prometheus
- type: prometheus
- access: proxy
- url: http://prometheus:9090
- isDefault: true
- editable: false
diff --git a/dev-ops/compose/prometheus/prometheus.yml
b/dev-ops/compose/prometheus/prometheus.yml
deleted file mode 100644
index c405f9bd6..000000000
--- a/dev-ops/compose/prometheus/prometheus.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-global:
- scrape_interval: 15s
- evaluation_interval: 15s
-
-scrape_configs:
- - job_name: 'access-amie'
- metrics_path: '/metrics'
- static_configs:
- - targets: ['host.docker.internal:8083']
- labels:
- service: 'access-amie'
-
- - job_name: 'custos-signer'
- metrics_path: '/metrics'
- static_configs:
- - targets: ['host.docker.internal:8084']
- labels:
- service: 'custos-signer'
diff --git a/dev-ops/compose/vault/config/vault-config.hcl
b/dev-ops/compose/vault/config/vault-config.hcl
deleted file mode 100644
index a9ec06d9c..000000000
--- a/dev-ops/compose/vault/config/vault-config.hcl
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-storage "raft" {
- path = "./vault/data"
- node_id = "node1"
-}
-
-listener "tcp" {
- address = "0.0.0.0:8200"
- tls_disable = 1
-}
-
-ui = true
\ No newline at end of file