digitalocean

A collection of 22 posts
Use Container Storage Interface (CSI) with Nomad
nomad

Use Container Storage Interface (CSI) with Nomad

今まで Nomad で DB 等のステートフルなワークロードを実行したい場合、以下のような選択肢がありました。 * host_volume スタンザを使用し、ホストのボリュームを使用する。 * Docker を使用したタスクの場合は volumes パラメータを使用し同様にホストのボリュームをマウントして使用する。 しかし、上記の方法はホスト間でのデータを同期しないため、例えばタスクが終了後他のノードでタスクが再起動された場合にデータを保持することができません。 また、ephemeral_disk スタンザというものがあります。こちらの migrate パラメータを有効にすると、タスクを元のノードに配置できない場合にデータをホストを越えて移行することができます。しかし、以下の制約があります。 * データの移行はベストエフォートで行われるため、データは失われる可能性がある。 * 大きいサイズのデータには適していない。 * そもそも想定された使い方はホスト間でのデータの共有ではなく、その名前の通りグループ内で一時的な共有スペースを持つことである。 従って永続的
9 min read
Split DigitalOcean project
digitalocean

Split DigitalOcean project

最近このブログを Nomad クラスター環境へ移行しました。 * Nomad クラスターを作成する * Nomad クラスター上で Ghost ブログを動作させる クラスターは DigitalOcean 上に構築しており、構築は Terraform で自動化しています。ウェブサーバーやブログなどのアプリケーションの配備や管理は Nomad に任せています。 DigitalOcean ではプロジェクトという単位でリソースをまとめることが出来ます。 * Projects :: DigitalOcean Product Documentation とりあえず Nomad クラスター関連のリソースをまとめる意図で Nomad Cluster というプロジェクトを作成し Droplet や Load Balancer などのリソースを放り込んでいました。 が、最近 G Suite の試用を始め、G Suite 用の DNS レコードの設定を DigitalOcean DNS に設定する必要が出てきました。それ以外にも Redash
1 min read
Create Nomad Cluster on DigitalOcean
nomad

Create Nomad Cluster on DigitalOcean

