SIGHUPを使用してサービスをリロードする方法は?

SIGHUPを使用してサービスをリロードする方法は?

Hachicorp Vaultをインストールし、TLS設定を設定しました。現在の目標は、vault.serviceTLS証明書が更新されたときに自動的に再ロードすることです。

公式文書状態:

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

いいえ、これはvaultGolandのプロセスが信号をキャプチャするようにコーディングされており、その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 }

おすすめ記事