Github Actions
想像してたよりめちゃくちゃ簡単だし便利だった。
例えばdevelopブランチで開発して、ある程度のところでmainブランチにマージする。
そのマージ(push)をトリガーにして、VPSにSSH接続してgit pullとかdocker compose buildとかdocker compose upとか、その辺を実行させることができる。
その辺の処理を実行する環境はGithub側がもっているので、こっちで用意する必要がないのも楽。
Next.jsをVPSでデプロイしていたのだけど、毎回イメージ作り直してコンテナ再生成してみたいなことをするようにしてあるのだけど地味にめんどい。git pullもめんどい
自分でサービス使ってみて不具合とか見つけたらとっとと修正してデプロイまでやってしまいたいんだけど、この作業めんどいの良くないなぁ。と思っていたのでやってみて結構良かった。
最初にも書いたけど、実装自体もかなり楽だったし。あんまり込み入った設定とかする必要なく、特定のルールでディレクトリなりファイルなり作っておけばあとは勝手にgithubが読み取ってやってくれるっぽかった。ラクチン
JenkinsとかGithub Actions以外のCI/CDツールは全く知らないけど、中々便利なものなんだなぁとか思った。もっと手のこんだことをやるならテストコードの実行とかもやるっぽいけど、コストデカいからいいや。テストコード書く癖は未だについてないけど、いずれサクッとかけるようになりたいなぁとか思う
そもそもNext.jsみたいなフロントエンドのテストコードはちょっと違う感じになりそうな気もするけど
Ansible
今色々改修行って反応チェックしたいフェイズなので、他になんか裏側でやる作業が楽になりそうなやつないかなーって調べてて見つけたやつ
Terraformがvps作成段階の話だとするとAnsibleはvps作成後の設定の話っぽい。
vps新規に立ち上げたあと、実際にアプリケーション動かすために色々設定書いたり、.envファイル作ったりとかするんだけど、その作業を自動化できる。
仕組み的には大まかな理解だけど、対象サーバーにsshで接続して、playbookの内容を元に設定するらしい。(まだ途中段階だからよくわからんけど)
ssh設定書いてて、ipとかuserとか秘密鍵とか設定する必要あるんだけど、これをgit管理してしまうのは憚られる。そこでansible vaultというやつでその接続設定暗号化出来ますよって話があるんだけど、その暗号化のためにパスワードが必要
そうなると今度はそのパスワードをどう管理しますか問題が出てくる
パスワードはgit管理できないし、暗号化したファイルをgit管理したいかといわれると若干嫌だなぁという気持ちもあり、だったらもうそもそも接続設定のファイルをgit管理しなければいいんじゃねとかなった
他にちょっと考えたのは環境変数から持ってくるようにして、ansibleを実行する場合はgithub actionsから手動でワークフローを走らせるようにする。で、githubにsecretで値を保存する機能があるので、そこに機密情報系保存しておく。みたいなことも考えた
ただなんかそこまでいくと無駄にややこしくし過ぎな気もするし、所詮個人開発なんだから、やっぱ接続設定のファイルをgit管理しないでいいのではなかろうかとかなってた
この辺考えて、パスワードとかの管理はやっぱり面倒くさいなぁとか思ったりした。hashicorp vaultみたいなのがいいって話を目にしたんだけど、どうなんだろう。チラ見して読むのめんどくせぇとなって詳細見てない
ぶっちゃけ別に新たにvps立ち上げるとか、他サーバーに移動するとかの予定もないのでansibleを設定する必要ないのだけど、ドキュメントかわりぐらいにはなるのかなぁという気持ち。
github actionsは学習コストに対してリターンが割と大きい感じがしたから良かったのだけど、ansibleは結構な面倒臭さの割に少なくとも現状だと大したリターンもなさそうなのがしんどいっすね。。
新しい技術をやるのは楽しい
あんまり知らないけど、全く知らないわけではないみたいな領域をやるのが一番わかるって感じがするので楽しいって話があったりしますけど、まさにそれな気がする
あと面倒くさいことが解消されることが楽しいと感じるので、そこもいい
今回諸事情でGCP使えなかったけど、本当はこっち使えたほうが色々勉強にもなったろうし、便利機能も使えただろうから良かっただろうなぁとか思う。
そういや、AnsibleやるよりはSREの本で読んだこととかやったほうが楽しそう。これ書いてて思い出したけど、そういや読んだわ。全然覚えてなかった
あと、バンディット問題を利用した最適なリンクカラーの検出みたいなやつも読んだっけ。Ansibleのモチベーション限りなくゼロに近いので、こっちらへんのところ考えたほうが楽しいかも
そんな感じのメモでした。