Lorentzca

Lorentzca

Manage jobs from Nomad UI
nomad

Manage jobs from Nomad UI

このブログは Ghost というブログプラットフォームを使用し Nomad クラスター上で動作しています。 Nomad クラスター上で Ghost ブログを動作させるこのブログは数年間単一のサーバーで稼働していました。 学習も兼ねてわざわざ自前でサーバーを運用していたのですが、最近新しい構成に移したくなり、Kubernetes の流行もあってクラスターやマイクロサービスといった時代の流れに乗るべく、Nomad クラスターへの移行を行いました。 Nomad クラスターの作成までは下記記事にまとめています (インフラやクラスターの設定等はここからさらに変更しています)。 * Nomad クラスターを作成する 今回はこの Nomad クラスター上で Ghost を動かすところまでをまとめます。 構成 以下の通り、DigitalOcean のマネー…ゆるふわキャンパーLorentzca 色々悩んだ結果、Docker イメージ上にブログのコンテンツを全て収めており、これを Nomad ジョブとして動かす形で運用しています。 これはメリットもあるのですが、一番大きなデメリットとして更新が面倒と
4 min read
Replace road bike handlebars with gravel handlebars
roadbike

Replace road bike handlebars with gravel handlebars

完成車 (Trek 1.2 2014) のハンドル (Bontrager Race VR-C) から日東の M137SSB に変えてみました。 速度よりは長距離を快適に走りたいのと、キャンプ時に荷物を積載しても安定して走りやすいように幅が広いグラベル用ハンドルが気になっていて、変えてみました。本当は Trek 車なので Bontrager の Bontrager GR Elite Road Handlebar にしたかったのですが在庫が無さすぎてボツ。日東は気になるメーカーだったのもあり今回は日東を選択してみました。 M137SSB はグラベルロード向けのハンドルで、フレアハンドル。 サイズ選びに迷ったのでメモ。 現状の確認 Bontrager Race VR-C Road Handlebar の 440mm を使用。ロードバイク用の普通のハンドルなので、上ハンドルも下ハンドルも幅は変わらず 440mm。 この幅については特に不満は無い&舗装路がメインなので上ハンドルについてはこれ以上広げる必要も今のところは無く、上ハンドル 440mm のもので合わせたい。 M137
3 min read
Installing wood fishing grip to blank
fishing

Installing wood fishing grip to blank

フィッシュテールグリップというグリップがあり、これに一目惚れ…。あまりにも良い。 View this post on Instagram A post shared by E-No.Products/AkihiroEnomoto (@e_no_p) E-No.Products という、メインはアクセサリーを制作されているショップから。代表の榎本さん自身が釣り人で元々自分用に作ったのがきっかけらしい。うーん良い。 このフィッシュテールグリップはサイズがオリジナルとナローの 2 種類あり、ナローの方がコンパクト。トップ用にダイレクトリールを使っている自分にはナローが合いそう。ダイレクトリールもコンパクトなので。 それで、このグリップは上の Instagram にあるようにハンドルとして完成品も売っているけど、グリップ単体としても売っている。私はグラスアイのハンドルを好んで使っているので、ハンドルブランクは、グラスアイのエルゴノハンドルと合わせたい。 エルゴノハンドル | バス釣り、トップウォーター【Glass Eye】ルアーやハンドル、ロッドなどの通販ルアー&クラフト【グラス
5 min read
Road bike winter clothing
roadbike

Road bike winter clothing

