DigdagのDockerオペレータで四苦八苦

 先週に引き続きでDigdag on Kubernetesで格闘。でも今回は足回りの環境の特殊さは関係なくて、純粋にDigdagの仕様まわりで苦戦。

github.com

 Digdagはタスクごとに作業ディレクトリが作られる。これは再実行性だとか複数台での分散だとかを見越した設計なのだけど、これが一時ファイルみたいなものを作るようなバッチだと相性が良くない。単にローカルでのタスク実行だけなら適当に/tmpなんかを出力ディレクトリにして絶対パス指定すれば良いのだが、Dockerオペレータを使うものだと作業ディレクトリのみをマウントする実装になっているのでこの手は使えない。

 何かしら回避法は無いものかと調べたりコード読んだりしたのだけど、少なくともお行儀の良い方法ではどうにもならなそう。変にアクロバティックな手法を使って複雑化させてしまうのも本末転倒ということで、結局はshオペレータでdockerコマンドをベタに記述するという方向で落ち着く。

 そもそもの話でいえば、分散実行で一時ファイルみたいな持ち方をすること自体あまり筋が良くないのかもしれない。KVSを使うという手もあったなということに帰宅時に気付くなど。



 久々に厚切りステーキ。たまにはガッツリ肉食うのも良いものだ。