用于管理从各种配置源生成服务器配置的服务

configbutler的Python项目详细描述


Travis build badgeCoveralls build badgePyPI version badge

这个工具是一个可扩展的框架,它提供了管理 服务器配置文件由 服务器环境。

现代服务器解决方案包含许多组件,我们 目前的建设和管理方式非常单一。此工具旨在 一种依赖关系中服务配置的逆耦合 注射工作流程。

配置

这个工具对配置有很强的约定性,但是 旨在支持扩展,这是实现集成和 针对广泛的解决方案需求进行定制。

它的核心是/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

标记

标记值是对当前主机标记的查找。

例如,云信息标签

  • aws:cloudformation:logical-id
  • aws:cloudformation:stack-id
  • aws:cloudformation:stack-name

示例用法

properties:
    stack_name: aws|tags|aws:cloudformation:stack-name
    monitoring_tags: aws|tags|monitoring

在一些地方,已经发现当服务器最初启动时标签是不可解析的。 如果当前主机(但在配置中要求)没有返回标记,configbutler假定尚未设置标记,将等待并重试标记查找。

这个查找将发生5次,每次都会使请求之间等待的时间增加一倍。

ERROR:configbutler:No AWS::tag values found, waiting 1sec to retry.
ERROR:configbutler:No AWS::tag values found, waiting 2sec to retry.
ERROR:configbutler:No AWS::tag values found, waiting 4sec to retry.
ERROR:configbutler:No AWS::tag values found, waiting 8sec to retry.
ERROR:configbutler:No AWS::tag values found, waiting 16sec to retry.
ERROR:configbutler:No AWS::tag values found, continuing with no tags.

如果最终在5之后没有找到标签尝试,configbutler将放弃并返回None以进行任何其他标记查找。

参数存储

从参数存储中查找的值,其中键可以由其他解析变量组成。

示例用法

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

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

推荐PyPI第三方库


热门话题
java连接在一个屏幕上成功下载,在第二个屏幕上用几乎相同的代码获得错误   java调用super。超级的方法,跳过超级。方法   使用Web服务连接到sharepoint 2013的Java应用程序   java我无法正确呈现editText   httpurlconnection如何在java中检查url连接状态   java Spring Security可以为同一用户接受多个密码吗?   java如何在PreparedStatement中使用自动生成的@Id?   java每个数组表示一个位模式   java我不确定如何记录鼠标在某个区域被点击的次数   spring如何解决:java。lang.NoSuchMethodError:javax。坚持不懈实体管理器。createStoredProcedureQuery(Ljava/lang/String;)   java如何为blackberry中listfield项内的不同字段触发事件   安卓使用Proguard混淆java代码   java在grails 2中与多个数据源有一个和一个域关联。十、   java在尝试在单击按钮时返回combobox值时一直出错   java我可以在setter中使用@Resource注释而不是字段吗?   java Eclipse调试步进不工作   java比较相同对象的两个表并选择不同的表