标签: consul-template

无法使用领事模板读取服务元

我有一个在 Consul 注册的测试服务,其服务定义如下:

{
  "name": "web",
  "tags": ["web1"],
  "address": "example.com",
  "meta": {
    "meta": "cluster",
    "acl": "host_test",
    "cluster": "test_cluster"
  },
  "port": 8000
}
Run Code Online (Sandbox Code Playgroud)

我想使用 consul-template 将该信息加载到 HAProxy 配置中。我可以按照文档中的说明获取地址和端口:

{{ range service "web" }}{{if in .Tags "web1"}}
    server {{.Node}} {{ .Address }}:{{.Port}} cookie A check
    {{ end }}{{end}}
Run Code Online (Sandbox Code Playgroud)

但我似乎无法获得元信息。我想我可以在服务范围内使用这样的东西来访问它:

 {{range .Meta}}
  {{.}}{{end}}
Run Code Online (Sandbox Code Playgroud)

知道如何从元中获取 acl 或集群吗?

consul consul-template

5
推荐指数
1
解决办法
1123
查看次数

consul使用HTTP api批处理KV对HTTP post(通过HTTP API导入巨大的json)

我在 json 中有应用程序配置,每个应用程序最多有 80 个键/值对,这些键/值对将存储在 Consul KV Store 中。一般来说,它们是java键值属性,我有一个简单的shell脚本,它对值进行编码并将其转换为与consul import命令兼容的导入。我正在尝试为船上的新应用程序(开始使用 consul 进行 KV 存储的应用程序)自动执行 consul KV 导入。到目前为止,我们正在手动运行consul kv import @app_config.json,但是,我想调用 HTTP api,而不是通过 consul KV import 进行导入。请问有什么建议吗?

json 格式的应用程序配置示例。

[
        {
                "key": "asia",
                "flags": 0,
                "value": "NDQzNg=="
        },
        {
                "key": "asia/india",
                "flags": 0,
                "value": "MTMyNA=="
        },
        {
                "key": "europe",
                "flags": 0,
                "value": "NzQzLjE="
        },
        {
                "key": "europe/france",
                "flags": 0,
                "value": "NjYuOQ=="
        },
        {
                "key": "europe/germany",
                "flags": 0,
                "value": "ODIuNjc="
        }
]
Run Code Online (Sandbox Code Playgroud)

uri key-value-store consul consul-template consul-kv

5
推荐指数
1
解决办法
806
查看次数

在 consul-template 中的循环中覆盖变量

我在 consul-template 中使用以下模板:

{{ range services }}
  {{ $server_name := .Name | replaceAll "_" "." }}
  {{ range .Tags }}
    {{ if . | regexMatch "server_name=" }}
      # found matching server_name in {{ . }}
      {{ $server_name := . | regexReplaceAll ".*=" "" }}
    {{ end }}
  {{ end }}
  # server_name = {{ $server_name }}
        acl host_{{ .Name }} hdr(host) -i {{ $server_name }}
        use_backend {{ .Name }}_backend if host_{{ .Name }}
{{ end }}
Run Code Online (Sandbox Code Playgroud)

产生

  # found matching …
Run Code Online (Sandbox Code Playgroud)

templates go consul consul-template

3
推荐指数
1
解决办法
2590
查看次数

您将如何使用 Hashicorp 的 Nomad '模板节' 通过 Nomad 作业文件生成 nginx 配置文件?

假设 Consul 和 Nomad 已配置为在资源池上运行。您将如何仅出于生成 Nginx 'default.conf' 文件的目的而呈现模板文件。

以下面的模板节配置为例;Nomad 无法生成 default.conf '文件';而是创建了一个 default.conf '目录'。

template {
    source        = "/path/to/tmp.ctmpl"
    destination   = "folder/default.conf"
    change_mode   = "restart"
    change_signal = "SIGINT"
}
Run Code Online (Sandbox Code Playgroud)

我要么错过了一个技巧,要么误解了“模板节”的功能。

模板生成目录而不是文件的问题之一是,您无法将目录挂载到配置文件路径。因此,运行使用 Nomad docker 驱动程序和示例“docker”卷配置的任务会导致错误。

volumes = ["/path/to/job/folder/default.conf:/etc/nginx/conf.d/default.conf" ]
Run Code Online (Sandbox Code Playgroud)

