【问题标题】:Issues configuring consul with Chef execute resource使用 Chef 执行资源配置领事的问题
【发布时间】:2019-01-01 18:55:41
【问题描述】:

我有一本食谱,它将完全配置客户端节点以使用 consul,但将客户端加入集群除外。以下命令失败:

execute "join consul" do
  command "/usr/local/bin/consul join #{consul_server}"
  action :nothing
end

在实例本身上运行我认为相同的命令,但是在说明书失败后可以工作:

/usr/local/bin/consul join server-001.flapjacks.com

服务是通过 systemd 脚本设置的,该脚本将配置设置为:/etc/consul.d

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl

[Service]
User=root
Group=root
ExecStart=/usr/local/bin/consul agent -config-dir /etc/consul.d
ExecReload=/usr/local/bin/consul reload
KillMode=process
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

检查后服务运行正常。

执行资源由模板资源触发:

template '/etc/consul.d/webserver.json' do
  source 'webserver.json.erb'
  owner 'root'
  group 'root'
  mode '0644'
  action :create
  notifies :restart, resources(:service => "consul")
  notifies :run, "execute[join consul]"
end

厨师运行输出错误:

STDERR: Error joining address 'server-001.flapjacks.com': Put http://127.0.0.1:8500/v1/agent/join/server-001.flapjacks.com: dial tcp 127.0.0.1:8500: connect: connection refused
       Failed to join any nodes.

关于为什么这不起作用的任何想法?

【问题讨论】:

  • 我已经通过在 consul.hcl 配置文件中使用“start_join”解决了这个问题。但是它仍然没有解释为什么我不能在 chef 中运行这个命令。

标签: chef-infra consul


【解决方案1】:

这表明节点上的 consul 本身没有运行。我认为这可能是因为您确实在模板更改时通知领事重新启动并且两个通知 - 领事重启 - 加入执行 并行运行,因此连接命令无法抱怨在 localhost 本身上无法访问 consul。

参考:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多