きっかけ
いくつかのサーバーの設定、ミドルウェア変更することになり、
影響範囲を確認していたのですが、サーバーごとにcronの運用が統一されていなかったのでcronまわり影響範囲を確認するのに時間がかかってしまいました
そこでcronの運用フローを統一する過程でcronの簡単なドキュメントを作成したくなりました
その際、javadoc,phpdocのcron版みたいのがないか探してみたのですが、ないようなのでせっかくなので自作してみました
crondocの機能
ざっくり下記のような機能で作ってみました
- 標準入力、ファイル指定でcrontabからドキュメントを出力
- 改行までをひとグループとしてドキュメント出力
- ドキュメントを出力はmarkdowm形式
- @authorなどのタグ付ができる
出力例
現状下記のようなcrontabの場合はこんな感じです
- crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# @title monday.sh
# @author hoge
# @param env[dev|stg|prod]
# start every monday
0 10 * * 1 sh /home/hoge/happy_monday.sh prod
↓↓↓
Environment variable
- SHELL=/bin/bash
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- MAILTO=root,hoge@mail.co.jp
- HOME=/
monday.sh
- Author : hoge
- param : env[dev|stg|prod]
- start every monday
min | hour | day | month | day week | command |
---|---|---|---|---|---|
0 | 10 | * | * | Mon | sh /home/hoge/happy_monday.sh prod |
使い方
ソースはこちら
crondoc
バイナリを落としてきて、下記のようにすればドキュメントが出力されるはずです
$ crodoc /etc/crontab
$ crontab -l | crodoc -s
TODO
- markdown以外の出力形式にも対応
- タグの種類増やす
まとめ
cron周りはあまり触る回数、人も多くなく属人化しやすい箇所なのでフロー、ドキュメント共有して見える化していければ
せっかく作るならコマンドっぽくしたいってだけでgolangで作ってみたのですが、
わからないこと多く時間かかったし、全然golang的な書き方できてないがいい経験になった。今後も継続!