还是不可能让模板节生成配置文件?

*Ps 使用 Nomad 构建 0.5.5 **

nginx docker consul consul-template nomad

3
推荐指数
1
解决办法
7245
查看次数

领事模板 - “如果服务存在”条件?

我刚刚继承了一个 Nginx 代理/应用程序服务器设置,它使用 Consul 和 Consul Template 进行服务发现和注册。Nginx 代理有一个配置文件,其中包含如下条目,用于注册下游应用程序服务器:

<snip>

upstream appservers {
  {{ range service "my-app-servers" }}
     server {{ .Address }}.{{ .Port }};
  {{ end }}
}

<snip>
Run Code Online (Sandbox Code Playgroud)

consul-template在后台运行以捕获任何更新my-app-servers,适当更新nginx.conf文件,然后重新加载 nginx 配置。这一切都很有效,我们可以根据需要在组合中添加和删除应用程序服务器。也就是说,如果存在没有可用应用程序服务器的情况,我们最终会得到一个空upstream块,从而导致 nginx 重新加载失败。

consul-template 有没有办法拥有"if service my-app-servers exists, then..."逻辑"if not, then..."?我希望能够让我的nginx.conf文件具有针对上游服务器存在的情况的一种配置,以及另一种在上游服务器不存在时显示错误页面的应急设置。我仍在了解 consul-template 的最新进展,并且还没有看到任何显示此类逻辑语法的示例。有什么帮助吗?

nginx consul consul-template nginx-reverse-proxy

3
推荐指数
1
解决办法
1460
查看次数

领事注销'失败'服务

我有领事在Mesos上运行的Consul v0.5.2版本和服务上运行.服务从1台服务器转移到另一台服务器.

是否有办法取消注册处于"失败"状态的领事服务?我可以使用此卷曲获取处于失败状态的服务列表

curl http://localhost:8500/v1/health/state/critical
Run Code Online (Sandbox Code Playgroud)

我们看到的问题是在consul UI中的一段时间内我们有过时的数据并使整个UI无法使用

mesos mesosphere consul microservices consul-template

2
推荐指数
1
解决办法
1756
查看次数

领事模板 if else 条件

我有以下领事模板。

{{ range service "mysql_slave.mysql" "any" }}
host_name                      {{.Node}}
command                        check_nrpe!check_procs_1
{{end}}
Run Code Online (Sandbox Code Playgroud)

我想添加如果我的主机名匹配“database-1”然后命令“check_procs_1”和其他命令“check_procs_2”

输出

host_name                      node_server
command                        check_nrpe!check_procs_2

host_name                      database-1
command                        check_nrpe!check_procs_1

host_name                      webserver
command                        check_nrpe!check_procs_2
Run Code Online (Sandbox Code Playgroud)

if-statement puppet consul consul-template

2
推荐指数
1
解决办法
6287
查看次数

如何在 consul-template 范围构造中使用变量?

我们的应用程序有多个环境,我尝试使用通用 consul 模板和环境变量来为不同环境创建 haproxy 配置。这就是我正在尝试做的事情:

{{$environment := "yellow" }} .... 平衡leastconn {{range service "myservice-{{$env}}"}} ....

我似乎找不到在这个范围内使用这个变量的方法。有办法让它发挥作用吗?

谢谢!

consul-template

2
推荐指数
1
解决办法
3390
查看次数

Consul-Template:循环 ak/v 对并在另一个键中使用结果

给定 Consul 密钥:

flyway/tweedle/server: postgres
flyway/beetle/server: postgres
flyway/battle/server: mysql

service/tweedle/repo: fox/tweedle.git
service/beetle/repo: fox/beetle.git
service/battle/repo: fox/battle.git
Run Code Online (Sandbox Code Playgroud)

我试图循环遍历顶部集合,使用键查找底部集合中的值,使用以下代码(不起作用):

{

  {{ range $key, $pairs :=tree "flyway/" | explode }}
        $key: {{ key "service/{{$key}}/repo" }}
  {{ end }}

}
Run Code Online (Sandbox Code Playgroud)

要得到:

tweedle: fox/tweedle.git
beetle: fox/beetle.git
battle: fox/battle.git
Run Code Online (Sandbox Code Playgroud)

consul-template

2
推荐指数
1
解决办法
5447
查看次数