我已经安装了Hachicorp并设置了TLS配置。我现在的目标是让vault.service在更新TLS证书的情况下自动重新加载。
官方的文档说:
tls_key_file (string:,reloads on)-指定证书私钥的路径。它需要一个PEM编码的文件。如果密钥文件是加密的,将提示您在服务器启动时输入密码。当使用SIGHUP重新加载配置时,密码必须在密钥文件之间保持不变。在SIGHUP上,Vault启动时设置的路径将用于重新加载证书;在Vault运行时修改此值对SIGHUP没有任何影响。
这是否意味着当对tls_key_file进行更改时,服务会重新加载自己?还是我应该加入额外的逻辑?
vault.service
[Unit]
After=network.service hostname.service consul-init.service consul.service
Description="Hashicorp Vault - A tool for managing secrets"
Documentation=https://www.vaultproject.io/docs/
StartLimitInterval=200
StartLimitBurst=5
[Service]
User=vault
Group=vault
PermissionsStartOnly=true
ExecStart=/usr/bin/vault server -config="{{vault_server_config_file}}"
ExecReload=/bin/kill -HUP $MAINPID
CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK
LimitNOFILE=65536
LimitMEMLOCK=infinity
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target<#>更新
在@Jiri B回答之后,我重新调整了我的设置。
因此,现在vault-agent.service在更新TLS证书时将SIGHUP信号发送到保险库。
template {
source = "{{vault_template_dir}}/ca.crt.tpl"
destination = "{{vault_tls_dir}}/ca.crt"
command = "pkill --signal SIGHUP vault"
}和vault-agent.service
[Unit]
After=network.service hostname.service
StartLimitInterval=600
StartLimitBurst=5
[Service]
PIDFile=/run/vault-agent.pid
User=vault
Group=vault
ExecStart=/usr/bin/vault agent -config="{{vault_agent_config_file}}"
ExecReload=/bin/kill -HUP $MAINPID
CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK
NoNewPrivileges=yes
LimitNOFILE=65536
LimitMEMLOCK=infinity
Restart=always
RestartSec=30
StartLimitInterval=600
[Install]
WantedBy=multi-user.target这很好,而且vault.service正在重新加载。然而,另一个问题出现了。vault.service和vault-agent.service都有相同的用户和组,当证书重新绑定时,应该重新加载它们。似乎保险库特工不是为了捕捉SIGHUB信号而编码的。因此,当这个脚本运行command = "pkill --signal SIGHUP vault"时,vault.service将重新加载并运行。但是,vault-agent.service无法启动。
● vault-agent.service - "Hashicorp Vault - A tool for managing secrets"
Loaded: loaded (/etc/systemd/system/vault-agent.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) since Tue 2021-04-06 12:17:26 UTC; 6s ago
Docs: https://www.vaultproject.io/docs/
Process: 13482 ExecStart=/usr/bin/vault agent -config=/etc/vault.d/agent.hcl (code=killed, signal=HUP)
Main PID: 13482 (code=killed, signal=HUP)对这个问题有什么想法吗?
发布于 2021-04-06 07:02:44
不,这意味着vault进程是用Goland编码的,它能够捕获信号,其中一个信号可以是SIGHUP。当SIGHUP被捕获时,进程将在内部重新加载自己(即。它不会从头开始重新启动它,它只会根据已经存在的参数重新加载自己)。
顺便说一下,您的代码中有一个错误,s/MAINIP/MAINPID。
请参阅https://en.wikipedia.org/wiki/Signal_(IPC)
看看在sshd.service中是如何做到的。
systemctl show -p ExecReload -l --no-pager sshd.service
ExecReload={ path=/bin/kill ; argv[]=/bin/kill -HUP $MAINPID ; ignore_errors=no ; start_time=[n/a] ; stop_time=[n/a] ; pid=0 ; code=(null) ; status=0/0 }https://unix.stackexchange.com/questions/643693
复制相似问题