用于管理从各种配置源生成服务器配置的服务
configbutler的Python项目详细描述
这个工具是一个可扩展的框架,它提供了管理 服务器配置文件由 服务器环境。
现代服务器解决方案包含许多组件,我们 目前的建设和管理方式非常单一。此工具旨在 一种依赖关系中服务配置的逆耦合 注射工作流程。
配置
这个工具对配置有很强的约定性,但是 旨在支持扩展,这是实现集成和 针对广泛的解决方案需求进行定制。
它的核心是/etc/configbutler文件夹,其中包含 将框架驱动到的服务配置定义数 支持on-boot配置服务。
这些服务文件按字母顺序枚举,以提供 控制顺序。设计理论是不同的服务可以 将不同的配置集组合到单个服务器中,允许 值和配置将在运行时解析。
这些服务文件可以包含从单个 属性集。
使用jinja对配置文件的输出进行模板化,使用 用于流量控制和更换的参数图。
属性通过许多可扩展的源来解析,例如 作为:
- 本地主机信息
- AWS实例标记
- AWS实例元数据
- AWS SSM参数存储
003-example.config
format: 1.0 properties: HOST_NAME: host|hostname HOST_MEMORY: host|total_memory ENVIRONMENT: aws|tags|aws:cloudformation:stack-name appd_enabled: aws|paramstore|${ENVIRONMENT}.appd_enabled application_name: string|sample-app controller_licence: aws|paramstore|${ENVIRONMENT}/appd/licence controller_host: aws|paramstore|${ENVIRONMENT}/appd/controller controller_url: string|/ controller_port: string|1234 use_ssl: string|true jvm_memory: math|multiply|${HOST_MEMORY}|0.8 files: - mode: jinja2 src: /tmp/appdynamics.conf.j2 dest: /opt/appd/config/appdynamics.conf - mode: jinja2 src: /tmp/setenv.sh.j2 dest: /usr/local/tomcat7/conf/setenv.sh
和配置模板
/tmp/setenv.sh.j2
export JAVA_OPTS="-Xmx {{ jvm_memory }}" {% if appd_enabled %} export JAVA_OPTS="${JAVA_OPTS} -javaagent:/opt/appd/appd.jar" {% endif %}
/tmp/appdynamics.conf.j2
<controller-info> <controller-host>{{ controller_host }}.{{ controller_url }}</controller-host> <controller-port>{{ controller_port }}</controller-port> <controller-ssl-enabled>{{ use_ssl }}</controller-ssl-enabled> <enable-orchestration>false</enable-orchestration> <unique-host-id></unique-host-id> <account-access-key>{{ controller_licence }} </account-access-key> <account-name>{{ controller_host }}</account-name> <machine-path></machine-path> <application-name>{{ application_name }}</application-name> <tier-name>{{ tier_name }}</tier-name> <node-name>{{ ansible_ec2_hostname }}</node-name> </controller-info>
属性函数
数学函数
用于操纵图形以执行基本操作的函数 计算
- add-将两个参数相加(例如。 math|add|1|${CLUSTER_SIZE})
- subtract-从第一个参数中减去第二个参数(例如。 math|subtract|15|${CLUSTER_SIZE})
- multiply-将参数相乘(例如。 math|multiply|${TOTAL_MEMORY}|0.8)
- divide-将第一个参数除以第二个参数(例如。 math|divide|${TOTAL_MEMORY}|1024)
示例用法
properties: HOST_MEMORY: host|total_memory sub_memory: math|multiply|${HOST_MEMORY}|0.8 jvm_memory: math|divide|${sub_memory}|1024
地图查找
Un supported (At the moment!)
条件
Un supported (At the moment!)
属性范围
宿主
- hostname-本地主机名(例如host|hostname)
- fqdn-本地完全限定域名(例如host|fqdn)
- ipaddress-eth0的IP地址(例如host|ipaddress)
- cpu_count-可用CPU内核的数量(例如 host|cpu_count)
- total_memory-可用的总内存(例如 host|total_memory)
示例用法
properties: HOSTNAME: host|hostname
aws
从AWS作用域服务解析的一组属性
元数据
- account_id
- ami_id
- ami_launch_index
- availability_zone
- iam_info
- instance_action
- instance_id
- instance_profile_arn
- instance_profile_id
- instance_type
- private_hostname
- private_ipv4
- public_hostname
- public_ipv4
- security_groups
- region
示例用法
properties: aws_account_id: aws|metadata|account_id aws_region: aws|metadata|region instance_type: aws|metadata|instance_type internal_ip: aws|metadata|private_ipv4
参数存储
从参数存储中查找的值,其中键可以由其他解析变量组成。
示例用法
properties: ENVIRONMENT: string|test application: string|garden splunk_password: aws|paramstore|/Splunk/SplunkPassword controller_licence: aws|paramstore|/${application}/${ENVIRONMENT}/AppD/account-access-key controller_host: aws|paramstore|/${application}/${ENVIRONMENT}/AppD/controller