Digdag + Nginx(Basic Authentication)

Digdagをサーバーとして使う。 Basic認証のために前段にNginxを立てる。

tl;dr

やることは単純。

  • インストールする
  • サーバーとしての設定を書く
  • Systemdの設定を書く
  • Nginxの設定を書く

注意することはNginxの設定で proxy_set_header Authorization “”; を使い Authorization ヘッダーを消してから Digdag にリクエストを渡すこと。 消しておかないと、不正な認証ヘッダーとしてリクエストを拒否してしまう。

また Digdag-UI(v0.9.28) doesn’t show any contents · Issue #878 を踏まないように注意する。 最初、真っ白で何が起きたのかわからなかった。

詳細

1
wget https://dl.digdag.io/digdag-0.9.31

server-modeのconfigを参考にDigdagサーバーの設定をする。

1
2
3
4
5
6
7
8
9
server.bind = 127.0.0.1

database.type = postgresql
database.user = postgresql
database.password = postgresql
database.host =     localhost
database.port =     5432
database.database = digdag
database.ssl =      false

あとSystemdでサービスにする。 実際には Ansible を使ったので下みたいな設定ファイルのテンプレートを書いた。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
[Unit]
Description=DigDag Server
After=network.target

[Service]
Type=simple
ExecStart=/bin/bash -c '{{ digdag_server_top }}/bin/digdag server --max-task-threads 8 --config {{ digdag_server_top }}/etc/digdag-server.cfg -O {{ digdag_server_top }}/log -A {{ digdag_server_top }}/log'
User={{ digdag_server_user }}
Nice=1
WorkingDirectory={{ digdag_server_top }}
SyslogIdentifier=digdag_server
Restart=always
RestartSec=5
KillMode=process
TimeoutStopSec=1200

[Install]
WantedBy=multi-user.target

Nginxの設定は下のようにBasic認証をつけプロキシするときには認証ヘッダを除去するようにした。 これはDigdagに Authorization ヘッダーを送るとたしかForbidden(403)が返ってきたためだ。 たぶんこのへん

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
server {
    server_name  {{ nginx_digdag_proxy_host }};
    listen       80;

    auth_basic "please type user/pass!!";
    auth_basic_user_file /etc/nginx/.htpasswd;

    location / {
      proxy_pass http://localhost:65432/;
      proxy_set_header Authorization "";
    }
}

パスワードファイルは apache2-utilshtpasswd で作った。

htpasswd -c -b /etc/nginx/.htpasswd ${USER} ${PASS}
comments powered by Disqus