真冬にサイクリングする際の服装が固まってきたのでメモ。 真冬にサイクリングするようになる前から真冬ハイキング (低山) は行っていたので、初めはそのまま服装を流用していたのですが厳しい部分があったのでその部分だけサイクリング用に買い足した。 0 度くらいまでなら結構快適な服装です。0 度未満になると足先が寒くなってくる感じ。足先以外はまだいける。あと休憩時等、動かないと寒い。動いていれば全然平気という服装になります。 足 * 真冬のハイキング用の靴下: 厚手なので保温してくれる。ハイキング用のものを流用。 * SPD シューズ: 普通の SPD シューズ。 * シューズカバー: 靴の上から被せる防寒カバー。最初これの存在自体知らなかったのですが、真冬に走るとつま先が痛みを感じるほど寒くなることがわかったのでみんなどうしてるのかググったらカバーの存在を知って購入。ただし 0 度を下回るとカバーをつけてもだんだん寒くなってくる。 脚 * 真冬用のサイクリングタイツ: 初めは冬ハイキング用のトレッキングパンツとメリノウールタイツを履いていたのですが、ロードバイクのチェ
3 min read
Replaced wheels and tires on a road bike (Trek 1.2 2014)
roadbike

Replaced wheels and tires on a road bike (Trek 1.2 2014)

一昨年に現在住んでいる町田市 (と相模原市の境界) に引っ越してきて以来、自転車熱が再燃しております。 小学生時代から MTB (もちろんルック車 (= パーツ等が街乗り用の自転車と同じな見た目だけの MTB) でしたが…) に乗って釣りに行くことが趣味だったのもあり自転車はずっと好きで、高校生になってからはルック車ではない MTB (SPECIALIZED の HR CX) を購入し釣りやキャンプ、河川敷の未舗装路を走ったり、社会人になってからは佐渡島を一周するためにロードバイクを購入。その後あまり出番がない状況だったのですが、アウトドア大国の相模原付近に引っ越し都内のロードバイク乗りの間では有名な尾根幹も超近所ということで、ロードバイクにハマり直した形です。 現在使用しているロードバイク Trek の 1.2 (2014 年版) に乗っています。もう廃盤のエントリー向けロードバイクです。 * 1.2 → 製品紹介ページ * 1.2 H2 Compact → 旧モデルのアーカイブ アルミフレームでフォークはカーボン、コンポーネントは SORA の 3500 番 で 9
6 min read
Make your own ultralight windscreen
camp

Make your own ultralight windscreen

