開発環境が欲しい。
Setting up a Redash instance · Redash Help Center
なんとなくDigitalOcean推しなのでDigitalOceanでやってみます。
doctl
をインストール
doctl
はDigitalOceanのコマンドラインツールです。
もちろんRからも使えるんですけど、SSHしていろいろいじりたいので結局コマンドラインツールが便利だったりします。
インストール方法はいろいろありますが、PATHを通すとかいろいろ考えるとgo get github.com/digitalocean/doctl/cmd/doctl
が一番楽かもしれません。
が、私は手元のBash on Windowsにバイナリを持ってきました。
# ダウンロードして展開 wget -qO- https://github.com/digitalocean/doctl/releases/download/v1.7.0/doctl-1.7.0-linux-amd64.tar.gz | tar xz # ハッシュ値が一致するのを確認 sha256sum ./doctl wget -qO- https://github.com/digitalocean/doctl/releases/download/v1.7.0/doctl-1.7.0-linux-amd64.sha256 # パスが通っているところに移動 sudo mv ./doctl /usr/local/bin
認証
https://cloud.digitalocean.com/settings/api/tokens からAPIトークンを生成したら、doctl auth init
を実行してそのトークンをコピペします。
$ doctl auth init DigitalOcean access token:
終わったら、ちゃんとセットアップできているか、試しにrate limit APIでも叩いてみましょう。
$ doctl account ratelimit Limit Remaining Reset 5000 4998 2017-10-12 21:54:54 +0900 DST
SSH鍵を登録
ssh-keygen -f ~/.ssh/testkey
doctl
がデフォルトで使う鍵は.config/doctl/config.yaml
に設定されています。以下の行に~/.ssh/testkey
を指定しましょう。
compute.ssh.ssh-key-path: /home/user1/.ssh/id_rsa
次に、この公開鍵をDigitalOceanに登録します。SSH鍵の操作にはdoctl compute ssh-key
を使います。登録はimport
です。
doctl compute ssh-key import "test key" --public-key-file ~/.ssh/testkey.pub
こんな感じの結果が表示されると思います。このID
はDropletをつくるときに指定するので覚えておきましょう。
ID Name FingerPrint 12345678 test key aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa
Dropletを作成
Dropletというのは仮想サーバのインスタンスです。Dropletを操作するにはdoctl compute droplet
の各コマンドを使います。例えば、Dropletの一覧を表示するにはlist
です。
$ doctl compute droplet list ID Name Public IPv4 Private IPv4 Public IPv6 Memory VCPUs Disk Region Image Status Tags
オプションを探す
Dropletを作成するにはcreate
ですが、ここにはいろいろ指定しなくてはいけないオプションがあります。
$ doctl compute droplet create --help 2>&1| grep required --image string Droplet image (required) --region string Droplet region (required) --size string Droplet size (required)
ここに指定できるオプションは、例えばインスタンスタイプであればdoctl compute size list
、リージョンはdoctl compute region list
で調べられます。
$ doctl compute size list Slug Memory VCPUs Disk Price Monthly Price Hourly 512mb 512 1 20 5.00 0.007440 1gb 1024 1 30 10.00 0.014880 2gb 2048 2 40 20.00 0.029760 c-2 3072 2 20 40.00 0.060000 4gb 4096 2 60 40.00 0.059520 c-4 6144 4 20 80.00 0.119000 8gb 8192 4 80 80.00 0.119050 c-8 12288 8 20 160.00 0.238000 16gb 16384 8 160 160.00 0.238100 m-16gb 16384 2 30 120.00 0.178570 c-16 24576 16 20 320.00 0.476000 32gb 32768 12 320 320.00 0.476190 m-32gb 32768 4 90 240.00 0.357140 48gb 49152 16 480 480.00 0.714290 c-32 49152 32 20 640.00 0.952000 m-64gb 65536 8 200 480.00 0.714290 64gb 65536 20 640 640.00 0.952380 m-128gb 131072 16 340 960.00 1.428570 m-224gb 229376 32 500 1680.00 2.500000
$ doctl compute region list Slug Name Available nyc1 New York 1 true sfo1 San Francisco 1 true ams2 Amsterdam 2 true sgp1 Singapore 1 true lon1 London 1 true nyc3 New York 3 true ams3 Amsterdam 3 true fra1 Frankfurt 1 true tor1 Toronto 1 true sfo2 San Francisco 2 true blr1 Bangalore 1 true
イメージはちょっとややこしくて、デフォルトだとプライベートイメージ?が表示されるので、--public
を指定しないといけないみたいです。
$ doctl compute image list --public | head ID Name Type Distribution Slug Public Min Disk 28480378 1548.1.0 (beta) snapshot CoreOS coreos-beta true 20 13764801 Elixir on 14.04 snapshot Ubuntu true 30 14782899 6.7 x32 snapshot CentOS centos-6-5-x32 true 20 14782952 6.7 x64 snapshot CentOS centos-6-5-x64 true 20 16071652 cloudbench-ycsb-on-1404.030216-1 snapshot Ubuntu true 60 16071743 cloudbench-hibench-on-1404.030216-1 snapshot Ubuntu true 60 16082940 cloudbench-nullworkload-on-1404.030316-6 snapshot Ubuntu true 20 16376426 Cassandra on 14.04 snapshot Ubuntu cassandra true 30 16623283 7.10 x32 snapshot Debian true 20
今回はDockerが使いたいので、dockerが使えそうなやつを探してみましょう。
$ doctl compute image list --public | grep -i docker 23219707 Docker 17.03.0-ce on 14.04 snapshot Ubuntu docker true 20 27493072 Docker 17.05.0-ce on 16.04 snapshot Ubuntu docker-16-04 true 20
今回はdocker-16-04
にします。
作成
シンガポールリージョンで4GBのインスタンスをdockertest
という名前で作るには、こうです。
doctl compute droplet create dockertest --image docker-16-04 --region sgp1 --size 4gb --ssh-keys 12345678
こんな感じのレスポンスが返ってくれば成功です。
ID Name Public IPv4 Private IPv4 Public IPv6 Memory VCPUs Disk Region Image Status Tags 66666666 dockertest 4096 2 60 sgp1 Ubuntu Docker 17.05.0-ce on 16.04 new
少し準備に時間がかかるので、ステータスがactive
になるまで待ちましょう。
$ doctl compute droplet list -o json | jq '.[] | select(.name == "dockertest") | .status ' "active"
インスタンスにSSH
doctl compute ssh
でSSHできます。
doctl compute ssh dockertest
ここから先はインスタンス上で作業しましょう。
RedashをDocker composeで立ち上げる
パッケージアップデートとかufwをかけるとかそういうのがもろもろ終わったら、Redashのアーカイブをダウンロードしてきましょう。Docker compose用のファイルがあるのでそれを使います。
wget -qO - https://github.com/getredash/redash/archive/v2.0.0.tar.gz | tar xzf - cd redash-2.0.0 docker-compose -f docker-compose.production.yml run --rm server create_db docker-compose -f docker-compose.production.yml up -d
あと、だいたいはブラウザからで設定できるんですけど、データソース用にtest
というデータベースを作っておきます。PostgreSQLにはユーザ名もパスワードもpostgres
で入れます。
root@dockertest:~/redash-2.0.0# docker exec -it redash200_postgres_1 psql --password -U postgres -c "CREATE DATABASE test;" Password for user postgres: CREATE DATABASE
ブラウザでアクセス
http://<DropletのIP>
にアクセスすると、ログイン画面が見えるはずです。ここに適当に埋めてログインします。
ログインできたら、右上のこのアイコンをクリックしてデータソースを追加しましょう。
ホストは、127.0.0.1
ではなくpostgres
です。ユーザ名、パスワードもpostgres
です。
これで「Test Connection」が成功したらOK。
次回
RからRedashを使うパッケージ作っているので、それが完成したらブログに書きます。DBI難しい...