如何在环境配置中使用表格数据

41次阅读
没有评论

问题描述

在系统中使用Consul KV来存储环境特定的配置。目前,他通过Consul API/UI直接维护这些值,但希望创建一个专门的配置仓库,将其维护为JSON/YAML,并使用类似git2consul的工具进行部署。无论如何,他很高兴将这个配置与应用程序代码分开保存。
大部分配置都是简单的键值对,例如:

moduleA:
  featureA: true
  featureB: false
  optionX: 123
  something: foo
  somethingElse: moo

然而,他还有一些更像是表格的选项和特性,例如:

countries:
  us:
    featureZ: true
    numServers: 5
    retention: 10
    ...
  uk:
    featureZ: false
    numServers: 2
    retention: 2
    ...
  es:
    featureZ: true
    numServers: 1
    retention: 15
    ...
  ...

对于这些更像是表格的数据,他希望能够以表格形式显示和编辑,以便更方便地管理。
请问你有什么建议吗?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

一种方法是将表格数据存储为CSV,并编写一个简单的脚本来解析CSV并生成适当的YAML或JSON输出。这样,你可以将这个脚本作为部署流程的一部分。
以下是一个示例脚本,可以将CSV转换为YAML格式:

import csv
import yaml

def csv_to_yaml(csv_file, yaml_file):
    with open(csv_file, 'r') as file:
        reader = csv.DictReader(file)
        data = {}
        for row in reader:
            country = row['country']
            featureZ = row['featureZ']
            numServers = row['numServers']
            retention = row['retention']
            if country not in data:
                data[country] = {}
            data[country]['featureZ'] = featureZ == 'true'
            data[country]['numServers'] = int(numServers)
            data[country]['retention'] = int(retention)

    with open(yaml_file, 'w') as file:
        yaml.dump(data, file)

csv_to_yaml('config.csv', 'config.yaml')

在上面的示例中,我们使用Python编写了一个脚本,将CSV文件转换为YAML格式。你可以根据实际情况修改脚本中的字段名称和文件路径。

方案2

另一种方法是使用一些支持表格编辑的工具来管理这些数据。以下是一些推荐的工具:
Airtable:一个在线表格编辑工具,可以方便地创建、编辑和共享表格数据。
Google Sheets:一个在线电子表格工具,可以与其他人协作编辑表格数据。
Microsoft Excel:一个功能强大的电子表格工具,可以创建和编辑表格数据。
这些工具都支持导出为CSV、JSON或其他格式,你可以根据需要选择合适的格式进行导出和使用。

方案3

如果你不想使用外部工具,你也可以考虑使用一些开源的表格编辑库来实现表格编辑功能。以下是一些可能的选择:
Tabulator:一个功能强大的JavaScript表格库,可以在网页中创建和编辑表格。
Handsontable:一个基于JavaScript的电子表格库,可以在网页中创建和编辑表格。
这些库都提供了丰富的功能和API,可以根据你的需求进行定制和扩展。
以上是一些关于如何在环境配置中使用表格数据的建议,希望对你有帮助!

正文完