Консольная утилита для получения и переопределения конфигруации модулей isp
- Linux
yum install ispctlispctl [flag...] status [local_flag]
ispctl [flag...] get module_name property_path [local_flag]
ispctl [flag...] set module_name property_path [new_object]
ispctl [flag...] delete module_name property_path
ispctl [flag...] schema module_name [local_flag]
ispctl [flag...] vars get variable_name
ispctl [flag...] vars list
ispctl [flag...] vars set [local_flag] variable_name variable_value
ispctl [flag...] vars delete variable_name
ispctl [flag...] vars upload csv_filepath| Команды | Описание |
|---|---|
status |
возвращает доступные конфигурации модулей, их состояния и подключения |
get |
возвращает объект конфигурации указанного модуля |
set |
изменяет объект конфигурации указанного модуля |
delete |
удаляет объект конфигурации указанного модуля |
merge |
поблочно производит слияние конфигурации модуля с json конфигом через stdin |
gitget |
скачивает из репозитория указанный файлы с указанного комита |
schema |
возвращает схему конфигурации указанного модуля |
vars get |
выводит информацию о переменной в json формате |
vars list |
выводит список переменных в виде ASCII-таблицы |
vars set |
изменяет значение переменной |
vars delete |
удаляет переменную по имени |
vars upload |
загружает переменные из csv файла |
| Флаги | Параметры | Описание |
|---|---|---|
-g |
string | адрес isp-config-service |
-unsafe |
отключает проверку схемы перед изменением конфигурации | |
| Аргументы | Описание |
|---|---|
module_name |
Название модуля с которым происходит взаимодействие |
property_path |
Путь к объекту конфигурации, при значении . работа происходит со всей конфигурацией модуля |
new_object |
Новый объект, значение должно быть экранировано с помощью ' ', при отсутсвии ожидается ввод из stdin |
variable_name |
Название переменной с которой происходит взаимодействие |
variable_value |
Значение переменной |
csv_filepath |
Путь к csv файлу с переменными для загрузки |
| Локальные флаги | Параметры | Команды | Описание |
|---|---|---|---|
-o |
string | schema | определяет формат вывода схемы в stdout; по умолчанию json; возможные значения json, html |
-full |
bool | get | осуществляет взаимодействие с объектами конфигурации модуля с учетом объектом общих конфигураций, которые имеют связь с модулем |
-secret |
bool | vars set | устанавливает тип переменной в SECRET |
ispctl [flag...] status [local_flag]
[local_flag] - локальный флаг -o определяет формат вывода доступных конфигураций и состояний модулей. Доступные значения: json.
По умолчанию вывод осуществляется в виде таблицы.
Запрос
ispctl statusОтвет
MODULE NAME | STATUS | ADDRESSES
+------------------------+---------------+-------------------------+
admin | CONNECTED | 127.0.0.1
auth | NOT_CONNECTED |
config | CONNECTED | 127.0.0.1
converter | CONNECTED | 127.0.0.1
journal | NOT_CONNECTED |ispctl [flag...] get module_name property_path
- Получение полной конфигурации
Запрос
ispctl get example .Ответ
{
"journal": {
"bufferSize": 4092,
"compress": true,
"enable": false,
"enableRemoteTransfer": true,
"filename": "/var/log/example-service/runtime.log",
"maxSizeMb": 512,
"rotateTimeoutMs": 86400000
},
"metrics": {
"address": {
"ip": "127.0.0.1",
"path": "/metrics",
"port": 1
},
"gc": 2,
"memory": true
}
}- Получение конкретного объекта конфигурации
Запрос
ispctl get example .metrics.addressОтвет
{
"ip": "127.0.0.1",
"path": "/metrics",
"port": 1
}ispctl [flag...] set module_name property_path [new_object]
При указании new_object необходимо его экранировать. При его отсутсвии ожидается ввод из stdin до EOF
- Вставка нового поля в объект конфигурации
Запрос
ispctl set example .metrics.newField '"1000"'Ответ
{
"journal": {
"bufferSize": 4092,
"compress": true,
"enable": false,
"enableRemoteTransfer": true,
"filename": "/var/log/example-service/runtime.log",
"maxSizeMb": 512,
"rotateTimeoutMs": 86400000
},
"metrics": {
"address": {
"ip": "127.0.0.1",
"path": "/metrics",
"port": 1
},
"gc": 2,
"memory": true,
"newField": "1000"
}
}- Изменение объекта конфигурации
Запрос
ispctl set example .metrics '{"address":{"ip":"198.0.0.1","newField":"100","port":1},"gc":1,"memory":false}'Ответ
{
"journal": {
"bufferSize": 4092,
"compress": true,
"enable": false,
"enableRemoteTransfer": true,
"filename": "/var/log/example-service/runtime.log",
"maxSizeMb": 512,
"rotateTimeoutMs": 86400000
},
"metrics": {
"address": {
"ip": "198.0.0.1",
"newField": "100",
"port": 1
},
"gc": 1,
"memory": false
}
}- Полное обновление конфигурации
Запрос
ispctl set example . '{"journal":{"bufferSize":1111,"compress":false,"enable":true,"filename":"/var/log/example-service/runtime.log","newField":"1000"},"metrics":{"address":{"ip":"198.0.0.1","newField":"100","port":1},"gc":1,"memory":false}}'Ответ
{
"journal": {
"bufferSize": 1111,
"compress": false,
"enable": true,
"filename": "/var/log/example-service/runtime.log",
"newField": "1000"
},
"metrics": {
"address": {
"ip": "198.0.0.1",
"newField": "100",
"port": 1
},
"gc": 1,
"memory": false
}
}ispctl [flag...] delete module_name property_path
- Удаление объекта конфигурации
Запрос
ispctl delete example .journalОтвет
{
"metrics": {
"address": {
"ip": "198.0.0.1",
"newField": "100",
"port": 1
},
"gc": 1,
"memory": false
}
}- Удаление поля из конфигурации
Запрос
ispctl delete example .metrics.address.ipОтвет
{
"metrics": {
"address": {
"newField": "100",
"port": 1
},
"gc": 1,
"memory": false
}
}- Удаление конфигурации
Запрос
ispctl delete example .Ответ
{}ispctl [flag...] schema module_name [local_flag]
- Получение схемы конфигурации
Запрос
ispctl schema exampleОтвет
{
"title": "example"
"schema": {
"title": "Remote config",
"type": "object",
"required": [
"journal",
],
...
...
...
}
}Запрос
ispctl schema example -o htmlОтвет
<html>
<head>
...
...
...
<body>
<div class="results"></div>
<script>
var schema = [
{"schema":{"required":["journal"]...
...
...
</script>
</body>
</html>
Содержание файла example.json
{
"metrics": {
"gc": 1,
"memory": false
},
"property": "replaced"
}Конфигурация модуля example
{
"database": {
"host": "127.0.0.1"
},
"property": "original"
}ispctl merge example < example.jsonРезультат в конфигурации модуля
{
"metrics": {
"gc": 1,
"memory": false
},
"property": "replaced",
"database": {
"host": "127.0.0.1"
}
}ispctl gitget git@github.com:integration-system/ispctl.git main.go d4d7c679aad47ae204c2b3a4587b032a723fe315ispctl [flag...] vars get variable_name
Запрос
ispctl vars get example_variableОтвет
{
"name": "example_variable",
"description": "example description text",
"type": "TEXT",
"value": "some variable value",
"containsInConfigs": []
}ispctl [flag...] vars list
Запрос
ispctl vars listОтвет
+--------+-------------+--------+-----------------+---------+
| NAME | DESCRIPTION | TYPE | VALUE | CONFIGS |
+--------+-------------+--------+-----------------+---------+
| var-99 | описание | SECRET | | |
+--------+-------------+--------+-----------------+---------+
| var-6 | описание | SECRET | | |
+--------+-------------+--------+-----------------+---------+
| var-2 | описание | TEXT | 1131231-2131231 | |
+--------+-------------+--------+-----------------+---------+
| var-1 | описание | SECRET | | |
+--------+-------------+--------+-----------------+---------+ispctl [flag...] vars set variable_name variable_value
Запрос на изменение значения переменной и установку типа TEXT
ispctl vars set example_variable valueЗапрос на изменение значения переменной и установку типа SECRET
ispctl vars set -secret example_variable valueispctl [flag...] vars delete variable_name
Запрос
ispctl vars delete example_variableispctl [flag...] vars upload csv_filepath
Запрос
ispctl vars upload example.csvCSV должен иметь поля name, type, value, description
пример CSV файла:
name,type,value,description
variable-1,SECRET,var 1 value,Описание 1 переменной
variable-2,TEXT,plaintext value,Описание 2 переменной
Запрос
ispctl -g '127.0.0.1:9002' set example . '{"metrics":{"address":{"ip":"127.0.0.1","newField":"100","port":1},"gc":1,"memory":false}}'Ответ
{
"metrics": {
"address": {
"ip": "127.0.0.1",
"newField": "100",
"port": 1
},
"gc": 1,
"memory": false
}
}1