Initial specification and documentation
parent
8594d070fd
commit
8fbedf5560
|
|
@ -0,0 +1,96 @@
|
||||||
|
{
|
||||||
|
"version": "0.0.1",
|
||||||
|
"created_on": "2022-08-07T13:43:21Z",
|
||||||
|
"updated_on": "2022-08-07T13:43:21Z",
|
||||||
|
"organisation": "Meerkat Manor",
|
||||||
|
|
||||||
|
"name": "Web site",
|
||||||
|
"owner": {
|
||||||
|
"email": "meerkat@merebox.com",
|
||||||
|
"web": "https://www.merebox.com",
|
||||||
|
"matrix":"@devops:merebox.com"
|
||||||
|
},
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/overview.md",
|
||||||
|
|
||||||
|
"repository": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps",
|
||||||
|
"source-engine": "Git",
|
||||||
|
"source": "https://github.com/meerkat-manor/rediOps.git",
|
||||||
|
"artefact": ""
|
||||||
|
},
|
||||||
|
|
||||||
|
"dependency": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/dependency.md",
|
||||||
|
"apis": [],
|
||||||
|
"tools": []
|
||||||
|
},
|
||||||
|
|
||||||
|
"build": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/build.md",
|
||||||
|
"engine": "JENKINS"
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
"test": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/test.md",
|
||||||
|
"engine": "UNITTEST"
|
||||||
|
},
|
||||||
|
|
||||||
|
"api" : [
|
||||||
|
{
|
||||||
|
"engine": "GIT",
|
||||||
|
"url": "/specification/rediops.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"engine": "GIT",
|
||||||
|
"url": "/specification/rediops.yaml"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"engine": "REST",
|
||||||
|
"url": "/api/v0/docs/rediops.json"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
"health": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/health.md",
|
||||||
|
"api" :[
|
||||||
|
{"url": "/health", "status": 200, "response": ""}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"install": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/install.md",
|
||||||
|
"engine": "COMMAND",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [
|
||||||
|
],
|
||||||
|
"script": "/deploy/install.sh",
|
||||||
|
"post": [
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"refresh": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/refresh.md",
|
||||||
|
"engine": "COMMAND",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [],
|
||||||
|
"script": "/deploy/refresh.sh",
|
||||||
|
"post": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"uninstall": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/uninstall.md",
|
||||||
|
"engine": "ANSIBLE",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [],
|
||||||
|
"script": "/deploy/decommission.sh",
|
||||||
|
"post": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
# Build
|
||||||
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Dependency
|
||||||
|
|
||||||
|
The dependency section is for defining any downstream APIs. An API can be:
|
||||||
|
|
||||||
|
* ODBC or JDBC connection
|
||||||
|
* REST
|
||||||
|
* FILE
|
||||||
|
|
||||||
|
For each dependency you can define the:
|
||||||
|
|
||||||
|
1. Asset ID: An identifier for the downstream asset such as a CMDB identifier.
|
||||||
|
This enables you to locate the details if you have a central database.
|
||||||
|
2. Protocol: The protocol that connects to the downstream component
|
||||||
|
3. URL: The resource location. This has different meanings for each protocol
|
||||||
|
|
||||||
|
## OBC or JDBC
|
||||||
|
|
||||||
|
The URL is the connection string, minus user and password information. With credentials
|
||||||
|
the caller can enquire about the database schema
|
||||||
|
|
||||||
|
# REST
|
||||||
|
|
||||||
|
The URL is the OpenAPI specification document. With the OpenAPI document, the caller can
|
||||||
|
discover the schema and if the specification includes, the servers publishing data using the
|
||||||
|
specification.
|
||||||
|
|
||||||
|
# File
|
||||||
|
|
||||||
|
The URL contains the HTTPS, SFTP, FTP location of the document describing the file
|
||||||
|
that is sent to or received from the remote location.
|
||||||
|
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```json
|
||||||
|
"dependency": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/dependency.md",
|
||||||
|
"apis": [
|
||||||
|
{
|
||||||
|
"asset_id": "AI560003",
|
||||||
|
"protocol": "ODBC",
|
||||||
|
"url": "postgresql://${{user}}:${{password}}@/tutorial1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"asset_id": "AI560044",
|
||||||
|
"protocol": "REST",
|
||||||
|
"url": "https://api.example.com/api/v1/openapi.yaml"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tools": []
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Health
|
||||||
|
|
||||||
|
The health section is to enable the discovery of any health services published by
|
||||||
|
the component. This specifies the name(s) of the health service
|
||||||
|
|
||||||
|
**Note:** A health service should also be described in the OpenAPI document, which will
|
||||||
|
provide more details.
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
# Install
|
||||||
|
|
||||||
|
The install section is to enable the discovery of the functions
|
||||||
|
to use when a install of the component is required.
|
||||||
|
|
||||||
|
The definition does not include details about the server or infrastructure
|
||||||
|
as these can vary. This is definition works similar to the Ansible
|
||||||
|
inventory and playbooks.
|
||||||
|
|
||||||
|
The same instructions for installation can be used for both non-production
|
||||||
|
and production installation if the environment attributes are
|
||||||
|
soft coded.
|
||||||
|
|
||||||
|
## Engine
|
||||||
|
|
||||||
|
The engine identifies the processor for the refresh.
|
||||||
|
|
||||||
|
For Ansible, the parameters are defined in the "playbook".
|
||||||
|
|
||||||
|
For Command, the commands or script to execute are defined in the "commands"
|
||||||
|
|
||||||
|
## Playbook
|
||||||
|
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
The commands allows for commands to be defined either in the definition or the commands
|
||||||
|
as found in a file, where such a file can (should) be stored on the source version control
|
||||||
|
system (e.g. Git)
|
||||||
|
|
||||||
|
If the install commands are stored in a file in Git, then they can be amended there and tested
|
||||||
|
without changing the contents of the devops.json file.
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```json
|
||||||
|
"install": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/install.md",
|
||||||
|
"engine": "COMMAND",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [],
|
||||||
|
"script": "/deploy/install.sh",
|
||||||
|
"post": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Overview
|
||||||
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Refresh
|
||||||
|
|
||||||
|
The refresh section is to enable the discovery of the functions
|
||||||
|
to use when a refresh of the component is required.
|
||||||
|
|
||||||
|
## Engine
|
||||||
|
|
||||||
|
The engine identifies the processor for the refresh.
|
||||||
|
|
||||||
|
For Ansible, the parameters are defined in the "playbook".
|
||||||
|
|
||||||
|
For Command, the commands or script to execute are defined in the "commands"
|
||||||
|
|
||||||
|
## Playbook
|
||||||
|
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
The commands allows for commands to be defined either in the definition or the commands
|
||||||
|
as found in a file, where such a file can (should) be stored on the source version control
|
||||||
|
system (e.g. Git)
|
||||||
|
|
||||||
|
If the refresh commands are stored in a file in Git, then they can be amended there and tested
|
||||||
|
without changing the contents of the devops.json file.
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```json
|
||||||
|
"refresh": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/refresh.md",
|
||||||
|
"engine": "COMMAND",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [],
|
||||||
|
"script": "/deploy/refresh.sh",
|
||||||
|
"post": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
# Test
|
||||||
|
|
||||||
|
|
||||||
|
## Regression
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
# Uninstall
|
||||||
|
|
||||||
|
The uninstall section is to enable the discovery of the functions
|
||||||
|
to use when a decommisison of the component is required.
|
||||||
|
|
||||||
|
The definition does not include details about the server or infrastructure
|
||||||
|
as these can vary. This is definition works similar to the Ansible
|
||||||
|
inventory and playbooks.
|
||||||
|
|
||||||
|
## Engine
|
||||||
|
|
||||||
|
The engine identifies the processor for the refresh.
|
||||||
|
|
||||||
|
For Ansible, the parameters are defined in the "playbook".
|
||||||
|
|
||||||
|
For Command, the commands or script to execute are defined in the "commands"
|
||||||
|
|
||||||
|
## Playbook
|
||||||
|
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
The commands allows for commands to be defined either in the definition or the commands
|
||||||
|
as found in a file, where such a file can (should) be stored on the source version control
|
||||||
|
system (e.g. Git)
|
||||||
|
|
||||||
|
If the decommission commands are stored in a file in Git, then they can be amended there and tested
|
||||||
|
without changing the contents of the devops.json file.
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```json
|
||||||
|
"install": {
|
||||||
|
"guide": "https://github.com/meerkat-manor/rediOps/blob/main/guide/install.md",
|
||||||
|
"engine": "COMMAND",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [],
|
||||||
|
"script": "/deploy/decommission.sh",
|
||||||
|
"post": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
@ -0,0 +1,979 @@
|
||||||
|
{
|
||||||
|
"openapi": "3.0.0",
|
||||||
|
"info": {
|
||||||
|
"title": "Rediscover DevOps configuration",
|
||||||
|
"version": "v1"
|
||||||
|
},
|
||||||
|
"paths": {
|
||||||
|
"/.well-known/devops": {
|
||||||
|
"get": {
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"content": {
|
||||||
|
"application/json": {
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/components/schemas/devops",
|
||||||
|
"properties": {
|
||||||
|
"version": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "0.0.1"
|
||||||
|
},
|
||||||
|
"created_on": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "2022-03-04T15:43:21Z"
|
||||||
|
},
|
||||||
|
"updated_on": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "2022-03-04T15:43:21Z"
|
||||||
|
},
|
||||||
|
"organisation": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "Meerkat Manor Tech College"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "Web site"
|
||||||
|
},
|
||||||
|
"asset_id": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "AID07828923"
|
||||||
|
},
|
||||||
|
"owner": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"email": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "devops@meerkatmanor-tech.org"
|
||||||
|
},
|
||||||
|
"web": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "meerkatmanor-tech.org"
|
||||||
|
},
|
||||||
|
"slack": {
|
||||||
|
"type": "string",
|
||||||
|
"example": ""
|
||||||
|
},
|
||||||
|
"twitter": {
|
||||||
|
"type": "string",
|
||||||
|
"example": ""
|
||||||
|
},
|
||||||
|
"matrix": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "@devops:meerkat-manor.org"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview"
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "https://github.com"
|
||||||
|
},
|
||||||
|
"artefact": {
|
||||||
|
"type": "string",
|
||||||
|
"example": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependency": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string",
|
||||||
|
"example": ""
|
||||||
|
},
|
||||||
|
"apis": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"asset_id": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "AI560003"
|
||||||
|
},
|
||||||
|
"protocol": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "ODBC"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"type": "string",
|
||||||
|
"example": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tools": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "JENKINS"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "UNITTEST"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"api": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "api/v1/openapispec.json"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"health": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview"
|
||||||
|
},
|
||||||
|
"api": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"url": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "/health"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"type": "integer",
|
||||||
|
"example": 200
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"type": "string",
|
||||||
|
"example": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"install": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "ANSIBLE"
|
||||||
|
},
|
||||||
|
"playbook": {
|
||||||
|
"type": "string",
|
||||||
|
"example": ""
|
||||||
|
},
|
||||||
|
"commands": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"pre": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "hostname"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"script": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "deploy/install.sh"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "echo Bye Bye"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"refresh": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "COMMAND"
|
||||||
|
},
|
||||||
|
"playbook": {
|
||||||
|
"type": "string",
|
||||||
|
"example": ""
|
||||||
|
},
|
||||||
|
"commands": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"pre": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"script": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "deploy/refresh.sh"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "echo Refresh completed"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uninstall": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "ANSIBLE"
|
||||||
|
},
|
||||||
|
"playbook": {
|
||||||
|
"type": "string",
|
||||||
|
"example": ""
|
||||||
|
},
|
||||||
|
"commands": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"pre": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"script": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "deploy/decomission.sh"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"example": "rm -R /opt/meerkat-manor/example"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"examples": {
|
||||||
|
"Demo": {
|
||||||
|
"value": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"created_on": "2022-03-04T15:43:21Z",
|
||||||
|
"updated_on": "2022-03-04T15:43:21Z",
|
||||||
|
"organisation": "Meerkat Manor Tech College",
|
||||||
|
"name": "Web site",
|
||||||
|
"asset": {
|
||||||
|
"id": "AID07828923",
|
||||||
|
"name": "",
|
||||||
|
"url": ""
|
||||||
|
},
|
||||||
|
"owner": {
|
||||||
|
"email": "devops@meerkatmanor-tech.org",
|
||||||
|
"web": "meerkatmanor-tech.org",
|
||||||
|
"slack": "",
|
||||||
|
"twitter": "",
|
||||||
|
"matrix": "@devops:meerkat-manor.org"
|
||||||
|
},
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"repository": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"source-engine": "Git",
|
||||||
|
"source": "https://github.com",
|
||||||
|
"artefact": ""
|
||||||
|
},
|
||||||
|
"dependency": {
|
||||||
|
"guide": "",
|
||||||
|
"apis": [
|
||||||
|
{
|
||||||
|
"asset_id": "AI560003",
|
||||||
|
"protocol": "ODBC",
|
||||||
|
"url": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"asset_id": "AI560044",
|
||||||
|
"protocol": "REST",
|
||||||
|
"url": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tools": [
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "JENKINS"
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "UNITTEST"
|
||||||
|
},
|
||||||
|
"api": [
|
||||||
|
{
|
||||||
|
"engine": "REST",
|
||||||
|
"url": "api/v1/openapispec.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"engine": "REST",
|
||||||
|
"url": "api/v2/openapispec.json"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"health": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"api": [
|
||||||
|
{
|
||||||
|
"url": "/health",
|
||||||
|
"status": 200,
|
||||||
|
"response": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"install": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "ANSIBLE",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [
|
||||||
|
"hostname",
|
||||||
|
"whoami"
|
||||||
|
],
|
||||||
|
"script": "deploy/install.sh",
|
||||||
|
"post": [
|
||||||
|
"echo Bye Bye"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"refresh": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "COMMAND",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [
|
||||||
|
],
|
||||||
|
"script": "deploy/refresh.sh",
|
||||||
|
"post": [
|
||||||
|
"echo Refresh completed"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uninstall": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "ANSIBLE",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [
|
||||||
|
],
|
||||||
|
"script": "deploy/decomission.sh",
|
||||||
|
"post": [
|
||||||
|
"rm -R /opt/meerkat-manor/example",
|
||||||
|
"echo Component removed"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"description": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "Fetch the DevOps information",
|
||||||
|
"description": "Commonly the DevOps information is not fetched using a REST API but is actually the JSON file stored the root **.well-known** directory as the file name **devops.json**\n\nIf so required there can be a supporting REST API to fetch the contents, but that is not the primary intent."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"components": {
|
||||||
|
"schemas": {
|
||||||
|
"devops-action": {
|
||||||
|
"title": "Root Type for devops-action",
|
||||||
|
"description": "",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"enum": [
|
||||||
|
"ANSIBLE",
|
||||||
|
"COMMANDS"
|
||||||
|
],
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"playbook": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"commands": {
|
||||||
|
"$ref": "#/components/schemas/commands",
|
||||||
|
"properties": {
|
||||||
|
"pre": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"script": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"example": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "ANSIBLE",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [
|
||||||
|
"hostname",
|
||||||
|
"whoami"
|
||||||
|
],
|
||||||
|
"script": "deploy/install.sh",
|
||||||
|
"post": [
|
||||||
|
"echo Bye Bye"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commands": {
|
||||||
|
"title": "Root Type for commands",
|
||||||
|
"description": "Commands are executed by the engine. The commands need to be constructed in a format compatible with the engine. ",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"pre": {
|
||||||
|
"description": "Commands if any that are executed before the script and post items.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"script": {
|
||||||
|
"description": "A single script thais executed after the \"pre\" and before the \"post\" commands.\nThe script can be an URL or a file within the version control (e.g. Git) repository.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"description": "Commands if any that are executed after the script.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"example": {
|
||||||
|
"pre": [
|
||||||
|
"hostname",
|
||||||
|
"whoami"
|
||||||
|
],
|
||||||
|
"script": "/deploy/install.sh",
|
||||||
|
"post": [
|
||||||
|
"echo Bye Bye"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"owner-contact": {
|
||||||
|
"title": "Root Type for asset-owner",
|
||||||
|
"description": "",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"email": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"web": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"slack": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"twitter": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"matrix": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"example": {
|
||||||
|
"email": "devops@meerkatmanor-tech.org",
|
||||||
|
"web": "meerkatmanor-tech.org",
|
||||||
|
"slack": "",
|
||||||
|
"twitter": "",
|
||||||
|
"matrix": "@devops:meerkat-manor.org"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"asset-id": {
|
||||||
|
"title": "Root Type for asset-id",
|
||||||
|
"description": "",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"example": {
|
||||||
|
"id": "AID07828923",
|
||||||
|
"name": "devops",
|
||||||
|
"url": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"devops": {
|
||||||
|
"title": "Root Type for devops",
|
||||||
|
"description": "Information that supports DevOps activity.",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"version": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"created_on": {
|
||||||
|
"format": "date-time",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updated_on": {
|
||||||
|
"format": "date-time",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"organisation": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"asset": {
|
||||||
|
"$ref": "#/components/schemas/asset-id",
|
||||||
|
"description": "Asset information that is intended to be related to a Computer Management Database (CMDB).\n\nBy linking to the asset in an CMDB further information can be retrieved.\n\nIf the CMDB link exists then it should be considered the authorative source where the same information exists in this definition.\n\nIf you wish the DevOps workflow to control the information and be versioned with Git, then you can use this information to push updates to the CMDB. Just include processing of the __./well-known/devops.json__ into your deployment pipeline and post to the CMDB the updates.",
|
||||||
|
"example": "{\r\n \"id\": \"AID07828923\",\r\n \"name\": \"devops\",\r\n \"url\": \"\"\r\n}"
|
||||||
|
},
|
||||||
|
"owner": {
|
||||||
|
"$ref": "#/components/schemas/owner-contact",
|
||||||
|
"description": "Contact information for the asset / artifact being described.\n\nIf the asset information is provided from a central source then this content should match.",
|
||||||
|
"properties": {
|
||||||
|
"email": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"web": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"slack": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"twitter": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"matrix": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"guide": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"description": "Repository links",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"artefact": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependency": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"apis": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"asset_id": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"protocol": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tools": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"health": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"api": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"url": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"format": "int32",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"response": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"install": {
|
||||||
|
"$ref": "#/components/schemas/devops-action",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"playbook": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"commands": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"pre": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"script": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"refresh": {
|
||||||
|
"$ref": "#/components/schemas/devops-action",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"playbook": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"commands": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"pre": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"script": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uninstall": {
|
||||||
|
"$ref": "#/components/schemas/devops-action",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"engine": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"playbook": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"commands": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"pre": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"script": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apis": {
|
||||||
|
"description": "List of OpenAPI definitions.\n\nThe list can include Git and REST versions, because before build the API might not be available\nas a REST service.",
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/components/schemas/api"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"example": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"created_on": "2022-03-04T15:43:21Z",
|
||||||
|
"updated_on": "2022-03-04T15:43:21Z",
|
||||||
|
"organisation": "Meerkat Manor Tech College",
|
||||||
|
"name": "Web site",
|
||||||
|
"asset": {
|
||||||
|
"id": "AID07828923",
|
||||||
|
"name": "website",
|
||||||
|
"url": ""
|
||||||
|
},
|
||||||
|
"owner": {
|
||||||
|
"email": "devops@meerkatmanor-tech.org",
|
||||||
|
"web": "meerkatmanor-tech.org",
|
||||||
|
"slack": "",
|
||||||
|
"twitter": "",
|
||||||
|
"matrix": "@devops:meerkat-manor.org"
|
||||||
|
},
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"repository": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"source": "https://github.com",
|
||||||
|
"artefact": ""
|
||||||
|
},
|
||||||
|
"dependency": {
|
||||||
|
"guide": "",
|
||||||
|
"apis": [
|
||||||
|
{
|
||||||
|
"asset_id": "AI560003",
|
||||||
|
"protocol": "ODBC",
|
||||||
|
"url": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"asset_id": "AI560044",
|
||||||
|
"protocol": "REST",
|
||||||
|
"url": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tools": [
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"build": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "JENKINS"
|
||||||
|
},
|
||||||
|
"test": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "UNITTEST"
|
||||||
|
},
|
||||||
|
"api": [
|
||||||
|
"api/v1/openapispec.json",
|
||||||
|
"api/v2/openapispec.json"
|
||||||
|
],
|
||||||
|
"health": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"api": [
|
||||||
|
{
|
||||||
|
"url": "/health",
|
||||||
|
"status": 200,
|
||||||
|
"response": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"install": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "ANSIBLE",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [
|
||||||
|
"hostname",
|
||||||
|
"whoami"
|
||||||
|
],
|
||||||
|
"script": "deploy/install.sh",
|
||||||
|
"post": [
|
||||||
|
"echo Bye Bye"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"refresh": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "COMMAND",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [
|
||||||
|
],
|
||||||
|
"script": "deploy/refresh.sh",
|
||||||
|
"post": [
|
||||||
|
"echo Refresh completed"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uninstall": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"engine": "ANSIBLE",
|
||||||
|
"playbook": "",
|
||||||
|
"commands": {
|
||||||
|
"pre": [
|
||||||
|
],
|
||||||
|
"script": "deploy/decomission.sh",
|
||||||
|
"post": [
|
||||||
|
"rm -R /opt/meerkat-manor/example",
|
||||||
|
"echo Component removed"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"title": "Root Type for repository",
|
||||||
|
"description": "Link information to repositories for various registeries.\n\nYou can add custom extensions with prefix **x-** ",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"guide": {
|
||||||
|
"description": "Link tgo documentation on repositories used by this component",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"source-engine": {
|
||||||
|
"description": "Source control version engine.\n\nThis can be used by tools to retreive source code using binary executables.\n\nSome common tools are \"Git\", \"TFS\", \"Mercurial\", \"CVS\".",
|
||||||
|
"type": "string",
|
||||||
|
"example": "Git"
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"description": "Link to source version control system, such as Git.\n\nThe version control engine will provide the source version control system.",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"artefact-engine": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"artefact": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"example": {
|
||||||
|
"guide": "https://sku61.atlassian.net/wiki/spaces/WELLKNOWN/overview",
|
||||||
|
"source-engine": "Git",
|
||||||
|
"source": "https://github.com",
|
||||||
|
"artefact-engine": "Archiva",
|
||||||
|
"artefact": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"api": {
|
||||||
|
"title": "Root Type for api",
|
||||||
|
"description": "",
|
||||||
|
"type": "string",
|
||||||
|
"example": {
|
||||||
|
"engine": "REST",
|
||||||
|
"url": "api/v1/openapispec.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue