1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RubyからArukasのAPIを実行できるgemを作った

Last updated at Posted at 2019-05-15

はじめに

この記事は、さくらインターネットさんが提供しているArukasのAPIをRubyから実行できるようにしたときの備忘録です

なお、作成したものはgemとしてリリースしています

ソースコードはこちら

きっかけ

仕事の関係でWordPressなどを簡単にデプロイして試せる環境が欲しいなぁとアレコレ探していたのが事の発端。

で、さくらインターネットさんのArukasがあったことを思い出し、Arukasを試してました。

Dockerイメージを使ってデプロイできるので便利だったんですが、一気に複数のアプリを作成したりがちょっと辛かった……(いや、GUI操作で簡単にデプロイできるので非常に便利なんですけどね)
仕事で使いたかったのは、「一気にパパーっと複数のDockerイメージをデプロイしたい」感じだったので……

というわけで、その辺をよしなにできるgemを作ろうと思ったのが作りはじめたきっかけです

つくったもの

arukas_wp.gif

自作したarukasを使うことで上記のように簡単にWordPressをデプロイできます

ちなみに、WordPressをデプロイしたときのソースコードはこちら

基本的にはJSONファイルで設定を書いて、Rubyで作成したJSONを読み込んでPOSTリクエストで送るだけでアプリを作成できる

アプリの起動とかは、アプリ作成時のレスポンスを受け取ることで処理できたりする

やったこと

基本的にはArukas API Referenceを読みつつ、rest-client/rest-clientでAPIへのリクエスト処理を書いただけ

PATCHPOST処理周りで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

次に、デプロイするnginxJSONを作成します

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を作成

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_TOKENARUKAS_JSON_API_SECRETはArukasの設定画面内のAPIキーから簡単に発行したTokenSecretを貼り付けてください

あとは、ターミナルでruby deploy.rbを実行すればnginxがArukasにデプロイされています

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?