Pocket

[DigitalOcean]APIを使って毎月の請求をSlackに通知させてみた

前回のブログでDOの請求を個人のサーバーで毎月通知するように実装しました。

が!

CircleCI2.0からTriggerという機能を使ってcronで定期実行できるようになってから触ったことがなかったので、せっかくなのでサーバーレスになるし移行してみました。


■Scheduling a Workflow

https://circleci.com/docs/2.0/workflows/#scheduling-a-workflow

https://circleci.com/docs/2.0/configuration-reference/#schedule


■Add Projects

とりあえずcron用のプライベートリポジトリを作ってみました。AnsibleとTerraformやら管理しているリポジトリにまとめようかなと思いましたが、無料プランということもあって、Terraform CIが動いており、2つコンテナが同時に動作することができません!(制限かかる) そもそも逆に分けたほうが管理しやすいということに気づいた。


■CircleCI

  • .circleci/config.yml

まずは 3~7行目references で & (アンカー) を指定していますが、今後それ以外のコンテナでバッチを作ることがあった場合に処理を分割するようにしました。今回はDockerのImageを個人のサーバーのOSと同様にしたかったのでUbuntuを選択しております。

また、11行目で上記の & (アンカー)を指定することでそのImageでbuildしてくれます。あとはTriggermasterに対してcronを書くだけなのですが、JSTではなくUTCで表記する必要があります。ここはハマった。

  • billing.sh

  • Environment Variables

シェルスクリプトで指定しているAPIやSlackのURLはCircleCIの環境変数で動作させるように変更しました。これでGitHub上に情報を管理することがなくなった!(セキュア) いざテスト!


■Test

Authorが謎のロボットになってる!

OK!!!


■まとめ

https://circleci.com/docs/reference-2-1/#circleci-2-1-reference

version 2.1で作ろうとしたらTriggerがまだ対応してない?ぽくて、pushするたびにバッチが動く処理になってしまった。。ちゃんと調べてないので、また今後試してみようと思います。

とりあえずサーバーレス最高!!スケジュール機能によってバッチサーバーが不要になりそうですね。

Pocket

カテゴリー: CircleCIDigitalOcean

adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください