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

  • Lorentzca
    Lorentzca
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:

  • Lorentzca
    Lorentzca
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 の機能を使用することも出来ます。

  • Lorentzca
    Lorentzca
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 ドライバーを使用したタスクで成果物を作成。

  • Lorentzca
    Lorentzca
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

  • Lorentzca
    Lorentzca
3 min read
Add the Eucalyn keyboard layout
iris

Add the Eucalyn keyboard layout

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

  • Lorentzca
    Lorentzca
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 という自作キーボードを使っておりそちらも

  • Lorentzca
    Lorentzca
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 の情報が残っていて?ややこしい感じでした。

  • Lorentzca
    Lorentzca
3 min read
Iris keyboard Build
mech-keyboard

Iris keyboard Build

現在 Planck という自作キーボードを使っています。 planck - ゆるふわキャンパー Planck はとても気に入っており特に以下の点を気にいっています。☺ 格子型の配列が意外に使い心地が良い。見た目も好き。 コンパクトで手が疲れにくい。 が、欲を言えば 分離型だとさらに疲れにくそう。 もう少しエルゴノミクス寄りでもいいかも。 という気持ちもあり、設計から自作をするのもちょっと自信がまだ無かったので Planck と同じくキット型の自作キーボードを漁ってみました。MiniDox 等と迷った挙句、Iris というキーボードが良さげだったので PCB 等を買いました。 Iris Keyboard の PCB を購入しました 上記記事から気付いたら 2 億年ほどの時が経ち、

  • Lorentzca
    Lorentzca
5 min read
Using Trello to manage private projects
trello

Using Trello to manage private projects

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

  • Lorentzca
    Lorentzca
2 min read
Convert ePUB file to Mobi file with the KindleGen command
kindle

Convert ePUB file to Mobi file with the KindleGen command

最近 Kindle Paperwhite を買いました。 本はアナログ派だったのですが引っ越ししてから通勤時間が短くなるなど生活の変化があり、出したり引っ込めたりがしやすい Kindle を買ってみました。が、思った以上になんだかリズムと合ってしまい最近購入する本はほぼ電子版を買うようになりました…。目も疲れにくいし電子ペーパーすごいな。あと前職のパイセンとキャンプに行った時にパイセンが Kindle を持ってきていてなるほどな〜というのもあり… (キャンプは意外と暇になるし自然の中で本を読むのは気持ちが良い)。 電子ペーパー - Wikipedia さて、最近 O'Reilly Japan Ebook Store で書籍を購入したのですが、ダウンロードできる形式が ePub か PDF のみでした (これは書籍によるみたいです)。ePub

  • Lorentzca
    Lorentzca
1 min read
System job is suitable for running mackerel-agent with Nomad
nomad

System job is suitable for running mackerel-agent with Nomad

現在 Nomad クラスターを展開しこのブログを運用しています。 nomad - ゆるふわキャンパー Nomad クラスターは現在 3 台のサーバーから構成されており、それぞれのサーバーは Mackerel でモニタリングしています。Mackerel へサーバーのメトリクスを送るためには mackerel-agent が必要ですが、mackerel-agent は Docker イメージが用意されているので、これを Nomad のジョブとして動かし Nomad クラスターの各サーバーを監視しています。 mackerel/mackerel-agent ジョブのタイプは Service タイプを使っており、各サーバに対し 1

  • Lorentzca
    Lorentzca
2 min read
Run Let's Encrypt client with Nomad job
nomad

Run Let's Encrypt client with Nomad job

SSL 証明書の取得の自動化を可能とするプロトコルとして ACME (Automated Certificate Management Environment) がありこれの実装として Let’s Encrypt というサービスがあります。 Let’s Encrypt のクライアントとしては certbot や lego があります。どちらも以下のように Docker イメージが公開されており、つまり Nomad のジョブとして簡単に動かすことが可能です。 Docker Hub - certbot Docker Hub -

  • Lorentzca
    Lorentzca
6 min read
Improved blog search page
algolia

Improved blog search page

