Closed yasulab closed 4 years ago
あ、間違って coderdojo.jp に transfer してしまった... >< すみません 💦 元に戻しました (>人<;) 💦
🤔.oO(DojoCast リポジトリを coderdojo.jp (Rails) にマージしたときと同様に、DojoPaaS も coderdojo.jp (Rails) にマージできるとメンテしやすいので理想的ではありそう)
まぁでも工数によるのかなぁ。もし工数が大きく変わるなら、node スクリプトから Ruby スクリプトに移植するだけの方が良さそう >< 💦
ひとまず、
という手順の方が良さそう 😊
なるほどありがとうございます!!!
👆のリンクのREADMEあたりを見た感じ、TraviCIで動かしていた、さくらサーバーの初期設定を行う部分を、Rails側から行えば勝利という感じですね!
まずは上げていただいたnodeスクリプトが何をしているか(何を満たすようにRubyで書き直せばいいのか)を確認していきます...!!
(さくらのAPI,以前みたときはドキュメント化されていないパラメーターが多くてなかなか厳しかった印象がありますが、すでに動いているサービスを横移動させるなら大丈夫そうですね...) 💭 🤔
ですね! そんな感じです ;)
ちなみにこれまでの運用経験から分かった知見は次の2つで、それぞれが上記の 1. と 2. のアイデアの背景になっている感じです 😸
npm run test:csv
をして /bin/deploy.sh
を実行すれば良さそうサーバー生成スクリプトは、なんかServerクラスの create
メソッドを定義しているように見える。
(定義自体はjsの無名関数を使っていそう)
実際に呼び出されているのは、grepした感じ
だと思われる
createメソッドにハッシュで初期値を流すとよしなに生成される世界観....
基本的に client
を引き回して中のメソッドをバンバン呼んでいくスタイルらしい。
client
は
を見ると、 sakuraのAPIクライアントライブラリっぽい
Rubyの横移動を考えると、同様のgemを探すか、気合でHTTPを叩くかになりそう
これはサーバーを「create」or 「destroy」の動作をするメソッドを提供するインスタンスになる
createの方は
が行われる。
destroy側は
が行われる。 それぞれのアクションはAPIを叩くのに対応している。
APIはHTTPクライアントライブラリのメソッドで抽象化されてるかな…と思ったが、POST
とか、エンドポイントが見える形だったので、そんなに難しくなさそう
ということで、サーバーの初期設定のスクリプトを読んでいきます
( 🤔 なぜansibleをいれているんだろう...? 使うのかな...? )
TravisCIの反映スクリプトはかなり素朴な、CIからgitを動かす実装でした。
現状PRベースで行っているので、同様のことは実装する必要はあるかな...と思いました。 ただ完全にRails側でユーザーの管理と申請フォームを作成した場合は必要なさそうですね。
ということでRubyへの移動を考えていこうかなと思います。 手順としては
このあたりをまず行います
sakuraのAPIクライアントライブラリっぽいgemをrubygemsに sakura
で検索して見てみました
使うとしたら fog-sakuracloudかなと思いますが、これはHTTPを叩いた方がいい気がしてきました
Rubyでもりもり書く前に、CoderDojoのreails appに組み込むので Dojoの追加スクリプトの実装のように、メインロジックはライブラリの形にしようかな... 🤔
まぁ一旦動くスクリプトをパッと書いて確かめてみようかな
ご無沙汰してます!
たまたま目についたのでいくつかお返事をw
なぜansibleをいれているんだろう...? 使うのかな...?
これは、WordPress をインストールしたいとかマイクラをインストールしたいとかの要望に対して、実際にはなかなか難しいだろうなというのがあって、インスタンス起動時に自動的にセットアップする方法ないかなと思っていたのでインストールしたのですが、その後どうしようとしてたのかは忘れましたw
たしかSlackのコマンドでインストールできるようにできへんかな。。。ぐらいの感じだったと思います。 なので実際には使ってないと思われます。
あと、さくらさんの API については、これを作った後で一度互換性のない変更が入っていたので(はっきり覚えてないですが、API からのレスポンスが変わったとかだったような。。。)、少なくくとも2年以上前にメンテが止まってるライブラリとかですと不具合があるかもです。 たしか直接 HTTP を叩く方法にしようかどうか当時僕も迷った気がします。
おっコメントありがとうございます!!
これは、WordPress をインストールしたいとかマイクラをインストールしたいとかの要望に対して、実際にはなかなか難しいだろうなというのがあって、インスタンス起動時に自動的にセットアップする方法ないかなと思っていたのでインストールしたのですが、その後どうしようとしてたのかは忘れましたw
たしかSlackのコマンドでインストールできるようにできへんかな。。。ぐらいの感じだったと思います。 なので実際には使ってないと思われます。
なるほど! ありがとうございます。 🙏 slackのコマンドが生成される可能性もあるので、念のためにansibleを通せるように python2をinstallする程度にしておきます。
なるほど、APIレスポンスが変化している感じなんですね! やはり直接HTTPを叩いたほうが安心できるかもしれない… 🤔
APIはこれを読みますさくらのクラウドAPI ver1.1 📖 👀
gem使うとしたらDL数的にfogしかなさそう https://rubygems.org/search?utf8=%E2%9C%93&query=sakura+cloud
もし直接叩くの諦めてfog使うなら.travis.ymlのrubyのバージョン更新したりとかしてPRだすとよさそう... https://github.com/fog/fog-sakuracloud/blob/master/.travis.yml
fogも見たらlast update 3years ago.... PRチャンスな気がしますが、どうしようかな... 直接叩いたほうが安牌な気が若干しますね
hog側、見た感じさくらの対応しているAPIのバージョンが現在と同じだったので
なんとか使えそうな気がします (使うかどうかは悩んでいます...)
過去のコミットを見て思い出したのですが、仕様変更があったのは以下のコミットの内容ですね。 https://github.com/coderdojo-japan/dojopaas/commit/5904765951f536ae73bb3be61a774cc15fbb1ba0
で、Fog の fog-sakuracloud
ではそもそもこのAPIをサポートしていないようなので、上の不具合自体は関係ないのですが、この部分は自力で HTTP リクエストを叩く必要があるかもですね。
ほかにもパケットフィルタリングの API も叩く必要があってこれも fog-sakuracloud
ではサポートしてないように見受けられますね。
https://github.com/coderdojo-japan/dojopaas/blob/master/lib/Server.js#L72-L86
@miya0001 ありがとうございます!!
fog-sakuracloud
を利用している処理と、利用していない処理が混同すると、いろいろと面倒な処理が多いような気がするので、やはりHTTPを直接叩く形式にしようかなと思います。
実装していくにあたり、テストでモックを使えば良いのですが、今回利用しているさくらサーバーに、テスト(CIなどで回すテストでなく、確認程度)で実際にAPIを叩くことになりそうなのですが、その場合はどうすれば良いのでしょうか 🤔 (CoderDojo側で確保しているサーバー台数などの制約など...)
実装していくにあたり、テストでモックを使えば良いのですが、今回利用しているさくらサーバーに、テスト(CIなどで回すテストでなく、確認程度)で実際にAPIを叩くことになりそうなのですが、その場合はどうすれば良いのでしょうか 🤔
@AnaTofuZ お、じゃあいつもの感じで 1Password for Team でアカウント情報を共有しますね ;)
お、じゃあいつもの感じで 1Password for Team でアカウント情報を共有しますね ;)
@AnaTofuZ 追加しました! 後ほど確認してもらえれば 😉🔐✨
@yasulab 早い! 💨💨 💨 💨 ありがとうございます ❗️ ❗️ 🙏 確認できました
さくらのコンソールからログインして石狩第2ゾーンに様々なものがあることを確認しました! cf. https://github.com/coderdojo-japan/dojopaas#%E7%AE%A1%E7%90%86%E8%80%85%E5%90%91%E3%81%91%E3%81%AE%E6%83%85%E5%A0%B1
💭 (定期的にコードに出てきたresolveはjsのこれらしい...) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve
無事 https://github.com/coderdojo-japan/dojopaas/commit/1f47c6242902087bbea9034cbbc5b046bc875925 のコミットでTravisCI経由でサーバーが立ったことが確認された 🎉 というわけで移植に関してはクリアです (以前の問題はやはりさくらのAPI側の問題のようなので、Rubyスクリプト自体には問題はなかった)
@AnaTofuZ Ruby への Porting 作業お疲れ様でした...!!! 😆🎉✨ DojoPaaS の再起動部分の問題 (https://github.com/coderdojo-japan/dojopaas/issues/108) も解決されていてステキ...!! 😻🆒✨ README の加筆修正など、特に他の残タスクがなければ、アナグラさんの都合の良いタイミングで Close してもらえれば 😉✨
@Yuppymam ちょっと難しいかもしれないですが、もし本 Issue および 各種 PR の雰囲気が掴めたら、お知らせ記事執筆にチャレンジしてみても良いかもしれません 👀💭💖
さくらから返信が来ました。内容は「様子見で、またなにかあればお問い合わせお願いします」という旨でした。その為、今回は移植完了という感じで大丈夫だと思いました。
残タスクとして、READMEの修正と軽く動きのtweakがあるので、こちらを行ってcloseしようと思います!
@yasulab なんとなく雰囲気分かりました😊凄い✨👏
後ほどこちらも記事にしてみようと思います📝✨
後ほどこちらも記事にしてみようと思います📝✨
よろしくお願いします...!! (>人< )💖✨
こちら https://github.com/coderdojo-japan/dojopaas/pull/136 で対応できたので Close しますね ;)
プロトタイプを開発していただいた @miya0001 さんに許諾をいただいけたので、Ruby の開発会社である @YassLab チームで開発および運営を引き継ごうと考えています 🚜💨
まずは技術調査から...? 🔍💨
さしあたって、そもそも Ruby に移植する際にどのぐらい工数がかかるのかを確認した方が良さそうです🤔💭 現在ちょうど @naopontan さんに CoderDojo 周りの開発をお願いしているので、まずは移植できるかどうかの F/S をしていただけると嬉しいです...!! 🙏
関連リンク