- これは何
- GitHub ActionsでIaCツールをガチャガチャした
- 飼っているサーバーのお手入れ
- Caddyを試した
- Software Designの購読を始めた
- 読んだ
- 昇降デスクを昇降できるようにした
- おわり
これは何
2026年1月の単発の記事にするほどでもない雑多な話題をまとめている。
GitHub ActionsでIaCツールをガチャガチャした
- stoneream/gha-terraform-poc: GitHub Actionsでterraformをplanしたりapplyしたりしたい
- stoneream/gha-ansible-poc: GitHub ActionsでAnsibleを走らせたい
飼っているサーバーのお手入れ
手動で管理していたサーバーを構築しなおした。
上述の検証はこのためにあった。
それと以前にミスってローカルのtfstateファイルを飛ばしたことが数回あるため、流石にそろそろCIで運用するか...となった次第。
検証用リポジトリはGithub ActionsでIaCツールを動かすことだけを目的としているため中身があまりにもお粗末な状態になっている。
実際に運用しているリポジトリを公開したいところだが、見られたくない情報もギュウギュウに詰まっているため割愛。
サーバーはLinodeを使っている。個人で使うには「お、ねだん以上。」であり、手頃にエンジニアフレンドリー。
Ansibleのユーザーを作るといったゼロイチの構築も手作業で行いたくなかったため、以下のようなStackScriptを書くなどした。
#!/bin/bash
# <UDF name="ansible_public_key" label="ansible user authorized public key" example="ssh-ed25519 AAA..." default="">
apt-get -q update && apt-get -q -y upgrade
ANSIBLE_USER="ansible"
SUDOERS_FILE="/etc/sudoers.d/${ANSIBLE_USER}"
useradd -m -s /bin/bash "${ANSIBLE_USER}"
mkdir -p "/home/${ANSIBLE_USER}/.ssh"
chmod 700 "/home/${ANSIBLE_USER}/.ssh"
echo "${ANSIBLE_PUBLIC_KEY}" | tee "/home/${ANSIBLE_USER}/.ssh/authorized_keys"
chmod 600 "/home/${ANSIBLE_USER}/.ssh/authorized_keys"
chown -R "${ANSIBLE_USER}:${ANSIBLE_USER}" "/home/${ANSIBLE_USER}/.ssh"
echo "${ANSIBLE_USER} ALL=(ALL) NOPASSWD: ALL" | tee "${SUDOERS_FILE}"
chmod 440 "${SUDOERS_FILE}"
これさえやってしまえばソッコーAnsibleで構築を始めることができてハッピー。
Caddyを試した
証明書の取得と更新を自動でやってくれるWebサーバー。
リバースプロキシとして使っている。
先述したサーバーでは、GrafanaやらチョットしたWebツールが走っている。
これまではNginx & Let's Encryptsのよくある構成を組んでいたわけだけど、新しく組むに当たってちゃんと設定するのが面倒に感じていてChatGPTに愚痴っていたら教えてもらった。
これもAnsibleでよしなに設定。ロールをチラ見せ。
roles/caddy/tasks/main.yml
--- - name: Install prerequisites ansible.builtin.apt: pkg: - debian-keyring - debian-archive-keyring - apt-transport-https - curl - gnupg update_cache: true become: true - name: Add Caddy GPG key ansible.builtin.get_url: url: https://dl.cloudsmith.io/public/caddy/stable/gpg.key dest: /etc/apt/keyrings/caddy.asc mode: "0644" become: true - name: Add Caddy repository ansible.builtin.apt_repository: repo: >- deb [signed-by=/etc/apt/keyrings/caddy.asc] https://dl.cloudsmith.io/public/caddy/stable/deb/ubuntu {{ ansible_facts['distribution_release'] }} main filename: caddy-stable state: present become: true - name: Update apt cache after adding Caddy repo ansible.builtin.apt: update_cache: true become: true - name: Install Caddy ansible.builtin.apt: name: "{{ caddy_package }}" state: present become: true - name: Ensure Caddy log directory exists ansible.builtin.file: path: "{{ caddy_log_dir }}" state: directory owner: "{{ caddy_user | default('caddy') }}" group: "{{ caddy_user | default('caddy') }}" mode: "0755" become: true - name: Render Caddyfile ansible.builtin.template: src: Caddyfile.j2 dest: "{{ caddy_config_path }}" owner: root group: root mode: "0644" notify: Restart caddy become: true - name: Ensure caddy service is enabled and started ansible.builtin.systemd: name: "{{ caddy_service }}" enabled: true state: started become: true
Caddyの設定自体はCaddyfileというものを書くわけだが、これが手頃に簡潔に記述できるのが非常に良い。
roles/caddy/templates/Caddyfile.j2
{% for site in caddy_sites %}
{{ site.domain }} {
reverse_proxy {{ site.upstream }}
log {
output file {{ site.log_path | default(caddy_log_dir ~ '/' ~ site.domain ~ '.log') }} {
roll_size 50MB
roll_keep 5
roll_keep_for 720h
}
format json
}
}
{% endfor %}
Software Designの購読を始めた
SNSで技術ネタを掘るのにちょっと疲れてしまった今日このごろ。
編集さんが入っていて情報の質が、ある程度に担保された雑誌という権威(?)に回帰しようかなぁと考えた次第。
インターネットで熱量がある人を見つけるのが大変になった...ってその話は面倒臭いのでしません。
読んだ
SREの知識地図
常日頃として意識しておくとソフトウェアエンジニアとしての視座が少し高くなるハナシが詰まっていると思う。
愛するということ
家柄、家庭、幼少、ティーンエイジの環境ってその後の人生に相当の影響があるんだなって思った。悪く言えば呪いに近い。
昇降デスクを昇降できるようにした
ケーブルが干渉し合って上げ下げができなくなっていた。
1年くらい放ったらかしていたら座り過ぎで前立腺炎になった。
これは看過できない問題のため気合を入れて整理した。
ひたすらに長いケーブルを買い、上から下に垂らして、また上げると収まりがいい。
おわり
素振りは「そぶり」とも読むし、「すぶり」とも読む。

