Instructions
Note: Currently supports checking Ubuntu OS versions
Getting Started - Instructions
Define your Data
- Define the attributes of the software you would like to extract information from. These can be considered column definitions.
Define your Ingest Configuration
Example Ingest Configuration
Provided within application, please see default.yaml
default.yaml
app: legacyload
schema:
dbIP: 10.92.93.166 # Replace to IP of db-ami with "sudo incus ls"
dbUser: postgres
dbPassword: password
dbName: test #(Recommended to use prod database for customer use)
table:
- name: UBUNTU_OS_VERSION #Fixed name, will be parsed and checked
columns:
- name: os_version
type: text
grouping: true
- name: vendor
type: text
grouping: true
- name: ipaddr
type: text
- name: instance_type
type: text
- name: instance_id
type: text
pk: true
- name: inst_name
type: text
- name: ami_id
type: text
- name: subnet_id
type: text
- name: ssh_key
type: text
- name: python_version
type: text
- name: app
columns:
- name: env
type: text
- name: version
type: text
- name: vendor
type: text
- name: name
type: text
- name: id
type: text
pk: true
ingest_config:
repos:
- repo_owner: owner
repo: test_repo
branch: master
token: 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
files:
- source_path: /data/test2.csv
target_table: UBUNTU_OS_VERSION
mapping:
col1: instance_id
col2: os_version
col3: vendor
col4: ipaddr
col5: instance_type
col6: inst_name
col7: ami_id
col8: subnet_id
col9: ssh_key
col10: python_version
- source_path: test1.csv
target_table: app
mapping:
col1: id
col2: vendor
col3: name
col4: version
col5: env
- Define the GitHub repository details
- Repository owner
- Repository name
- Branch name
- GitHub access token
- Define the file mapping provided in the extracted CSV
- Source path of CSV
- Target table
- Column mapping
Example Ingest file
i-0c7d8a6f5b4e2c3d1, 18.04, ubuntu, 10.0.0.56, g8.32x, 000-pulsar-dev, ami_adajksdiioudioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6f5b4e2c3d2, 20.04, ubuntu, 10.0.0.55, g8.16x, 001-pulsar-dev, ami_adajksdiioueioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6f5b4e2c3d3, 16.04, ubuntu, 10.0.0.57, g8.32x, 002-pulsar-dev, ami_adajksdiioudioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7e8a6f5b4e2c3d4, 18.04, ubuntu, 10.0.0.54, g8.16x, 003-pulsar-dev, ami_adajksdiioueioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6f5b4e2c3d5, 20.04, ubuntu, 10.0.0.40, g8.32x, 004-pulsar-dev, ami_adajksdiioudioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6f5b4e2c3d6, 22.04, ubuntu, 10.0.0.41, g8.16x, 005-pulsar-dev, ami_adajksdiioueioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6f5b4e2c3d7, 16.04, ubuntu, 10.0.0.42, g8.32x, 006-pulsar-dev, ami_adajksdiioedioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7e8a6f5b4e2c3d8, 18.04, ubuntu, 10.0.0.43, g8.16x, 007-pulsar-dev, ami_adajksdiioueioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6f5b4ewc3d9, 18.04, ubuntu, 10.0.0.36, g8.32x, 000-flink-dev, ami_adajksdiioudioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6d5b4e2c310, 20.04, ubuntu, 10.0.0.35, g8.16x, 001-flink-dev, ami_adajksdiioueioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6f5b4efc311, 16.04, ubuntu, 10.0.0.37, g8.32x, 002-flink-dev, ami_adajksdiioudioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7e8a6f5b4e2c312, 18.04, ubuntu, 10.0.0.34, g8.16x, 003-flink-dev, ami_adajksdiioueioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6f5b4e2c313, 20.04, ubuntu, 10.0.0.30, g8.32x, 004-flink-dev, ami_adajksdiioudioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6f5b4e2c314, 22.04, ubuntu, 10.0.0.31, g8.16x, 005-flink-dev, ami_adajksdiioueioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7d8a6f5b4e2c315, 16.04, ubuntu, 10.0.0.32, g8.32x, 006-flink-dev, ami_adajksdiioedioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
i-0c7e8a6f5b4e2c316, 18.04, ubuntu, 10.0.0.33, g8.16x, 007-flink-dev, ami_adajksdiioueioawoer, subnet_dkfjaskljfioiojaoiwtrjembk, test_key, python3.9.1
Launch application
- Specify a configuration and run the application inside the VM
- Switch user with
sudo su - ubuntu
- Example:
sudo vi default.yaml
specify full path for CONFIG_FILE as/home/ubuntu/default.yaml
- You may create a new file with
vi prod_config.yaml
which is specified as/home/ubuntu/prod_config.yaml
-
Query ingested data through the following API:
- A query to the API can be made in the form of a curl call to the Application IP, port 8000, and the suffixed route pattern
Please replace the following credentials:
KEY_PAIR
SSH Key Pair pathVM_IP
VM IP
API Guide
/os_ubuntu
and/os_ubuntu_status
returns all the records and all the columns in the user provided UBUNTU_OS_VERSION{ "columns": { "columns": [ "created_at", "os_version", "vendor", "ipaddr", "instance_type", "inst_name", "ami_id", "subnet_id", "ssh_key", "python_version" ], "pk": "instance_id" }, "data": [ { "ami_id": "ami_adajksdiioudioawoer", "codename": "Bionic Beaver", "created": "2017-10-19T00:00:00Z", "created_at": "2025-04-12T00:11:43.429741Z", "eol": "2023-05-31T00:00:00Z", "eol_esm": "2028-04-26T00:00:00Z", "eol_server": "2023-05-31T00:00:00Z", "inst_name": "000-pulsar-dev", "instance_id": "i-0c7d8a6f5b4e2c3d1", "instance_type": "g8.32x", "ipaddr": "10.0.0.56", "os_version": "18.04", "python_version": "python3.9.1", "release": "2018-04-26T00:00:00Z", "series": "bionic", "ssh_key": "test_key", "subnet_id": "subnet_dkfjaskljfioiojaoiwtrjembk", "vendor": "ubuntu", "version": "18.04" }, { "ami_id": "ami_adajksdiioueioawoer", "codename": "Focal Fossa", "created": "2019-10-17T00:00:00Z", "created_at": "2025-04-12T00:11:43.431074Z", "eol": "2025-05-29T00:00:00Z", "eol_esm": "2030-04-23T00:00:00Z", "eol_server": "2025-05-29T00:00:00Z", "inst_name": "001-pulsar-dev", "instance_id": "i-0c7d8a6f5b4e2c3d2", "instance_type": "g8.16x", "ipaddr": "10.0.0.55", "os_version": "20.04", "python_version": "python3.9.1", "release": "2020-04-23T00:00:00Z", "series": "focal", "ssh_key": "test_key", "subnet_id": "subnet_dkfjaskljfioiojaoiwtrjembk", "vendor": "ubuntu", "version": "20.04" }, { "ami_id": "ami_adajksdiioudioawoer", "codename": "Xenial Xerus", "created": "2015-10-22T00:00:00Z", "created_at": "2025-04-12T00:11:43.431492Z", "eol": "2021-04-30T00:00:00Z", "eol_esm": "2026-04-23T00:00:00Z", "eol_server": "2021-04-30T00:00:00Z", "inst_name": "002-pulsar-dev", "instance_id": "i-0c7d8a6f5b4e2c3d3", "instance_type": "g8.32x", "ipaddr": "10.0.0.57", "os_version": "16.04", "python_version": "python3.9.1", "release": "2016-04-21T00:00:00Z", "series": "xenial", "ssh_key": "test_key", "subnet_id": "subnet_dkfjaskljfioiojaoiwtrjembk", "vendor": "ubuntu", "version": "16.04" }, { "ami_id": "ami_adajksdiioueioawoer", "codename": "Bionic Beaver", "created": "2017-10-19T00:00:00Z", "created_at": "2025-04-12T00:11:43.431912Z", "eol": "2023-05-31T00:00:00Z", "eol_esm": "2028-04-26T00:00:00Z", "eol_server": "2023-05-31T00:00:00Z", "inst_name": "003-pulsar-dev", "instance_id": "i-0c7e8a6f5b4e2c3d4", "instance_type": "g8.16x", "ipaddr": "10.0.0.54", "os_version": "18.04", "python_version": "python3.9.1", "release": "2018-04-26T00:00:00Z", "series": "bionic", "ssh_key": "test_key", "subnet_id": "subnet_dkfjaskljfioiojaoiwtrjembk", "vendor": "ubuntu", "version": "18.04" }, { "ami_id": "ami_adajksdiioudioawoer", "codename": "Focal Fossa", "created": "2019-10-17T00:00:00Z", "created_at": "2025-04-12T00:11:43.434624Z", "eol": "2025-05-29T00:00:00Z", "eol_esm": "2030-04-23T00:00:00Z", "eol_server": "2025-05-29T00:00:00Z", "inst_name": "004-pulsar-dev", "instance_id": "i-0c7d8a6f5b4e2c3d5", "instance_type": "g8.32x", "ipaddr": "10.0.0.40", "os_version": "20.04", "python_version": "python3.9.1", "release": "2020-04-23T00:00:00Z", "series": "focal", "ssh_key": "test_key", "subnet_id": "subnet_dkfjaskljfioiojaoiwtrjembk", "vendor": "ubuntu", "version": "20.04" }, { "ami_id": "ami_adajksdiioueioawoer", "codename": "Jammy Jellyfish", "created": "2021-10-14T00:00:00Z", "created_at": "2025-04-12T00:11:43.435055Z", "eol": "2027-06-01T00:00:00Z", "eol_esm": "2032-04-21T00:00:00Z", "eol_server": "2027-06-01T00:00:00Z", "inst_name": "005-pulsar-dev", "instance_id": "i-0c7d8a6f5b4e2c3d6", "instance_type": "g8.16x", "ipaddr": "10.0.0.41", "os_version": "22.04", "python_version": "python3.9.1", "release": "2022-04-21T00:00:00Z", "series": "jammy", "ssh_key": "test_key", "subnet_id": "subnet_dkfjaskljfioiojaoiwtrjembk", "vendor": "ubuntu", "version": "22.04" }, ] }
/os_ubuntu_status_eol
returns the end of life records in the user provided UBUNTU_OS_VERSION/os_ubuntu_status_supported
returns the supported life records in the user provided UBUNTU_OS_VERSION/initialize
applies the configuration/ingest
ingests the user provided data
Output will be emitted in the form of JSON. jq
or a similiar tool is recommended.