Linux

激安中華miniPCでKubernetesクラスタを構築する

Akira Ueno
この記事は whywaita Advent Calendar 2023 7 日目の記事です。 前日は k_enoki さんの記事 でした。 whywaita さんといえば、インフラエンジニアのイメージがあります。 今どきのインフラエンジニアといえば、Kubernetes ですよね。そこで、今回は Kubernetes の勉強を兼ねて、自宅で Kubernetes を動かすための環境を構築してみました。 お金はあまりかけたくないが、クラウドでやっても面白くないので、激安中華 miniPC を使います。 今回の環境 Amazon で Beelink EQ12 x 3 台とBeelink S12 Pro x 1 台を購入しました。これを Kubernetes クラスタとして構築します。 スペックは CPU: Alder Lake 4 コア、メモリ: 16GB、SSD: 500GB NVME です。 これで 1 台 3 万円弱でした。激安ですね。 3 台の EQ12 は ワーカーノード、1 台の S12 Pro はコントロールプレーンとします。 OS のインストール まずは OS をインストールします。今回は Ubuntu Server 22.04 LTS をインストールしました。 PXE などでかっこよく自動インストールしたかったのですが、設定が大変そうだったので、手動で USB メモリを使ってインストールしました。

Lock Gnome Screen via SSH

Akira Ueno
Overview I want to lock gnome-session(Desktop) with a user logged in via ssh. Script Save below script and execute it. There are two key points at line 10. 1. gnome-screensaver-command -l Execute gnome-screensaver-command as GNOME logged in user. 2. DBUS_SESSION_BUS_ADDRESS Set dbus environment varibale to execute gnome-screensaver-command. Reference https://askubuntu.com/questions/7776/how-do-i-lock-the-desktop-screen-via-command-line https://askubuntu.com/questions/707984/lock-screen-with-gnome-screensaver-command-as-root-from-etc-pm-sleep-d-script

CloudflareのDNSを利用しているドメインの証明書をcertbotで発行する

Akira Ueno
概要 Cloudflare の DNS を利用しているドメインの証明書を certbot で発行する。 ワイルドカード証明書を発行する場合、certbot を使い DNS 認証(DNS-01)で DNS レコードを手で修正していたが、Cloudflare の API を利用すれば自動化できる。さらにcertbot-dns-cloudflareというプラグインにより簡単に設定できるので紹介する。 API トークンの取得と設定 Cloudflare のMy ProfileのAPIトークン>トークンを作成する>ゾーン DNS を編集するを選択し API トークンを発行する。 以下は設定例。 発行した API トークンを含むクレデンシャルファイルを適当な場所に作成する。 $ sudo mkdir /etc/letsencrypt/cloudflare $ sudo vim /etc/letsencrypt/cloudflare/akky.me.ini dns_cloudflare_api_token=<発行したAPIトークン> $ sudo chmod 700 /etc/letsencrypt/cloudflare $ sudo chmod 600 /etc/letsencrypt/cloudflare/akky.me.ini certbot のインストール 公式の手順に従う。 今回は Web サーバが Nginx,OS が Debian buster なので snap を使ってインストールする手順が表示された。 sudo apt install snapd # snapが入ってなければ sudo snap install core; sudo snap refresh core sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot プラグインのインストール certbot-dns-cloudflareプラグインをインストールする。

正規表現でマッチしたグループを複数抽出する

Akira Ueno
概要 正規表現でマッチしたグループを複数抽出する場合はsedを使うと良い.グループが1つの場合はgrepでも-oPと\Kで抽出できるが,グループが複数あるとできない. コード i番目のグループ(()で囲まれた部分)を\iで置換する. sed -r 's/<正規表現>/\i/g 例 vncのポート番号とpidを抽出する例 sed $ ss -ltp | grep vnc LISTEN 0 5 0.0.0.0:5901 0.0.0.0:* users:(("Xtigervnc",pid=3193,fd=7)) LISTEN 0 5 0.0.0.0:5902 0.0.0.0:* users:(("Xtigervnc",pid=4404,fd=7)) LISTEN 0 5 0.0.0.0:5903 0.0.0.0:* users:(("Xtigervnc",pid=4453,fd=7)) LISTEN 0 5 [::]:5901 [::]:* users:(("Xtigervnc",pid=3193,fd=8)) LISTEN 0 5 [::]:5902 [::]:* users:(("Xtigervnc",pid=4404,fd=8)) LISTEN 0 5 [::]:5903 [::]:* users:(("Xtigervnc",pid=4453,fd=8)) $ ss -ltp | grep vnc | sed -r 's/^.*:([0-9]+).*pid=([0-9]+).*$/\1 \2/' | sort -u 5901 3193 5902 4404 5903 4453 うまくいく.