このブログの内容は Algolia にインデックスし Algolia API を使って検索できるようにしています。自分の記事を見返すタイミングがしばしばあるので、その時はこれを使い Alfred ワークフローからインクリメンタルサーチして目的の記事を開いたり、あと地味にブログ内の静的ページとして検索ページを用意したりしています。algolia - ゆるふわキャンパー今回はそのブログ内の検索ページを改善してみました!Before:After:検索ページを設定してから長いこと (3 年くらい) 素朴な見た目のままだったのですが、しばらくみない間に Algolia のドキュメントが充実してきてフロントエンドさっぱりわからないマンでもなんとかチュートリアルを元にそれっぽいものができるような状態になっていたので (ありがたい 🙏) 今回検索ページの改修に踏み切ってみたのでした。主に以下の点で改善されています。 😊 検索結果が大きく、見やすく表示されるようになった。 記事の概要を出すようにした。 記事のサムネイル画像を出すようにした。 記事の投稿日時を出すようにした。 検索結果の数、検索にかかった時間を出すようにした。

  • Lorentzca
    Lorentzca
2 min read
Create a new Dropbox Paper document from Alfred workflow
alfred

Create a new Dropbox Paper document from Alfred workflow

Alfred ワークフローから Dropbox Paper ドキュメントを作成できるようにしてみました。この記事は以下のシリーズの続きになります (台風で…!暇…!)。Dropbox Paper のドキュメントを一覧して開くことのできる Alfred Workflow を作成したDropbox Paper ワークフローにドキュメントのコピー機能を追加しました今までは Alfred から dbp new すると Dropbox Paper のトップページに飛ぶ挙動でしたが、タイトルを入力するとそのタイトルのドキュメントの編集画面に飛ぶ方ようにしたかったので改善してみました。これからは dbp new <タイトル> を実行すると直ぐに編集画面に飛べます。方法これも基本は

  • Lorentzca
    Lorentzca
2 min read
Add copy action to Alfred Dropbox Paper Workflow
alfred

Add copy action to Alfred Dropbox Paper Workflow

先週 Dropbox Paper のドキュメントを一覧し開く Alfred ワークフローを作成しました。Dropbox Paper のドキュメントを一覧して開くことのできる Alfred Workflow を作成したこれで直ぐにドキュメントにアクセスできるようになって便利になったのですが、一方課題も…。課題Dropbox Paper は主にブログの下書き用に使っているのですが、Dropbox Paper のドキュメントをコピーして Ghost のエディターに貼り付けると表示が崩れるというかなり致命的な問題がありました。これでは不便すぎる…。Dropbox Paper はマークダウンで書けますが、どうやらコピーされたテキストはマークダウン形式にならないみたいです。そりゃそうか。解決方法Dropbox API ではマークダウン形式でドキュメントの内容を取得可能な API が用意されているので、これを使ってワークフローでリストされたドキュメントを選択するとその内容をマークダウン形式でクリップボードに保存する機能を追加しました。

  • Lorentzca
    Lorentzca
1 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

  • Lorentzca
    Lorentzca
1 min read
Dropbox Paper Alfred Workflow
alfred

Dropbox Paper Alfred Workflow

私は今までローカルの Dropbox フォルダ以下にブログ記事の下書きを保管していました。 MacDown というマークダウンエディタで下書きを作成、Alfred で下書きフォルダを開く、といった方法で運用していました。その辺については以下に細かく書いています。 去年より個人ブログのポスト数を2倍くらい増やせたのでなぜなのか書く この方法ですがそもそも Dropbox Paper を使えばローカルにファイル保存しなくていいし、マークダウン対応してるし、PC でもスマホでも関係なく使えるのでええやんと思い始め、Dropbox Paper を使ったフローに移行することにしました。 そこで引き続き Alfred でシュッと下書きを参照したり新規記事を作成出来れば嬉しいので今回そのような Alfred Workflow を作ってみました。 GitHub - lorentzca/alfred-dropboxpaper-workflow: Alfred Dropbox Paper

  • Lorentzca
    Lorentzca
3 min read
I changed my 1Password account to family type
1password

I changed my 1Password account to family type

