集中配置管理工具。

configirl的Python项目详细描述


欢迎使用configirl文档
  • 什么是configirl
  • configirl解决什么问题
  • 快速启动
  • 附加功能
  • =HRFF="使用AWS无服务器基础设施作为代码的用例Java JavaApp项目"ID="ID6"Re="NoFoLoLy">用例-Java Web应用程序与AWS、Serverless、基础设施作为代码
  • 安装

什么是配置 configirl

configirl 是一个 单一脚本、纯python、无依赖项、python2.7、3.4+兼容、随时可用的插件库,可帮助您管理复杂的配置值逻辑。此DevOps解决方案适用于 任何项目、任何编程语言

fromconfigirlimportConfigClass,Constant,DeriableclassConfig(object):PROJECT_NAME=Constant()PROJECT_NAME_SLUG=Deriable()@PROJECT_NAME_SLUG.getterdefget_project_name_slug(self):returnself.PROJECT_NAME.get_value().replace("_","-")config=Config(PROJECT_NAME="my_project")

配置解决什么问题

devops工程师每天都要处理大量的配置和参数。有些配置值只是一个常量值,比如整数和字符串。某些配置值可以从其他配置值派生,有时事件需要上下文。

社区中提供了许多DevOps工具,如:

  • 命令行工具的shell脚本,自动化
  • Jenkins Groovy for CI/CD
  • 基础设施云计算代码
  • 作为代码的基础设施地形
  • <

他们都使用不同的语言和语法。在不同的工具中管理配置值的方法差别很大!如果必须管理配置值列表,并且在同一项目中使用多个devops工具。让这些工具互相交谈根本不容易。在某些工具中管理配置值可能非常困难(比如cloudformation)。

configirl 提供了一种以优雅的方式管理配置值的复杂逻辑的解决方案。由于python易于学习,而且是功能齐全的编程语言,因此您在简单性和灵活性之间取得了完美的平衡 。要与任何devops工具集成,只需引用最终配置json文件中的值即可。

快速启动
  1. 将configirl.\uu init.py复制到devops工作区目录,并将其重命名为configirl.py。那就是F或 准备好入住
  2. 创建一个配置raw.json文件,放置以下内容:
{"PROJECT_NAME":"my_project","STAGE":"dev"}
  1. 创建一个 config.py 文件,放入以下内容。因为它是python2.7、3.4+兼容的纯python,没有依赖项,所以它在任何地方都可以工作。
fromconfigirlimportConfigClass,Constant,DerivableclassConfig(object):CONFIG_DIR="your-devops-workspace-dir"PROJECT_NAME=Constant()PROJECT_NAME_SLUG=Derivable()@PROJECT_NAME_SLUG.getterdefget_project_name_slug(self):returnself.PROJECT_NAME.get_value().replace("_","-")@PROJECT_NAME_SLUG.validatordefcheck_project_name_slug(self,value):if"_"invalue:raiseValueError("you can't use `_` in slugifie name!")STAGE=Constant()ENVIRONMENT_NAME=Derivable()@PROJECT_NAME_SLUG.getterdefget_environment_name(self):return"{}-{}".format(self.PROJECT_NAME_SLUG.get_value(),self.STAGE.get_value(),)config=Config()config.update_from_raw_json_file()config.dump_shell_script_json_config_file()config.dump_cloudformation_json_config_file()# you can call more custom dump method here# depends on what other devops tools you are using
  1. 每次调用 python config.py 时,都会解析 config raw.json 中的基本真值配置值。还有两个shell script.json的config final,将创建cloudformation.json的config final。然后,您可以只引用来自thos xxx final xxx.json 文件的值。
// content of config-final-for-shell-script.json
{"PROJECT_NAME":"my_project","PROJECT_NAME_SLUG":"my-project","STAGE":"dev","ENVIRONMENT_NAME":"my-project-dev"}
// content of config-final-for-cloudformation.json
{"ProjectName":"my_project","ProjectNameSlug":"my-project","Stage":"dev","EnvironmentName":"my-project-dev"}

附加功能
  1. 您可以自定义验证器。
fromconfigirlimportConfigClass,Constant,DerivableclassConfig(object):PROJECT_NAME=Constant()PROJECT_NAME_SLUG=Derivable()@PROJECT_NAME_SLUG.getterdefget_project_name_slug(self):returnself.PROJECT_NAME.get_value().replace("_","-")@PROJECT_NAME_SLUG.validatordefcheck_project_name_slug(self,value):if"_"invalue:raiseValueError("you can't use `_` in slugifie name!")
  1. 您可以继承您的配置类。
