consul-template配置文件

翻译至:https://github.com/hashicorp/consul-template

Consul-Template配置文件是使用[HashiCorp Configuration Language (HCL)]编写的.这意味着```Consul Template是和JSON兼容的,查看更多信息请查看 [HCL 规范](https:#github.com/hashicorp/hcl)


consul = "127.0.0.1:8500"

#这是要连接的Consul Agent的地址.默认为127.0.0.1:8500.这是Consul的默认绑定地址和端口.不建议直接与 Consul的 Server直接进行交互,请与本地的Consul Agent进行交互.这样做是原因是本地agent可以复用与server的连接.减少HTTP的连接数.另外这个地址更好记.


token = "abcd1234"

# 这是用于连接Consul的ACL token. 如果你的集群未启用就不需要设置.这个选项也可以通过环境变量 CONSUL_TOKEN 来进行设置


reload_signal = "SIGHUP"

# 这是监听出发reload事件的信号,默认值为SIGHUP.将这个值设置为空将引起 CT ,从而不监听reload事件


dump_signal = "SIGQUIT"

# 这是监听出发core dump事件的信号,默认值为SIGQUIT.将这个值设置为空将引起 CT ,从而不监听core dump信号


kill_signal = "SIGINT"

# 这是监听出发graceful stop事件的信号,默认值为SIGINT.将这个值设置为空将引起 CT ,从而不监听graceful stop信号


retry = "10s"

# 这是连接Consul的重试时间.Consul Template是高容错的设计.这意味着,出现失败他不会退出.而按照分布式系统的惯例进行指数补偿和重试来等待集群恢复.


max_stale = "10m"

#这是允许陈旧数据的最大时间.Consul默认只有leader对请求进行相应.所有对follower的请求将被转发给leader.在有大量请求的大型集群中,这显得不够有扩展性.所以这个选项允许任何follower响应查询,只要最后复制的数据在这个范围内.数值越高,越减少集群负载,,但返回的可能是过期的数据.


log_level = "warn"

# 配置日志级别。 如果在Consul Template中发现错误,请启用debug调试日志,以便我们帮助确定问题;也可以通过命令行指定。


pid_file = "/path/to/pid"

# Consul Template进程的进程ID的PID文件的路径。 需要发送自定义信号到进程时使用。


wait = "5s:10s"

#这是一个静止定时器,他定义了在模板渲染之前等待集群达到一致状态的最小和最大时间.这对于一些变化较大的系统中比较有用,可以减少模板渲染的次数


# 这部分配置请求的基本的权限验证信息

auth {

  enabled  = true

  username = "test"

  password = "test"

}


# 这部分配置连接到Consul服务器的SSL信息.

ssl {

  enabled = true  # 使用SSL需要先打开这个开关

  verify = true   #启用ssl认证,默认设置和true,启用时它会检查全局的CA链以确认证书是否有效,如果是自签证书,需要把ssl认证禁用掉,即设置为false

  cert = "/path/to/client/cert"

  key = "/path/to/client/key"

  #用于认证的证书存放位置,如果只提供证书,需要是由证书和key转化的X509证书,如果同时指定了证书和Key,conul template会自动将其结合组成一个X509证书

  

  # This is the path to the certificate authority to use as a CA. This isuseful for self-signed certificates or for organizations using their own internal certificate authority.

  

  ca_cert = "/path/to/ca"  

  #这是证书颁发机构用作CA的路径,适用于自签名证书或使用其自身内部证书颁发机构的组织

}


# 设置连接到syslog服务器的配置,用于日志记录

syslog {

  enabled = true   # 打开开关

  facility = "LOCAL5"  # 设备名称

}


# 此段定义de-duplication模式的配置 

deduplicate {

  enabled = true

  #启用de-duplication模式.指定其它相关选项也启用de-duplication模式.

  prefix = "consul-template/dedup/"

  # 存储de-duplication模板预渲染的kv值的目录前缀

}


# 此段用于定义exec模式的配置

exec {

  command = "/usr/bin/app"

  #这是通过子进程执行的命令。每个Consul模板只能有一个命令。


  splay = "5s" #在杀死命令之前,这是一个随机的等待状态。缺省值为0(不等待),但大型群集应考虑设置splay值以防止发生数据更改时同时重新加载所有子进程。当此值设置为非零时,Consul模板将在重新加载或终止子进程之前等待一段不大于splay值随机时间。

  

  #此部分为子进程环境变量相关配置

  env {

    pristine = false   #这指定了子进程是否应该继承父进程的环境变量。默认情况下,子进程有权访问父进程的环境变量。将它设置为true时只会将`custom_env`中指定的值发送给子进程。


    custom = ["PATH=$PATH:/etc/myapp/bin"]   #传到子进程的运行时环境中的自定义环境变量。如果自定义环境变量与系统环境变量共享其名称,则自定义环境变量优先。即使指定pristine, whitelist和blacklist,此选项中的所有值都会被提供给子进程。


    whitelist = ["CONSUL_*"]   #指定要暴露给子进程的环境变量白名单。如果指定,只有那些与给定模式匹配的环境变量才会暴露给子进程。这些字符串使用Go的glob函数进行匹配,因此允许使用通配符。


    blacklist = ["VAULT_*"]       #指定要在暴露给子进程的环境变量黑名单。如果指定,任何符合给定模式的环境变量都不会暴露给子进程,即使它们已被列入白名单。此选项中的值优先于白名单中的值。这些字符串使用Go的glob函数进行匹配,因此允许使用通配符。

  }


  reload_signal = "SIGUSR1"

  #这定义了当监视模板发生更改时将发送到子进程的信号。信号只会在过程开始后才被发送,并且只有在所有相关模板已经被渲染至少一次后才会开始该过程。缺省值是“”(空或零),它告诉Consul模板重启子进程而不是发送信号。因为有些应用程序不能很好地加载配置文件

  

  kill_signal = "SIGINT"

  #这定义了当Consul模板正常关闭时发送给子进程的信号。应用程序应该开始优雅的清理。如果应用程序在`kill_timeout`之前没有终止,它将被强制终止(“kill -9”)。缺省值是“SIGTERM”。


  kill_timeout = "2s"

  #这定义了当Consul模板退出时等待子进程正常终止的时间。在此特定时间之后,子进程将被强制杀死(有效地“杀死-9”)。默认值是“30s”

}



# 这部分定义了对模板的配置,和其他配置块不同.这部分可以针对不同模板配置多次.也可以在CLI命令头发直接进行配置

template {

  source = "/path/on/disk/to/template.ctmpl"

  # 这是输入模板的配置文件路径,如果不使用contents选项的话一定要配置这一项

  

  destination = "/path/on/disk/where/template/will/render.txt"

  # 指定被渲染模板的路径,如果父目录不存在,Consul Template会自动创建,除非把create_dest_dirs设置为false.

  

  create_dest_dirs = true

  # 默认为true,当目标路径的父目录不存在时自动创建


  contents = "{{ keyOrDefault \"service/redis/maxconns@east-aws\" \"5\" }}"

  #该选项允许将模板的内容嵌入到配置文件中,而不是将“源”路径提供给模板文件。 这对于短模板很有用。 这个选项与`source`选项是互斥的。

  

  command = "restart service foo"

   # 模板被渲染时运行的命令,为可选参数。只有在生成的模板发生变化时,该命令才会运行。 该命令必须在30秒内返回(可配置),并且必须具有成功的退出代码,Consul Template不能替代进程监视或者init 系统

  

  command_timeout = "60s"

  # 这是最大的等待命令返回的时间,默认是30秒

  

  # 访问不存在的结构或映射field/key退出并报错。当访问的字段不存在时,默认打印“<no value>”。 建议将其设置为“true”

  error_on_missing_key = false

  

  perms = 0600

  # 指定被渲染文件的权限,如果没有指定,consul template会匹配这个目录下的其它文件,如果为空目录,则会将被渲染的文件权限设置为644

  

  backup = true

  # 在渲染文件前会先将原文件备份,可用于误操作的回退策略

  

  left_delimiter  = "{{"

  right_delimiter = "}}"

  # 指定模板的分隔符,默认为{{和}},但是有些模板指定其它的分隔符可能更合适,避免与被渲染的文件产生冲突


  wait = "2s:6s"

  # 指定等待新模板渲染到磁盘和触发脚本的最大和最小时间,格式为 `minimum(:maximum),以':'分隔. 如果没有指定最大值,则将其设置为最小值的4倍,这是一个带有单位后缀(“5s”)的数字时间。 没有默认值。模板的等待值比全局配置的等待时间具有更高的优先级。

}


猜你喜欢

转载自blog.51cto.com/chenql/2107961