
Hachicorp Vaultをインストールし、TLS設定を設定しました。現在の目標は、vault.service
TLS証明書が更新されたときに自動的に再ロードすることです。
公式文書状態:
tls_key_file (string: , reloads-on-SIGHUP) – 証明書秘密鍵のパスを指定します。 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の回答後、設定を再調整しました。
したがって、TLS 証明書が更新されると、vault-agent.service
信号は Vault に送信されます。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)
この問題についてご意見をお持ちですか?
答え1
いいえ、これはvault
Golandのプロセスが信号をキャプチャするようにコーディングされており、その1つが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 }