前回に引き続きクッカーネタです。 Snow Peak トレック 900最近ブログを書けてなくてモヤモヤしているのでリハビリにクッカーの話でも…。 トレック 900 と素材日本のキャンプ用品メーカー、Snow Peak からは色々な種類のクッカー (調理器具) が出ていますが、今手元にあるのがトレック 900 です。重量は 265g。 * トレック 900 [https://ec.snowpeak.co.jp/snowpeak/ja/%E3%82%AD%E3%83%A3%E3%83%B3%E3%83%97/%E8%AA%BF%E7%90%86%E5%99%A8%E5%85%
5 min read
Trek 900 Review
camp

Trek 900 Review

最近ブログを書けてなくてモヤモヤしているのでリハビリにクッカーの話でも…。 トレック 900 と素材 日本のキャンプ用品メーカー、Snow Peak からは色々な種類のクッカー (調理器具) が出ていますが、今手元にあるのがトレック 900 です。重量は 265 g。 * トレック 900 トレック 900 には↑のアルミ版と、チタン版がありますが、私はアルミ版を使用しています。理由はお米を炊きたいから。 どういうことかというと、アルミとチタンの熱伝導率の違いによってお米の炊きやすさが異なるからです。以下の通りアルミはチタンに比べて熱伝導率が非常に高いです。つまり、アルミは火が当たっている場所以外にも熱が伝わりやすい、ということになります。 以下は美味しいご飯の炊き方が書いてあるページですが、強火から弱火に移行するフェーズがあります。 * 奇跡の炊飯法 チタンの場合、この弱火のフェーズで火が当たっている場所のみ熱せられ、全体が高温にならないため、クッカーの下部と上部で温度の差が発生し、これによりうまく炊飯できない状態になっている気がします (ちゃんと温度を計ったこ
2 min read
Monitor the broadband speed with the Mackerel
mackerel

Monitor the broadband speed with the Mackerel

最近気持ちが忙しくてブログ更新久しぶりな気がする。。タイトルの通りネットワーク回線の速度を監視し始めたのでメモ。 モチベーション SNS の方で呟いてましたが引越しすることになりました。 引っ越すからベッド分解した´д` ; — †深淵の覚醒者† (@lorentzca) July 5, 2020 我々インターネットで生活している者たちにとって引越しで一番気になるのは回線の速度ですよね。次のおうちでも光回線が通っているのはもちろん確認済みなのですが、速度や安定性が気になるところです。 そこで回線速度を監視し、引越し後どれくらいの違いが出るか確認することにしました。 結果は以下。Wi-Fi での数値です。有線だと数倍早かった…。 有線、無線両方監視しようと思いましたが次のおうちは実質無線がメインになりそうなので、無線だけ監視してます。 方法 最近 Raspberry Pi と Greengrass の組み合わせを試してます。 * AWS IoT Greengrass とは - AWS IoT Greengrass Greengrass ではデバイス
4 min read
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
Get data from Vault with Nomad task
vault

Get data from Vault with Nomad task

最近 Vault クラスターの作成と Nomad と Vault の統合を行いました。 Vault を HA モードで使うこのブログの SSL/TLS 証明書を Vault [https://www.vaultproject.io/] で管理しようと考えています。 * Let’s Encrypt のクライアントを Nomad ジョブとして実行し SSL 証明書を取得してみた [https://blog.lorentzca.me/run-letsencrypt-client-with-nomad-job/] 現在サーバーは 3 台でクラスターを組んでおり、 Nomad [https://www.nomadproject.io/…ゆるふわキャンパーLorentzcaNomad と Vault を統合する現在 Nomad [https://www.nomadproject.io/
3 min read
Script to manage blog
ghost

Script to manage blog

現在このブログを Nomad のタスクとして Docker で動かしています。 Nomad クラスター上で Ghost ブログを動作させるこのブログは数年間単一のサーバーで稼働していました。 学習も兼ねてわざわざ自前でサーバーを運用していたのですが、最近新しい構成に移したくなり、Kubernetesの流行もあってクラスターやマイクロサービスといった時代の流れに乗るべく、Nomad クラスターへの移行を行いました。 Nomad クラスターの作成までは下記記事にまとめています (インフラやクラスターの設定等はここからさらに変更しています)。 * Nomad クラスターを作成する [https://blog.lorentzca.me/create-nomad-cluster-on-digitalocean/] 今回は…ゆるふわキャンパーLorentzca が、現在の構成だとブログの更新が面倒…。ローカルに Docker イメージを持ってきてブログを更新、docker commit, docker push する必要があります。push 後サーバーにログインし Nomad タスクを書き換え
2 min read
Updated to ghost 3!
ghost

Updated to ghost 3!

このブログは Ghost で動いています。 * ghost - ゆるふわキャンパー 去年の 10/22 に Ghost の新しいメジャーバージョンが公開されました。これでバージョン 3.x に突入! * Ghost 3.0 3.0 のリリースはこれまでで最も規模の大きいリリースだったようです。 アップデート方法 (独自 Dockerfile 使用) と言っても私の場合以下の通り公式の Dockerfile を改造して使っているので普通の方法では無いです…。 * Nomad クラスター上で Ghost ブログを動作させる 改造 Dockerfile は GitHub に公開しており手順もメモしてあります。 * stateful-ghost-image/README.md at 524a1261038e381997b5e9b3078c301fc52f684e · lorentzca/stateful-ghost-image · GitHub 新機能 3.0 から追加された新機能は公式ブログで紹介されているものを眺めてみると以下があるよ
5 min read
Integrate Nomad and Vault
nomad

Integrate Nomad and Vault

現在 Nomad と Consul を使用してこのブログを動かしています。 * nomad - ゆるふわキャンパー * consul - ゆるふわキャンパー 例えば DB のパスワード等の機密情報を Nomad のジョブで扱いたい場合があります。Nomad は環境変数から機密情報を取得することもできますが、Vault と連携することで Vault の暗号化された KVS から機密情報を取得することが可能になります。 * Vault Integration | Nomad by HashiCorp 今回、Nomad と Vault の統合を設定してみたのでメモします。 Nomad の設定 Nomad の設定としては以下のように vault スタンザを追加するだけです。 ※今回、簡単のため Vault 側で TLS の設定を無効にしていますが TLS を有効にしている場合は以下に証明書等の設定が追加されます。 vault { enabled
5 min read
Use Vault with HA mode
vault

Use Vault with HA mode

このブログの SSL/TLS 証明書を Vault で管理しようと考えています。 * Let's Encrypt のクライアントを Nomad ジョブとして実行し SSL 証明書を取得してみた 現在サーバーは 3 台でクラスターを組んでおり、 Nomad と Consul でアプリケーションを管理しています。ここに Vault を追加しました。 Vault の HA 構成 1 台で Vault を運用するのは心許ないので、 3 台でクラスターを組み可用性を高めてみます。Vault は high availability (HA) モードで動かすことができます。HA モードでの Vault はアクティブとスタンバイの状態があります。Vault クラスターは 1 台のアクティブノードと複数のスタンバイモードから構成されます。それぞれの役割は以下です。 * アクティブノード: 読み取りと書き取りの全てを処理する。
4 min read
Provide dependencies to between Nomad tasks with lifecycle stanza
nomad

Provide dependencies to between Nomad tasks with lifecycle stanza

Nomad のタスク間に依存関係を持たせるには何らかの工夫が必要でした。 * Nomad ジョブのタスク間の依存関係をどのように実現するか考える が、 v0.11 beta で依存関係を持たせることのできる機能が追加されました! 🎉 * Announcing HashiCorp Nomad 0.11 Beta Key highlights of this release: ・Container Storage Interface (CSI): Deploy stateful applications on Nomad using storage volumes from any third-party provider of choice. Read more here. ・Autoscaling: Dynamically scale application instances based on real-time load
2 min read
Generate bolt targets from Terraform state
bolt

Generate bolt targets from Terraform state

現在個人サーバーの管理を Terraform で、サーバーのプロビジョニングを Bolt で行なっています。 * terraform - ゆるふわキャンパー * bolt - ゆるふわキャンパー Bolt ではインベントリファイルを使用してターゲットとなるサーバーを指定できます。インベントリファイルは例えば以下のような内容です。 groups: - name: production targets: - web.example.com - db.example.com - app.example.com config: ssh: host-key-check: false user: centos private-key: ~/.ssh/id_rsa run-as: root ↑のようにターゲットのサーバーを指定できるのですが、ドメイン名ではなく Terraform で作成し動的に変化、増減する IP
2 min read
Cloud provisioning with Bolt
bolt

Cloud provisioning with Bolt

このブログを動かしているサーバーは Terraform で構築しています。 * Nomad クラスターを作成する とりあえずでプロビジョニングも Terraform で行なっていたのですが、いいかげん辛くなってきたので Bolt を使ったプロビジョニングに移行しました。 * Welcome to Bolt ツールとしては Ansible を今まで個人サーバーを構築する際に使っていたのですが、Bolt を今まで使ったことがなかったので選んでみました。 Bolt の概念 Bolt は Puppet Lab の開発した割と新しめのオーケストレーションツールです。Puppet との違いは対象のサーバーにエージェントソフトウェアを入れなくても使える点です。 Puppet の知識がなくても使う事ができ、やろうと思えば Puppet の機能を使用することも出来ます。 Bolt は任意のスクリプトやコマンドを複数のサーバーに実行する事ができます。 任意のスクリプトに説明などのメタデータを加えるなど再利用生を持たせたものをタスクと呼びます。 複数のタスクを 1 つ
1 min read
Mounting Docker volumes into Nomad tasks allocation directory
nomad

Mounting Docker volumes into Nomad tasks allocation directory

Nomad はグループ (タスクの集まり) 内で共有可能なディレクトリを提供しておりタスクからは環境変数 NOMAD_ALLOC_DIR または /alloc ディレクトリを直接参照することで使用可能です。 * Environment - Runtime | Nomad by HashiCorp また Nomad のタスクは Docker が使用できます。 * Drivers: Docker | Nomad by HashiCorp そこで、Docker コンテナの生成物をタスク間で共有できないか試したのですがすんなりできなかったのでメモ。 構成 以下のようなバッチジョブの構成で試します。 * Docker ドライバーを使用したタスクで成果物を作成。 * 後続の Exec ドライバーを使用したタスクで成果物を使用 なおこのようなタスク間に依存関係を持たせたい場合、現在 Nomad の機能としては存在しないので以下のように何かしらの工夫をする必要があります。 * Nomad ジョブのタスク間の依存関係をどのように実現するか考える 課題
2 min read
Provide dependencies to between Nomad tasks
nomad

Provide dependencies to between Nomad tasks

最近 Nomad をチマチマ触っています。 * nomad - ゆるふわキャンパー Nomad のジョブとしてバッチジョブを実行できるのですが、ジョブ内に複数タスクがある場合、タスクは並列で実行されます。 このためタスク間に依存関係がある場合、下流のタスクが失敗してしまうことに気付きました…。また、現在 Nomad にタスク間の依存関係を表現する機能はありません。 既存の議論 タスク間の依存関係を表現できるようにしたいという機能要望は数年前からあり、以下の Issue で議論されています。 * Provide for dependencies between tasks in a group · Issue #419 · hashicorp/nomad · GitHub 今後の予定としては依存関係の機能を追加予定とのことですがまだ目立った動きはなさそう。 Issue でワークアラウンドとして以下が紹介されていますが、よくわからない…。AST is 何?抽象構文木?Consul でタスクのヘルスチェックを行い依存関係を表現しているようですがちょっとよくわ
3 min read
Try TimeTree API
timetree

Try TimeTree API

TimeTree というカレンダーアプリを使用しています。 * TimeTree People TimeTree には API がありますが、最初はイベントを取得する API がありませんでした。が、最近追加されました! TimeTree ついに予定取得 API が!https://t.co/VRmhNfJRVC — †深淵の覚醒者† (@lorentzca) January 28, 2020 そして Alexa スキルも公開されていました! * Amazon.co.jp: TimeTree / タイムツリー: Alexaスキル 私はイベント取得 API を今から帰るボタンに使いたいと思っているので、 * 今から帰るボタン v2 それに先立って軽く触ってみます。 イベントの取得 イベントを取得するための認証方法として、現在アクセストークンと OAuth 認証の二つが用意されています。 * APIのはじめかた 今回はアクセストークンを使用してみます。アクセストークンはすぐ発行されるので環境変数にでも入れておきます。 当日以降
3 min read
Add the Eucalyn keyboard layout
iris

Add the Eucalyn keyboard layout

最近 Iris というキーボードを組み立て使い始めました。 * iris - ゆるふわキャンパー 元々 Planck というキーボードを使用しており、素晴らしいキーボードでとても気に入っていたのですがエンド・ゲームを目指すために左右分離型のキーボードに手を出してしまったのでした。 ※エンド・ゲームが一体何を指すのかは諸説あり、お金がなくなったときを指すという意見や、はたまた検索をやめた時であるという意見もあります。 私がキーボードを組み立て始めた理由の一つに、より手が疲れないキーボードが欲しいというものがありますが、左右分離型のカラムスタッガード配列である Iris を組み立てたことによりこの点はとても満足のいくものとなりました (現時点では…)。 キーボードの物理的な形状以外に手の負担を少なくする方法としては、指の移動をホームポジションからなるべく崩さないようにする、という方法もあります。より効率よく文字を入力するために様々なキーのレイアウトが考案されており、一般に普及しているレイアウトの QWERTY 以外に Dvorak や Colemak など様々なレイア
3 min read
Build and release keymap on GitHub Actions
iris

Build and release keymap on GitHub Actions

最近 Iris という自作キーボードを組み立てて使い始めました。 * Iris キーボードを組み立てた! 自作キーボードの利点の一つとしてキーマップを自由に変更可能という点があります。キーマップの変更はファームウェアを書き換えることで行います。ファームウェアは現在恐らく自作キーボード界のデファクトスタンダードである qmk_firmware を使うことが多いと思われ、Iris も qmk_firmware に対応しているものの一つです。 * QMK Firmware qmk_firmware は有志の手によって GUI ツールが用意されておりますが私は現在 GitHub 上でコードベースで管理しております。理由としては変更の履歴を残しておきたいからです。他にもありますが要するに GitHub だと管理が楽! Iris を組む前は元々 Planck という自作キーボードを使っておりそちらも GitHub 上でファームウェアを管理していました。また、CircleCI と連携させてタグをつけてプッシュした場合にビルドとリリースを自動で行うようにしていました。 これ
4 min read
I'm going home button v2
aws

I'm going home button v2

私は毎日帰宅する際に「今から帰るボタン」を押して LINE メッセージを送っています。 * 帰りますボタンを作った 最近このボタンに機能を追加しより便利にしてみました。 追加した機能 Google カレンダーと連携し、ボタンを押したタイミングからその日の 23 時 59 分までの間に始まるイベントがある場合 (飲み会とか)、イベントの内容を送るようにしてみました。 以下のような感じです。 日を跨ぐ可能性も考慮して終わりの時間には日付も入れるようにしています。 Google カレンダーからイベントを取得する方法 これ調べるのが結構大変だった…。混乱ポイントだったのが、まず適当にググってみたところ旧 Google カレンダー API の情報とごっちゃになっておりそこが混乱の元でした。Google 公式ドキュメントでも旧 API の情報が残っていて?ややこしい感じでした。 現在信頼できる公式ソースは以下。 * Calendar API  |  Google Developers 旧カレンダー API では API キーでアクセスできたみた
3 min read
Iris keyboard Build
mech-keyboard

Iris keyboard Build

現在 Planck という自作キーボードを使っています。 * planck - ゆるふわキャンパー Planck はとても気に入っており特に以下の点を気にいっています。☺ * 格子型の配列が意外に使い心地が良い。見た目も好き。 * コンパクトで手が疲れにくい。 が、欲を言えば * 分離型だとさらに疲れにくそう。 * もう少しエルゴノミクス寄りでもいいかも。 という気持ちもあり、設計から自作をするのもちょっと自信がまだ無かったので Planck と同じくキット型の自作キーボードを漁ってみました。MiniDox 等と迷った挙句、Iris というキーボードが良さげだったので PCB 等を買いました。 * Iris Keyboard の PCB を購入しました 上記記事から気付いたら 2 億年ほどの時が経ち、細々と足りない部品を調達しようやく今回組み立てるに至りました! 上記記事からさらに組み立てる際に買い足したものや、組み立てる際に困ったこと、感想を記録していこうと思います (なお、この記事は早速 Iris で書いております 😊)。
5 min read
Using Trello to manage private projects
trello

Using Trello to manage private projects

最近、Trello でやりたいことを管理しています。 これが割といい感じなのでメモしておきます。 やりたいこととは 主に以下の「やりたいこと」を対象として管理しています。 * 書きたいブログのテーマ * 作りたいツール * 試してみたいサービスや機能 * 個人サーバーの運用ネタ 上記の通り個人プロジェクト (と言うには小規模ですが) 的な思いつきや小ネタが対象となっています。 今まで 今まではずっと Any.do に思いついたことを書き込んでいましたが、以下の課題がありました。 * 今日やること、明日やること、のように管理されるがもっとフワッとした単位で管理したかった。 * 思いつきでどんどん書き込んでいるので 100 個以上のタスクが溜まっていた。 * いざ作業開始したとして平日の業務後や土日にちまちま進める感じなので、そういったスケジュール感にマッチしない。 というわけで Any.do は何も悪くなくお前の使い方がおかしかったんだ!という話です。 (最初は普通に使っていたんですがいつのまにかやりたいことを雑に書き込むようになって
2 min read