2017-06-09 9 views
1

OpenLDAP用のサービスファイルを作成しようとしています。私が今までに持っているものは次の通りです:ファイルの存在に基づいてsystemdサービスの開始パラメータを変更する方法は?

[Unit] 
Description=OpenLDAP server daemon 
After=network.target 

[Service] 
Type=forking 
PIDFile=/var/run/slapd/slapd.pid 
ExecStartPre=-/bin/mkdir /var/run/slapd 
ExecStartPre=/bin/chown openldap:openldap /var/run/slapd 
ExecStart=/srv/openldap-latest/lib/slapd -h "ldap:/// ldaps:/// ldapi:///" -u openldap -g openldap -F /etc/ldap/slapd.d 

[Install] 
WantedBy=multi-user.target 

問題は "-F /etc/ldap/slapd.d"です。 OpenLDAPが最初に設定されると、このディレクトリは存在しないので、代わりに "-f /etc/ldap/slapd.conf"を指定する必要があります。しかし、私はsystemdでこれを行う方法を見ることができません。

1つのオプションは、slapd.dが存在する場合は1が起動し、slapd.dが存在しない場合は1が起動しますが、管理者が取得しようとしている場合と同じようにサービスを呼び出す必要があります非常に混乱しているので、私はその考えがうまくいくとは思わない。

どうすればこの問題を解決できますか?

ExecStartPre=-/bin/mkdir /etc/ldap/slapd.d 

:どのような追加について

答えて

0

+0

'mkdir -p'おそらくディレクトリが存在していても失敗しないかもしれません...もし' -'が同じことを成し遂げたら、おそらく... – twalberg

+0

@twalberg 'man systemd.service'が確認します先頭のダッシュは 'systemd'にコマンドの失敗の可能性を無視するよう指示します。 –

+0

私は提案を感謝しますが、残念ながらOpenLDAPにはそのディレクトリ内に何かが必要です。最初に設定ファイルでOpenLDAPを実行してから、ファイルをディレクトリ+コンテンツに変換してOpenLDAPを実行する必要があります。 –

関連する問題