- 环境变量替换配置文件占位符工具
- 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.tpl2. 使用方法 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.go2.2 示例文件 1)文件结构
包括程序文件"env2cfg",配置文件目录sample中,模板文件application.yml.tpl、jdbc.properties.tpl和变量文件global.env
env2cfg sample ┣━application.yml.tpl ┣━jdbc.properties.tpl ┣━global.env2)文件内容
- 配置模板文件: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