fromconfigirlimportConfigClass,Constant,DerivableclassConfig1(object):PROJECT_NAME=Constant()classConfig2(Config1):PROJECT_NAME_SLUG=Derivable()@PROJECT_NAME_SLUG.getterdefget_project_name_slug(self):returnself.PROJECT_NAME.get_value().replace("_","-")@PROJECT_NAME_SLUG.validatordefcheck_project_name_slug(self,value):if"_"invalue:raiseValueError("you can't use `_` in slugifie name!")classConfig(Config2):CONFIG_DIR="your-devops-workspace-dir"config=Config()...dowhateveryyouneed

< DIVID="使用AWS无服务器基础设施作为代码的用例Java Web应用程序">

< HeRF= ="{ID6"Re="NoFoLLoW">用例-Java Web应用程序与AWS、Serverless、基础结构作为代码

在这个例子中,我们设计了一个复杂的Web应用程序的DeVoP解决方案,应用程序逻辑写在 ,应用程序代码通过< HRFF="HTTPS://AWS.MAXON.COM/CyrdFultIs/"Re="NoFoLoLo>"CyrdFO部署到Amazon Web服务。信息,许多微服务通过无服务器框架部署到aws lambda和aws apigateway上,并使用实现测试、构建和部署的自动化。

假设您的 项目名 mywebapp ,并且它有多个部署阶段 dev test prod ,换句话说,它将部署到三个 环境中。环境名称< TT> < StaseCopy="Prime> MyWebAPP DEV/Test/PROD/SPAN>/TT>将被用作前缀名称,几乎在Java代码、CyrdFug代码、CICD代码中无处不在。并且您不想在Java代码、CyrdCube代码、CICD代码、

中管理配置值< /强>,如 项目名称> /TT>和 阶段

如果不想在下面的指令中手动创建devops脚本,只需从https://github.com/machu-gwu/configirl-project/tree/master/devops-example" rel="nofollow">https://github.c复制整个devops示例目录om/machu gwu/configirl project/tree/master/devops示例到本地计算机。

<H4>1。集中配置定义

使用configirl 最简单的方法是将configirl.\uu init\uuuu.py 文件复制到devops工作区目录,并将其重命名为configirl.py 。它是 准备好的插件 并且没有依赖关系,它运行任何Mac或Linux机器。

在configirl.py旁边创建一个configirl.py文件,它是管理配置逻辑的集中位置,将下面的代码放入configirl.py中,它定义了两个主要的常量变量project-name和stage,以及两个派生变量project-name。g 环境名称

# -*- coding: utf-8 -*-# content of config.pyimportosfromconfigirlimportConfigClass,Constant,DerivableclassConfig(ConfigClass):CONFIG_DIR=os.path.dirname(__file__)PROJECT_NAME=Constant()# example "MyWebApp"PROJECT_NAME_SLUG=Derivable()@PROJECT_NAME_SLUG.getterdefget_PROJECT_NAME_SLUG(self):returnself.PROJECT_NAME.get_value().replace("_","-")@PROJECT_NAME_SLUG.validatordefcheck_PROJECT_NAME_SLUG(self,value):if"_"invalue:raiseValueError("you can't use `_` in slugifie name!")STAGE=Constant()# example "dev"ENVIRONMENT_NAME=Derivable()@ENVIRONMENT_NAME.getterdefget_ENVIRONMENT_NAME(self):return"{}-{}".format(self.PROJECT_NAME_SLUG.get_value(),self.STAGE.get_value(),)APP_PUBLIC_URL=Derivable()@APP_PUBLIC_URL.getter

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java附加两个数组   java如何在Extjs的不同页面中使用相同的存储   java Jung,大顶点的布局重叠,图形出现在奇怪的位置   java如何在Android中通过画布绘制圆?   java验证库设计模式选择   java研磨机未知标记“timedTests”   java Android领域子类实例方法   java使用resteasy/jaxrs从请求负载接收两种类型的数据   缓冲策略Java缓冲策略有时不能正确绘制   java跟踪棋子   密度无关像素如何在java中锐化图像缩略图?   java如何在MongoDB更新查询中编写(或)更新   java A*寻路游戏系统退出问题   java在安卓中读取xml的最佳方式是什么?   通过反射调用的方法的java抑制警告   安卓 java。语言错误:信号11(SIGSEGV),代码10(?),故障地址006e006f   java lombok 1.18.2使用DexBuilderForDebug抛出TransformClasses   java JOptionPane CD对话框按钮?   java只返回json中的一些值,而不是完整实体对象   java包不存在错误,请稍后重试