CloudMapper を daemon にする


CloudMapper とは

awsのネットワーク構成図を作成してくれるツールです。
python3で動きます。

インストール手順

CloudMapperを使ってAWS環境を可視化する。

daemon にする

/etc/systemd/system/cloudmapper.service

[Unit]
Description=cloudmapper
After=network.target

[Service]
Type=simple
WorkingDirectory=/var/www/github.com/duo-labs/cloudmapper/
ExecStart=/usr/local/pyenv/shims/python -u cloudmapper.py webserver
Restart=always
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
centos7
sudo systemctl enable cloudmapper.service
systemctl start cloudmapper

ハマり

daemon 化の経緯

ターミナルで python ./cloudmapper.py webserver と叩くと、localhohst:8000 で cloudmapperが立ち上がり、ブラウザで見れるようになります。
ターミナルを終了すると見れなくなってしまうので、daemon にして永続的に見れるようにします。

pythonで daemon

node の forever に相当するものはなくたぶん、service に入れることにしました。
(pythonピヨグラマーです)

  • 1発目

ExecStart=/usr/bin/python -u {フルパス}/cloudmapper.py webserver

pyenvでpythonをインストールしているので、/usr/bin/python はデフォルトで入っているバージョン(python2系)です。
cloudmapper はpython3でないと動かないので、which python で探しました。

  • 2発目

ExecStart=/usr/local/pyenv/shims/python -u {フルパス}/cloudmapper.py webserver

これでも動きません。
ターミナルで叩くと、cloudmapper.py 内の show_help が呼び出され、usage: ~ が表示されます。
カレントフォルダが{フルパス}でなれば動かないと気づくのに時間を要しました。
cloudmapper.py の仕様と思いますたぶん

  • 3発目

ExecStart=cd {フルパス};/usr/local/pyenv/shims/python -u cloudmapper.py webserver

カレントフォルダを移動すればいいと分かったので、コマンドを繋げました 安直
コマンドエラーが出ていたので、すぐわかりました。

  • 4発目(解決)

WorkingDirectory={フルパス}
ExecStart=/usr/local/pyenv/shims/python -u cloudmapper.py webserver

WorkingDirectory でカレントフォルダを指定して解決です。

(所要時間: 3時間)