栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

环境变量替换配置文件占位符工具

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

环境变量替换配置文件占位符工具

文章目录
  • 环境变量替换配置文件占位符工具
    • 1. 配置文件模板化方法
      • 1.1 配置文件内容模板化
      • 1.2 配置文件名称命名规则
    • 2. 使用方法
      • 2.1 编译
      • 2.2 示例文件
        • 1)文件结构
        • 2)文件内容
        • 3)执行方法
        • 4)生成后文件

环境变量替换配置文件占位符工具

该工具可以将模板化的配置文件中的占位符,统一替换成环境变量值,其中值的来源有:1)指定变量文件,2)系统环境变量,3)默认变量值。占位符替换顺序,指定变量文件 > 系统环境变量 > 默认变量值。

代码:https://gitee.com/hhm1024/env2cfg

1. 配置文件模板化方法 1.1 配置文件内容模板化

采用SpringBoot配置文件中占位符方式对配置文件模板化,${KEY:default value},示例如下:

spring:
  datasource:
    druid:
      core:
        url: jdbc:postgresql://${DB_HOST:192.168.12.55}:${DB_PORT:5432}/${DB_DATABASE:db}
        username: ${DB_USERNAME:postgres}
        password: ${DB_PASSWORD:postgres}
        driver-class-name:  ${DB_DRIVER:org.postgresql.Driver}
apihost: ${CLUSTER_KUBE_VIP:192.168.4.200}:11097
country: ${ COUNTRY : 中国}
center: ${ CENTER : 北京}
1.2 配置文件名称命名规则

模板化后的配置文件,统一采用原来文件名加".tpl"后缀,通过该程序替换生成的配置文件将在该配置文件同级生成去掉".tpl"后缀的文件。例如,原配置文件名称为"application.yml",模板化后,文件命名为"application.yml.tpl"

mv application.yml application.yml.tpl
2. 使用方法 2.1 编译

在golang环境中执行build.sh脚本,其中会生成不通架构程序。使用中将生成的程序env2cfg放入系统环境变量中。

##编译生成Mac版本
GOOS=darwin GOARCH=amd64 go build -o env2cfg-mac env2cfg.go
##编译生成x86版本
GOOS=linux GOARCH=arm64 go build -o env2cfg-arm env2cfg.go
##编译生成arm版本
GOOS=linux GOARCH=amd64 go build -o env2cfg-x86 env2cfg.go
##编译生成windows版本
GOOS=windows GOARCH=amd64 go build -o env2cfg.exe env2cfg.go
2.2 示例文件 1)文件结构

包括程序文件"env2cfg",配置文件目录sample中,模板文件application.yml.tpl、jdbc.properties.tpl和变量文件global.env

env2cfg
sample
  ┣━application.yml.tpl
  ┣━jdbc.properties.tpl
  ┣━global.env
2)文件内容
  • 配置模板文件:application.yml.tpl
spring:
  datasource:
    druid:
      core:
        url: jdbc:postgresql://${DB_HOST:192.168.12.55}:${DB_PORT:5432}/${DB_DATABASE:db}
        username: ${DB_USERNAME:postgres}
        password: ${DB_PASSWORD:postgres}
        driver-class-name:  ${DB_DRIVER:org.postgresql.Driver}
apihost: ${CLUSTER_KUBE_VIP:192.168.4.200}:11097
country: ${ COUNTRY : 中国}
center: ${ CENTER : 北京}
  • 配置模板文件:jdbc.properties.tpl
spring.datasource.url=jdbc:postgresql://${DB_HOST:192.168.12.55}:${DB_PORT:5432}/${DB_DATABASE:db}
spring.datasource.username=${DB_USERNAME:postgres}
spring.datasource.password=${DB_PASSWORD:postgres}
spring.datasource.driver-class-name=${DB_DRIVER:org.postgresql.Driver}
  • 环境变量文件:global.env
DB_HOST=192.168.154.44
DB_PORT=5432
DB_USERNAME=root
DB_PASSWORD=123456
CLUSTER_KUBE_VIP=192.168.154.59
CLUSTER_MASTER_IP=192.168.154.59
CLUSTER_MASTER_NAME=master0
USER_ADDRESS=192.168.154.59:12021
COUNTRY=中华人民共和国
3)执行方法
用法一: env2cfg 
用法二: env2cfg  

用法一使用系统环境变量替换占位符,用法二使用指定变量文件替换占位符。
占位符替换顺序,指定变量文件 > 系统环境变量 > 默认变量值。

  • 执行示例1
env2cfg sample/application.yml.tpl

替换制定文件sample/application.yml.tpl,生成sample/application.yml文件

  • 执行示例2
env2cfg sample sample/global.env

使用制定变量文件sample/global.env,替换制定目录sample下所有".tpl"后缀文件

4)生成后文件
env2cfg
sample
  ┣━application.yml.tpl
  ┣━application.yml
  ┣━jdbc.properties.tpl
  ┣━jdbc.properties
  ┣━global.env

sample/application.yml

spring:
  datasource:
    druid:
      core:
        url: jdbc:postgresql://192.168.154.44:5432/db
        username: root
        password: 123456
        driver-class-name:  org.postgresql.Driver
apihost: 192.168.154.59:11097
country: 中华人民共和国
head: 北京

sample/jdbc.properties

spring.datasource.url=jdbc:postgresql://192.168.154.44:5432/db
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=org.postgresql.Driver
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/990120.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号