环境变量管理
barbara的Python项目详细描述
环境变量管理
安装
$ pip install barbara
用法
yaml格式(.env.yml)
- 为您的项目创建一个.env.yml。
project:your_projectenvironment:ENVIRONMENT_NAME:developmentDATABASE_URL:template:"{user}:{password}@{host}:{port}/{db_name}"subvariables:user:rootpassword:roothost:127.0.0.1port:5432db_name:sample
- 运行barb,系统将提示您输入值
$ barb .env does not exist. Create it? [y/N]: y Creating environment: .env Skip Existing: True DATABASE_URL: user [root]: password [root]: wordpass host [127.0.0.1]: port [5432]: db_name [sample]: ENVIRONMENT_NAME [development]: Environment ready!
- 检查生成的文件,查看您的值!
$ cat .env DATABASE_URL=root:wordpass@127.0.0.1:5432/sample ENVIRONMENT_NAME=development
子变量
子变量使用以下语法工作:
VARIABLE_NAME:template:"{subvariable1}{subvariable2}"subvariables:subvariable1:default value for subvariable 1subvariable2:default value for subvariable 2
对于给定的示例,用户显示为VARIABLE_NAME作为标题,然后提示输入这两个值并提供 默认值。模板中出现的任何子变量也必须出现在子变量字典或 字符串格式化操作将失败。使用python字符串模板语法,可以使用 标准冒号语法。
高级使用(AWS SSM)
注意
必须先在aws ssm中创建值,然后才能检索它们。您还需要正确的IAM 从aws检索值的权限。假设所有值都在静止时加密。
- 使用deployments部分为项目创建.env.yml。这部分是一个声明性的继承权 覆盖。部署的根本是最一般的,因此是最低优先级的。作为参考, 路径已作为注释提供,在实践中不需要。
project:your_projectenvironment:DEBUG:1ENVIRONMENT_NAME:developmentDATABASE_URL:template:"{user}:{password}@{host}:{port}/{db_name}"subvariables:user:rootpassword:roothost:127.0.0.1port:5432db_name:sampleHOST_TYPE:localdeployments:-DEBUG# /your_project/DEBUG-staging:-DATABASE_URL# /your_project/staging/DATABASE_URL-ENVIRONMENT_NAME# /your_project/staging/ENVIRONMENT_NAME-app_server:-HOST_TYPE# /your_project/staging/app_server/HOST_TYPE-worker:-HOST_TYPE# /your_project/staging/worker/HOST_TYPE-production:-DATABASE_URL# /your_project/production/DATABASE_URL-ENVIRONMENT_NAME# /your_project/production/ENVIRONMENT_NAME-app_server:-HOST_TYPE# /your_project/production/app_server/HOST_TYPE-worker:-HOST_TYPE# /your_project/production/worker/HOST_TYPE
- 运行barb-deploy-p /your_project/staging/app_server/,将使用该搜索路径生成一个新的.env。 以确定每个变量的重写优先级。
$ barb-deploy -p /your_project/staging/app_server/ Creating environment: .env (using search_path: /your_project/staging/app_server/) Environment ready!
- 检查生成的文件,查看您的值!
$ cat .env DATABASE_URL=postgres://staging:staging@localhost:5432/staging_db DEBUG=0ENVIRONMENT_NAME=staging HOST_TYPE=app_server
传统格式(.env.template)
- 为您的项目创建一个.env.template。
DATABASE_HOST=127.0.0.1COMPLEX_KEY=[username:user]:[password:pass]@$DATABASE_HOST
- 运行barb,系统将提示您输入值
$ barb .env does not exist. Create it? [y/N]: y Creating environment: .env Skip Existing: True COMPLEX_KEY: username [user]: password [pass]: wordpass DATABASE_HOST [127.0.0.1]: Environment ready!
- 检查生成的文件,查看您的值!
$ cat .env COMPLEX_KEY=user:wordpass@$DATABASE_HOSTDATABASE_HOST=127.0.0.1
legacy子变量通过在.env模板中使用[variable_name:variable_default]语法工作。你 可以在一行中使用任意多个,但不能嵌套它们。
为什么barbara?
因为Barbara Liskov创建了Liskov Substitution Principle,并且是 计算机科学和软件工程。芭芭拉是牛顿的隐喻巨人之一,它使我们 看得更远。我谦卑地将我的项目奉献给她和她的贡献,并将此项目奉献给 拥有适合这种奉献精神的许可证的消费者。