Hi. 

You can pas environment variables by creating a login class matching the name 
of your rc.d script in login.conf and adding setenv to that class. 

—
Antoine

> On 21 Apr 2023, at 00:10, Jordan Geoghegan <jor...@geoghegan.ca> wrote:
> 
> Hello,
> 
> tl;dr: Is there any way to pass an environment variable to a daemon started 
> with rc.d?
> 
> 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
> 

Reply via email to