LINEで送る
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するたびにバッチが動く処理になってしまった。。ちゃんと調べてないので、また今後試してみようと思います。

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

LINEで送る
Pocket


adachin

1989年生まれのLancers SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、AnsibleやTerraformでのインフラコード化を推進。副業では数社サーバー保守、未経験によるエンジニアのメンターなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、グループ会社のインフラをECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

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