hashicorp / terraform-aws-consul

A Terraform Module for how to run Consul on AWS using Terraform and Packer
Apache License 2.0
401 stars 488 forks source link

systemd reload not working #250

Open mr-miles opened 2 years ago

mr-miles commented 2 years ago

Describe the bug The "reload" operation set up for systemd by run_consul does not work https://github.com/hashicorp/terraform-aws-consul/blob/master/modules/run-consul/run-consul#L376

As set up, the reload operation called here cannot succeed unless it has access to the full set of environment variables including a valid acl token. If any items are missing there will be an error.

Log file entries

Running systemctl restart consul.service fails with the following entries:

Jun 27 19:35:42 ip-10-142-24-123 systemd[1]: Reloading "HashiCorp Consul - A service mesh solution".
Jun 27 19:35:47 ip-10-142-24-123 consul[2511144]: Error reloading: Put "http://127.0.0.1:8500/v1/agent/reload": dial tcp 127.0.0.1:8500: connect: connection refused
Jun 27 19:35:47 ip-10-142-24-123 systemd[1]: consul.service: Control process exited, code=exited, status=1/FAILURE
Jun 27 19:35:47 ip-10-142-24-123 systemd[1]: Reload failed for "HashiCorp Consul - A service mesh solution".

Suggested fix Systemd can send a signal to the process which causes it to reload The unit config looks like this (with escaping so it pastes directly into run-consul L376)

ExecReload=/bin/kill -HUP \$MAINPID

First question was - has this been considered already? It works fine for me but maybe there was a reason for using the consul binary directly?