Nomad 上にこのブログ (Ghost) を移そうと考えています。 * Nomad by HashiCorp そこで、まずは Nomad クラスターを DigitalOcean 上に作成してみました。 この記事の一番最後にクラスター作成に使用している Terraform のファイルを貼っておきます。 Nomad とは Nomad とは Docker コンテナや Qemu 仮想マシン、 Java アプリケーション等のデプロイ、それらによる処理の実行の管理を自動的に行うツールです。 つまり、ワークロードオーケストレーターです。 * Introduction - Nomad by HashiCorp ラーメン二郎で言えばロット・マエストロやロット・マイスターが該当するかもしれません。 ※ロット・マエストロ/マイスターはラーメンが一定のペースで効率よく置かれるように、ラーメンのデプロイ (カウンターへの配置) を管理し、リソースの調整 (少食っぽい人に大を食わせない、食べるのが遅い人を急かす・手伝う) や他のマエストロ/マイスターとの協業 (広い店舗
9 min read
Create Kubernetes Cluster on DigitalOcean
digitalocean

Create Kubernetes Cluster on DigitalOcean

このブログは DigitalOcean 上で動かしています。サーバの構築は Terraform で、ミドルウェアの設定などは Ansible で行なっているのですが、そろそろ飽きてきたので Kubernetes に移行しようと考えています。 そこで、まずは Kubernetes クラスタを DigitalOcean 上に作成するところからやってみます。 使用するツール クラスタの構築を全て手動でやるのはかなり苦しそうなので kops (Kubernetes Operations) を使ってみます。 * GitHub - kubernetes/kops: Kubernetes Operations (kops) - Production Grade K8s Installation, Upgrades, and Management kops は Kubernetes クラスタを構築・運用するためのツールで、 AWS などの各クラウドベンダやプライベートクラウドに対応しています。 DigitalOcean にも α 版ですが対応しています。
4 min read
DigitalOcean Roadmap 2018
digitalocean

DigitalOcean Roadmap 2018

ちょうど1ヶ月前くらいに DigitalOcean の2018年の計画が発表されました。 * 2018: What's Shipping Next on DigitalOcean 少し遅くなりましたが読んでみたのでまとめます。 去年のまとめはこちら。 * DigitalOcean Roadmap 2017 2017年の振り返り まずは2017年の振り返りから始まっています。2017年は以下の大きな機能がリリースされました。 * ロードバランサー * モニタリング * ファイアウォール * オブジェクトストレージ 幾つかの機能については私も試してみていました。 * DigitalOcean - ゆるふわキャンパー 個人的にはファイアウォールがありがたかったです!サービス内容が徐々に充実してきましたね。 機能追加以外にはドロップレットの新しいプランの追加やネットワークのバックボーンの強化などが行われていたようです。 2018年の予定 DigitalOcean プロダクトチームの2018年のミッションは、より簡単にアプリケ
2 min read
Respond to Intel chip vulnerability on DigitalOcean
digitalocean

Respond to Intel chip vulnerability on DigitalOcean

年明け早々大きな脆弱性が発表されましたね。 * Meltdown and Spectre * CPUの脆弱性 MeltdownとSpectreについてまとめてみた このブログは DigitalOcean 上で動いているのですが、 DigitalOcean ではどのような対策が取られているのでしょうか。 公式ブログに記事が上がっていました。 * A Message About Intel Security Findings 読んでみると * Intel やその他ハードウェアベンダーと協力して対策を進めている * 1月9日時点では、 DigitalOcean に当てるパッチの検証をしている * カーネル側で対応するためのアップデートが各ディストリビューションから出ているので、まずはそれを適用して対策してほしい * そのために全ての Droplet で内部カーネルを使えるように設定した と言った感じでした。1月10日現在、まだ DigitalOcean 本体の作業は終わっていないみたいですね。 さて、内部カーネルってなんだという話ですが、これは
1 min read
DigitalOcean released Cloud Firewalls
digitalocean

DigitalOcean released Cloud Firewalls

DigitalOceanにマネージドなファイアウォールが追加されました! ✨ * Cloud Firewalls: Secure Droplets by Default 管理画面やAPIから設定できるファイアウォールで、設定はDigitalOceanのネットワーク層で適用されます(フィルタされたパケットはドロップレットまで届かない)。 この機能によってドロップレット毎にiptablesやfirewalldを設定する必要がなくなるのがうれしいですね。 sourceもしくはdestinationにはIPv4, IPv6, タグ, ドロップレット, ロードバランサを指定することができます。tagを指定することで楽かつ柔軟にスケールできそうですね。 terraformでも近いうち実装されそう。 * resource_digitalocean_firewall.go: Add DO Cloud Firewalls (#15124) by keinohguchi · Pull Request #1 · terraform-providers/terraform-p
1 min read
Annotate provider maintenance time with Mackerel
mackerel

Annotate provider maintenance time with Mackerel

このブログはDigitalOceanが提供しているVPS上で動いています。 * digitalocean - ゆるふわキャンパー DigitalOceanはもちろん、AWSやさくらVPSなどの物理リソースを提供しているプロバイダでは、プロバイダの都合によってメンテナンスが発生する場合があります。例えばネットワーク機器の差し替えや古くなった物理サーバの入れ替えなどによるものです。 このようなプロバイダ側で予測が可能で、サービスの可用性に影響する類のメンテナンスについては、まず何らかの形(メールや公式サイトなど)で告知が行われます。 DigitalOceanのシンガポールリージョンでネットワーク機器のメンテナンスのため 2017/04/25 05:00 ~ 07:00(JST) の間でネットワークが不安定になる場合があるとのこと ? — †殲滅の修道者† (@lorentzca) 2017年4月19日 ふと思いついて↑のメンテナンス期間をMackerelのグラフアノテーションに入れてみました。 はたしてグラフアノテーションは未来の日付に対して有効なのでしょうか
3 min read
DigitalOcean released Monitoring
digitalocean

DigitalOcean released Monitoring

DigitalOceanの管理画面にモニタリング機能が追加されました!✨ * Introducing Monitoring: Insight into Your Infrastructure モニタリングでできること まだできることは少なく、最小限という感じ。 * グラフ(ドロップレット毎にデフォルトで用意されている)をモニタリングし、閾値を超えたら通知を出すことができる * 通知先はまだメールかSlackの2つだけ * モニタリング対象はドロップレット単位もしくはタグで指定できる 費用 無料! free with all Droplets. Introducing Monitoring: Insight into Your Infrastructure 設定方法 まずドロップレットにdo-agentをインストールする必要があります。 * DigitalOceanがリリースしたdo-agentとはどういうものなのか curl -sSL https://agent.digitalocean.com/install.s
2 min read
Impact of Cloudflare's incident on DigitalOcean
digitalocean

Impact of Cloudflare's incident on DigitalOcean

先週(2017/02/03)、Cloudflareでインシデントが発生しました。 * Incident report on memory leak caused by Cloudflare parser bug これを受けて、DigitalOceanからCloudflareのインシデントによるDigitalOceanへの影響について説明する記事が公開されました。 * DigitalOcean, Your Data, and the Cloudflare Vulnerability 先に結論 DigitalOceanから顧客データが流出する事態には(DigitalOceanのセキュリティチームによる調査によると)至っていない。 Cloudflareで何が起きたのか インシデントの記事で詳細まで語られていますが、以下のような経緯がありインシデントが発生したようです(訳が雑・間違っている可能性有り ><)。 何が起きたか HTTPクッキーやauthenticationトークン、HTTP POSTボディの内容などが検索エンジンにキャッシュされてしま
2 min read
Sammy The Shark ASCII Art
digitalocean

Sammy The Shark ASCII Art

私のこのブログはDigitalOcean上で動いています。 * digitalocean - ゆるふわキャンパー DigitalOceanには可愛らしいサメのマスコットキャラクターがいて、名前を「Sammy The Shark」(サメのサミー かな?)といいます。 今のサミーはモデルチェンジ後の姿で、以前はもっとどんくさそうなサメでした。 * Sammy The Shark Gets A Birthday Makeover From Simon Oxley サミーの物販もあります。ステッカー欲しい!!! * Accessories - DigitalOcean Store サミーはマスコットキャラクターの割には意外に露出がなく、DigitalOceanの公式トップページにも存在しないし、ブログにも稀にしか出てきません。 その割には風船で飛んだり、ロケットで飛んだり、アクティブな一面があります。 サミーのアスキーアート そんなサミーですが、私は結構好きなので、サーバにログインした際に表示させてみようと思います。 まずサミーのアスキ
2 min read
DigitalOcean has released Load Balancers
digitalocean

DigitalOcean has released Load Balancers

昨日、DigitalOceanからマネージドロードバランサの提供が始まりました! * Load Balancers: Simplifying High Availability ロードバランサの提供はロードマップでも発表されていましたね。思ったより早かった。 * DigitalOcean Roadmap 2017 今まではロードバランサは自前で用意し、ロードバランサの冗長化をFloating IPsを使って行う、というような紹介に留まっていました。 * How To Use Floating IPs on DigitalOcean | DigitalOcean マネージドなロードバランサを使用することでだいぶ楽になりそうですね。 特徴 記事のままですが、以下のような特徴があります。 * TCP、HTTP、HTTPSを負荷分散してくれる * リージョンをまたぐことは出来ない * HTTPSを使う場合はロードバランサまでか、そのバックエンドまでSSLするか選べる * バランサのアルゴリズムを選択できる *
2 min read
DigitalOcean Roadmap 2017
digitalocean

DigitalOcean Roadmap 2017

2017年のDigitalOceanのロードマップ的な記事を読みました。 * 2017: What's Shipping Next on DigitalOcean 大きめのマイルストーンとしては、 * do-agentによる監視、モニタリングの提供 * ロードバランサの提供 があるようです。 do-agentについてはもう動き出していますね。私も先日少し触ってみました。 * DigitalOceanがリリースしたdo-agentとはどういうものなのか ロードバランサは今まで無かったのでFloating IP(EIPみたいなやつ)と自分で(もしくはセットアップ済みのイメージを使って)立てたロードバランサを使った冗長化の仕組みが、コミュニティのチュートリアルで解説されたりしていました。 * What is High Availability? | DigitalOcean ほかにはDigitalOceanのミッションが語られていました。曰く、「インフラを簡素化し、開発者が夢中になるような体験の創造」。...多分そんな感じ。 simpl
1 min read
Read access key from Vault with Terraform
terraform

Read access key from Vault with Terraform

ここ最近terraformのvaultプロバイダについて試していました。 * terraformのvaultプロバイダを試す * terraformでvaultから値を取得する方法 * Solved Vault data source error その成果として、terraformで管理している個人サーバのアクセスキーをvaultで管理し、terraformで利用してみます。 これまで main.tfのあるディレクトリでdirenvを使い、アクセスキーを環境変数で設定していました。 export DIGITALOCEAN_TOKEN="XXXXXXXX" これから vaultにアクセスキーを格納し、terraformから呼び出すようにしました。 data "vault_generic_secret" "digitalocean" { path = "secret/digitalocean" } provider "digitalocean" { token = "${data.vault_generic_secret.digital
1 min read
What is do-agent by DigitalOcean
digitalocean

What is do-agent by DigitalOcean

1月4日にDigitalOcean公式ブログでdo-agentなるものの発表がされました。 * Improved Graphs: Powered by the Open Source DO Agent これが一体どういったものなのか、記事を読んで使ってみたのでメモしておきます。 do-agentとは 以降の引用部分は、記事から引っ張ってきたものです。 DigitalOceanはこんな感じで、立ち上げたサーバに対し申し訳程度のグラフダッシュボードを管理画面にて提供しています。 do-agnetは、このグラフをもっと有用なものにするためのツールで、サーバにインストールして使うものです。 開発はオープンソースで行われています。 * GitHub - digitalocean/do-agent: Collects system metrics from DigitalOcean Droplets より簡単に、より正確に、より詳細なメトリクスをモニタリング出来るようにすることで利用者のトラブルシューティングのスピードを向上させたい、という意図がある
4 min read
去年より個人ブログのポスト数を2倍くらい増やせたのでなぜなのか書く
ghost

去年より個人ブログのポスト数を2倍くらい増やせたのでなぜなのか書く

この記事はfeedforceアドベントカレンダーの11日目の記事なんだからね! * feedforce Advent Calendar 2016 - Adventar 昨日は@tmd45さんのターンでした。私も脂肪が増えてきた気がするので減らしていこうと思います(戒め)。まずは野菜だ!(ちなみに最初フト「れ」ない話に空目して関連する人物が3人ほど脳内サジェストされました。) * フトらない話 - TMD45'β'LOG!!! さて、今回は「分散惑星間データセンター(Grid Interplanetary Data Center)時代のデータ通信技術」について書こうとしたのですが、すごい難しそうなので諦めました。 公転の関係で季節によって通信先の惑星とのレイテンシが変わったり、公転の関係で通信先の惑星が太陽の向こう側に隠れると通信できなくなったり、太陽風とか重力レンズ効果を考慮しないとだめとか多分そんな感じです。 ていうかそもそもまだ地球以外の惑星にデータセンターと呼べるものがないのでは?(怒) なので今回は、去年よりブログのポスト数が増やせたことに関して
5 min read
Improve my terraform modules
terraform

Improve my terraform modules

以前terraformのmain.tfをモジュールに分割した際に、モジュール同士で変数をやり取りする方法について書きました。 モジュール間の変数のやり取りはregion = "${droplet_region}"みたいに書く Split main.tf into modules, my server was dead しかし、最近になって以下のようなエラーが出るようになっていました。 $ terraform plan There are warnings and/or errors related to your configuration. Please fix these before continuing. Errors: * invalid variable syntax: "droplet_region". If this is part of inline `template` parameter then
2 min read
Split main.tf into modules, my server was dead
terraform

Split main.tf into modules, my server was dead

このサイトが動いているサーバはDigitalOceanで、terraformで管理しています。 最近、main.tfを見ていて見づらいなと感じたので(行数は100行もないけれど大半が変更しない行だしいつも目で飛ばしてる行だった。)moduleを使ってスッキリさせようと思い立ちました。 * Modules - Terraform by HashiCorp 結果、main.tfが大分すっきりしました。 variable "default_key" {} variable "mailgun_key" {} module "droplet" { source = "./modules/digitalocean/droplet" default_key = "${var.default_key}" } module "networking" { source = "./modules/digitalocean/networking" mailgun_key = "{var.mailgun_key}" } モジュールについてのメモ モジュールは2個
6 min read
Create swap with cloud-config
swap

Create swap with cloud-config

digitaloceanでcloud-configを使ってサーバ初期起動時にswapが有効になるようにしてみる。 * How to enable linux swap on boot? cloud-configの作成 こんな感じのcloud-config.ymlを書く。fstabへの記述はansibleでやっているので端折ったが、ここまでやるならfstabの編集までcloud-configの責務にしたほうが良さそう。 #cloud-config runcmd: - fallocate -l 2G /swapfile - chmod 600 /swapfile - mkswap /swapfile - swapon /swapfile 動作確認 実際にdropletを立てて確認する(もっと楽な方法無いかな…)。 doctl compute droplet create cloud-config-test --region sgp1 --image centos-7-0-x64 --size 512mb --user-data-file
1 min read
How to enable linux swap on boot?
digitalocean

How to enable linux swap on boot?

土日に突然メモリ空き容量アラートがたくさん来たのでmackerelみてみたら、swap領域が消えてた! journal logの該当の時間帯をjournalctl --since="2016-10-02 02:00:00" --until="2016-10-02 02:30:00"で見てみると、システムがrebootされていた。 10月 02 02:22:06 ponpokopon.me systemd-logind[446]: Power key pressed. 10月 02 02:22:06 ponpokopon.me systemd-logind[446]: Powering Off... 10月 02 02:22:06 ponpokopon.me systemd-logind[446]: System is
3 min read
Backup Droplet
digitalocean

Backup Droplet

このblogのbackupどうしようか考えていて、ghostはwordpressみたいにバックアッププラグインがあって毎日S3に転送、みたいなことはできない。 バックアップスクリプト書いてcronで叩こうかと思ったものの、どうせそのうちblog以外もなんか動かすしサーバーごとバックアップとることにした digitaloceanのdropletのバックアップを取る方法は2つある 1つはsnapshotで、もう1つはbackups。違いはいくつかあって、 snapshot backups 費用 無料 対象droplet費用の20% 自動 No Yes 電源 シャットダウンされる シャットダウンされない みたいな感じ 世代は4世代らしい。もし何らかの理由でバックアップが失敗した場合は、その分の料金は発生しないとのこと。(4世代中1世代のバックアップが失敗したら、費用はdroplet費用の15%になる) バックアップの周期は1週間毎で、タイミングは指定したウインドウ内で実行される その辺の話は、以下のフォーラム・FAQでされていた(digi
2 min read
Provider 'digitalocean' not found
digitalocean

Provider 'digitalocean' not found

terraformアップデートしたら $ go get -u github.com/hashicorp/terraform 使えなくなった(´;ω;`) $ terraform plan -var do_token=$DIGITALOCEAN_TOKEN There are warnings and/or errors related to your configuration. Please fix these before continuing. Errors: * 1 error(s) occurred: * Provider 'digitalocean' not found 本来なら、terraform-provider-digitaloceanとかterraform-provider-awsみたいなバイナリもないとだめなのだが、コンパイルされて~/.go/bin以下に置かれたのがterraformバイナリのみだったのが問題っぽい なぜそうなるのかは謎 再インストールしてもダメだったので諦めた 何の根拠もなくbrewで入れなおした
1 min read