Hello!
[email protected] (Jordan Geoghegan), 2023.04.20 (Thu) 23:08 (CEST):
> Hello,
>
> tl;dr: Is there any way to pass an environment variable to a daemon started
> with rc.d?
There's a way via login.conf(.d), here's an example I use:
sogod:\
:openfiles-cur=1024:\
:openfiles-max=2048:\
:setenv=GNUSTEP_STRING_ENCODING=NSUTF8StringEncoding:\
:tc=daemon:
Marcus
> A bit of context for those interested:
>
> I'm trying to run Apache Airflow from an rc.d script so I can make use of
> rcctl and other niceties. My rc.d script is included below.
>
> The problem I'm facing is that it seems that Airflow looks for various
> environment variables such as $HOME, $AIRFLOW_HOME, $AIRFLOW_CONFIG etc and
> I'm seeing no obvious way to pass those requisite environment variables to
> Airflow from my rc.d script. Without these variables set, Airflow annoyingly
> just looks in /dev/null for everything and fails to function.
>
> I'm probably missing something obvious, but hoping the fine folks here can
> point me in the right direction.
>
> Regards,
>
> Jordan
>
>
> # Airflow scheduler rc.d script:
>
> #!/bin/ksh
> #
>
> daemon="/usr/local/bin/airflow scheduler -D"
> daemon_flags="-l - --stderr - --stdout -"
> daemon_user="_airflowd"
> daemon_logger="daemon.info"
> daemon_timeout="60"
>
> . /etc/rc.d/rc.subr
>
> pexp=".*python.* ${daemon} ${daemon_flags}"
> rc_reload=NO
>
> rc_pre() {
> rm -f /var/airflow/airflow/airflow-scheduler.pid
> }
>
> rc_cmd $1
>
>
> # Airflow webserver r rc.d script:
>
> #!/bin/ksh
> #
>
> daemon="/usr/local/bin/airflow webserver -D -E -"
> daemon_flags="-p 8080 -l - --stderr - --stdout -"
> daemon_user="_airflowd"
> daemon_logger="daemon.info"
>
> . /etc/rc.d/rc.subr
>
> pexp=".*python.* ${daemon} ${daemon_flags}"
> rc_reload=NO
>
> rc_pre() {
> rm -f /var/airflow/airflow/airflow-webserver.pid \
> /var/airflow/airflow/airflow-webserver-monitor.pid
> }
>
> rc_cmd $1
>