はじめに
この記事は、さくらインターネットさんが提供しているArukasのAPIをRubyから実行できるようにしたときの備忘録です
なお、作成したものはgemとしてリリースしています
ソースコードはこちら
きっかけ
仕事の関係でWordPressなどを簡単にデプロイして試せる環境が欲しいなぁとアレコレ探していたのが事の発端。
で、さくらインターネットさんのArukasがあったことを思い出し、Arukasを試してました。
Dockerイメージを使ってデプロイできるので便利だったんですが、一気に複数のアプリを作成したりがちょっと辛かった……(いや、GUI操作で簡単にデプロイできるので非常に便利なんですけどね)
仕事で使いたかったのは、「一気にパパーっと複数のDockerイメージをデプロイしたい」感じだったので……
というわけで、その辺をよしなにできるgemを作ろうと思ったのが作りはじめたきっかけです
つくったもの
自作したarukasを使うことで上記のように簡単にWordPressをデプロイできます
ちなみに、WordPressをデプロイしたときのソースコードはこちら
基本的にはJSON
ファイルで設定を書いて、Ruby
で作成したJSON
を読み込んでPOSTリクエストで送るだけでアプリを作成できる
アプリの起動とかは、アプリ作成時のレスポンスを受け取ることで処理できたりする
やったこと
基本的にはArukas API Referenceを読みつつ、rest-client/rest-clientでAPIへのリクエスト処理を書いただけ
PATCH
とPOST
処理周りで422
エラーが起きてたりしてややこしいことになったりもしたけども……
とりあえず、全APIを実行できるように実装はしてある
今後
とりあえず、仕事で使える感じにはなったので必要に駆られたときにだけメンテナンスするかなー?
あと、どこかの勉強会とかで実装時のアレコレとか話しても面白いかもね
参考
Arukas API Reference
rest-client/rest-client
【Microsoft Flow】Arukas アプリ作成時にハマったこと(API 認証編)
オマケ
Arukasへのデプロイチュートリアル
実際にArukasへデプロイするチュートリアルです。デプロイするのはnginx
を使います
まず、必要なgemをインストールします
gem install arukas rest-client
次に、適当なディレクトリを作成して、そのディレクトリへと移動します
mkdir hoge
cd hoge
次に、デプロイするnginx
のJSON
を作成します
{
"data":{
"type": "apps",
"attributes": {
"name": "myapp"
},
"relationships": {
"services": {
"data": [
{
"lid": "1",
"type": "services"
}
]
}
}
},
"included": [
{
"lid": "1",
"type": "services",
"attributes": {
"command": "",
"custom-domain": "",
"image": "nginx",
"instances": 1,
"ports": [
{
"number": "80",
"protocol": "tcp"
},
{
"number": "443",
"protocol": "tcp"
}
],
"environment": [
],
"subdomain": ""
},
"relationships": {
"service-plan": {
"data": {
"type": "service-plans",
"id": "jp-tokyo/free"
}
}
}
}
]
}
次に、デプロイを実行するdeploy.rb
を作成
require 'arukas'
arukas = Arukas::API::new("ARUKAS_JSON_API_TOKEN", "ARUKAS_JSON_API_SECRET")
json = File.read("test.json")
arukas.create_apps(json)
ARUKAS_JSON_API_TOKEN
、ARUKAS_JSON_API_SECRET
はArukasの設定画面内のAPIキー
から簡単に発行したToken
とSecret
を貼り付けてください
あとは、ターミナルでruby deploy.rb
を実行すればnginx
がArukasにデプロイされています