私はパスワードの管理に 1Password を使用しています。 1Password は個人向けやエンタープライズ向け等いくつかの種類があり、今までは個人向けのプランを使用していました。そして最近個人向けプランからファミリープランに変更しました。 👪 家族を安全に守るためのパスワードマネージャー | 1Password 感想などメモしていく。 ちなみに以前 1Password を買い切り版からサブスクリプション版に変更した際の記事は以下です (2 年以上経つのか…)。 1Passwordを買い切り版からライセンス版に移行しました ファミリープランに変更した理由 といっても 2 つしかないですが…。 マネーフォワード ME のアカウントを共有したかったから これが一番の動機です。 💰 現在妻と二人で暮らしているのですが、生活費や諸々のお金の動きを見える化したくなりました。私は元々マネーフォワード ME を使用しておりかつプレミアム会員なので、いい感じに可視化ができているのですが、個人ではなく世帯としての支出もいい感じに見えるようにしたいので色々考えた結果アカウントを共有することにしました (二人とも自分の支出の履歴を見られることに抵抗が無い)。 本来ならマネーフォワード

  • Lorentzca
    Lorentzca
3 min read
Run mackerel-agent as a Nomad job
nomad

Run mackerel-agent as a Nomad job

最近ブログを動かしている環境を単一のサーバーから Nomad クラスターへと変更しました。Nomad クラスター上で Ghost ブログを動作させる以前からサーバーの監視を Mackerel を用いて行なっており、今回もクラスターを構成するノード上で mackerel-agent を起動し、監視を行います。ただし、 Nomad のジョブとして動かしてみます。Nomad のジョブとして mackerel-agent を動かす今までは単一の VPS を使っていたので mackerel-agent は普通にサーバーにインストールしていました。CentOS / RedHat にインストールする - Mackerel ヘルプ今回 Nomad を使うにあたりどのように mackerel-agent

  • Lorentzca
    Lorentzca
2 min read
Running Ghost blog on Nomad Cluster
nomad

Running Ghost blog on Nomad Cluster

このブログは数年間単一のサーバーで稼働していました。学習も兼ねてわざわざ自前でサーバーを運用していたのですが、最近新しい構成に移したくなり、Kubernetes の流行もあってクラスターやマイクロサービスといった時代の流れに乗るべく、Nomad クラスターへの移行を行いました。Nomad クラスターの作成までは下記記事にまとめています (インフラやクラスターの設定等はここからさらに変更しています)。Nomad クラスターを作成する今回はこの Nomad クラスター上で Ghost を動かすところまでをまとめます。構成以下の通り、DigitalOcean のマネージドロードバランサー配下に Droplet を 3台配置し、クラスターを構成しています。クラスターを構成するノードではそれぞれ Nomad と Consul が稼働しており、Consul でサービスディスカバリーを、Nomad でワークロードオーケストレーションを行なっています。稼働しているジョブNomad

  • Lorentzca
    Lorentzca
7 min read
OTOKOMAE CAMP #7
camp

OTOKOMAE CAMP #7

今年も男前キャンプに参加してきました!!⛺男前キャンプは水道橋にあるアウトドアをコンセプトにしたカフェバー、 BASE CAMP のオーナーである A-suke さんが主催しているイベントです。男前キャンプカフェ&バー BASE CAMP の紹介私は今回で3回目の参加となります。男前キャンプ#5に参加してきました!男前キャンプ#6に参加してきました!会場は月尾根自然の森キャンプ場でした。その名の通り、尾根にあるキャンプ場で森の中にある素敵な場所でした。キャンプ場の概要は以下。朝から入れる釣り堀がある直火は禁止ゴミは持ち帰り水道有りシャワー有りトイレ有り (汲み取り式)中央線梁川駅から徒歩で15分ほど (坂を登っていく)駅前に個人商店有り (9時開店) 今回の男前目標は、バックパック1つ、電車で参加木と木の間にロープを張り、張ったロープを使ってタープを設営する方法を試してみる薪は全て落ちている枝を使う (バックパックでそもそも薪持っていけないので)でした。出発〜

  • Lorentzca
    Lorentzca
6 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

  • Lorentzca
    Lorentzca
9 min read
Manage state files on Terraform Cloud
terraform

Manage state files on Terraform Cloud

先日発表された Terraform Cloud の Remote State Management 機能、絶対いいやつなので試してみます。 Introducing Terraform Cloud Remote State Management Terraform Cloud とは Terraform Cloud とは terraform のために作られた SaaS です。 以下のような機能が (今後公開予定の機能も含め) あります。 state ファイル管理ストレージ terraform を複数人で運用するためのコラボレーション機能 terraform

  • Lorentzca
    Lorentzca
3 min read