他の環境変数/差分パラメータを使用してsystemctlサービスを開始するには?

他の環境変数/差分パラメータを使用してsystemctlサービスを開始するには?

次のサービス定義があるとします。

[Unit]
Description=ES log capture
After=network.target
StartLimitIntervalSec=0

[Service]
Environment=emit_only_json=yes
Environment=ec2_logging_machine_ip=ec2-18-xxx-66-xxx.us-west-2.compute.amazonaws.com
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/home/ubuntu/repos/es-app/syslog-exec.sh

[Install]
WantedBy=multi-user.target

ec2_logging_machine_ipただし、サービスが実行されているコンピュータによって環境変数が変わります。サービスが実行されるbashスクリプトは次のとおりです。

#!/usr/bin/env bash

set -eo pipefail
cd "$(dirname "$BASH_SOURCE")"

export interos_emit_only_json='nope'
export interos_ec2_logging_machine_ip='ec2-18-xxx-66-xxx.us-west-2.compute.amazonaws.com'

tail -n 100 -f '/var/log/syslog' | node . &> /dev/null

そこに環境変数を入れることもできます。おそらく答えは.bashrc機械を変えるのでしょうか?他の潜在的な解決策がありますか?

ベストアンサー1

~/.bashrc を変更してから ExecStart スクリプトからインポートするのはうまくいきませんでしたが、次のように動作しました。

[Service]
EnvironmentFile=/home/ubuntu/myenvs/es-service.env

おすすめ記事