Use SQL to query data from various types of configuration files, e.g. INI
, JSON
, YML
.
- Get started →
- Documentation: Table definitions & examples
- Community: Join #steampipe on Slack →
- Get involved: Issues
Install the plugin with Steampipe:
steampipe plugin install config
Configure your config file for each supported file type to include directories with files to be parsed. For any of the paths
arguments, if no directory is specified, the current working directory will be used.
Run steampipe:
steampipe query
Query all data in your INI files:
select
path,
section,
key,
value
from
ini_key_value;
+----------------------------+----------+---------------+-------------------------------------------+
| path | section | key | value |
+----------------------------+----------+---------------+-------------------------------------------+
| /Users/myuser/defaults.ini | Settings | DetailedLog | 1 |
| /Users/myuser/defaults.ini | Status | RunStatus | 1 |
| /Users/myuser/defaults.ini | Status | StatusRefresh | 10 |
| /Users/myuser/defaults.ini | Status | StatusPort | 6090 |
| /Users/myuser/logs.ini | Server | Archive | 1 |
| /Users/myuser/logs.ini | Server | ServerName | Unknown |
| /Users/myuser/logs.ini | Settings | LogFile | /opt/ecs/mvuser/MV_IPTel/log/MV_IPTel.log |
| /Users/myuser/logs.ini | Settings | Version | 0.9 Build 4 Created July 11 2004 14:00 |
+----------------------------+----------+---------------+-------------------------------------------+
Query all data in your JSON files:
select
path,
jsonb_pretty(content) as file_content
from
json_file;
+----------------------------+------------------------------------------------------------+
| path | file_content |
+----------------------------+------------------------------------------------------------+
| /Users/myuser/invoice.json | { |
| | "city": "East Centerville", |
| | "date": "2012-08-06T00:00:00Z", |
| | "items": [ |
| | { |
| | "price": 1.47, |
| | "part_no": "A4786", |
| | "quantity": 4, |
| | "description": "Water Bucket (Filled)" |
| | }, |
| | { |
| | "size": 8, |
| | "price": 133.7, |
| | "part_no": "E1628", |
| | "quantity": 1, |
| | "description": "High Heeled \"Ruby\" Slippers" |
| | } |
| | ], |
| | "state": "KS", |
| | "street": "123 Tornado Alley\nSuite 16\n", |
| | "bill-to": null, |
| | "receipt": "Oz-Ware Purchase Invoice", |
| | "ship-to": null, |
| | "customer": { |
| | "first_name": "Dorothy", |
| | "family_name": "Gale" |
| | }, |
| | } |
| /Users/myuser/test.json | { |
| | "foo": "bar", |
| | "includes": [ |
| | "common.json" |
| | ] |
| | } |
+----------------------------+------------------------------------------------------------+
Query all data in your YML files:
select
path,
jsonb_pretty(content) as file_content
from
yml_file;
+---------------------------+------------------------------------------------------------+
| path | file_content |
+---------------------------+------------------------------------------------------------+
| /Users/myuser/invoice.yml | { |
| | "city": "East Centerville", |
| | "date": "2012-08-06T00:00:00Z", |
| | "items": [ |
| | { |
| | "price": 1.47, |
| | "part_no": "A4786", |
| | "quantity": 4, |
| | "description": "Water Bucket (Filled)" |
| | }, |
| | { |
| | "size": 8, |
| | "price": 133.7, |
| | "part_no": "E1628", |
| | "quantity": 1, |
| | "description": "High Heeled \"Ruby\" Slippers" |
| | } |
| | ], |
| | "state": "KS", |
| | "street": "123 Tornado Alley\nSuite 16\n", |
| | "bill-to": null, |
| | "receipt": "Oz-Ware Purchase Invoice", |
| | "ship-to": null, |
| | "customer": { |
| | "first_name": "Dorothy", |
| | "family_name": "Gale" |
| | }, |
| | } |
| /Users/myuser/test.yaml | { |
| | "foo": "bar", |
| | "includes": [ |
| | "common.yaml" |
| | ] |
| | } |
+---------------------------+------------------------------------------------------------+
This plugin is available for the following engines:
Engine | Description |
---|---|
Steampipe | The Steampipe CLI exposes APIs and services as a high-performance relational database, giving you the ability to write SQL-based queries to explore dynamic data. Mods extend Steampipe's capabilities with dashboards, reports, and controls built with simple HCL. The Steampipe CLI is a turnkey solution that includes its own Postgres database, plugin management, and mod support. |
Postgres FDW | Steampipe Postgres FDWs are native Postgres Foreign Data Wrappers that translate APIs to foreign tables. Unlike Steampipe CLI, which ships with its own Postgres server instance, the Steampipe Postgres FDWs can be installed in any supported Postgres database version. |
SQLite Extension | Steampipe SQLite Extensions provide SQLite virtual tables that translate your queries into API calls, transparently fetching information from your API or service as you request it. |
Export | Steampipe Plugin Exporters provide a flexible mechanism for exporting information from cloud services and APIs. Each exporter is a stand-alone binary that allows you to extract data using Steampipe plugins without a database. |
Turbot Pipes | Turbot Pipes is the only intelligence, automation & security platform built specifically for DevOps. Pipes provide hosted Steampipe database instances, shared dashboards, snapshots, and more. |
Prerequisites:
Clone:
git clone https://github.com/turbot/steampipe-plugin-config.git
cd steampipe-plugin-config
Build, which automatically installs the new version to your ~/.steampipe/plugins
directory:
make
Configure the plugin:
cp config/* ~/.steampipe/config
vi ~/.steampipe/config/config.spc
Try it!
steampipe query
> .inspect config
Further reading:
This repository is published under the Apache 2.0 (source code) and CC BY-NC-ND (docs) licenses. Please see our code of conduct. We look forward to collaborating with you!
Steampipe is a product produced from this open source software, exclusively by Turbot HQ, Inc. It is distributed under our commercial terms. Others are allowed to make their own distribution of the software, but cannot use any of the Turbot trademarks, cloud services, etc. You can learn more in our Open Source FAQ.
Want to help but don't know where to start? Pick up one of the help wanted
issues: