zaki work log

作業ログやら生活ログやらなんやら

朝活

[Hahicorp Vault] K3sにデプロイするときの公開設定のHelmチャート (Ingress/LoadBalancer)

K3sは標準でIngressもLoadBalancer Serviceもどちらも使える。 VaultデプロイのHelmチャートのパラメタはそれぞれ異なる場所にあるのでメモ。 Ingress LoadBalancer Service Ingress K3sはTraefik Ingress Controllerが標準でインストールされる。 Vaultデプ…

[html/css] 使用するCSSファイルをJavaScriptを使って動的に切り替える

WebアプリのスタイルをテーマごとにCSSファイルで定義し、設定画面のフォーム操作などで使用するCSSファイルを切り替えてスタイルを更新する、というのをできるか試してみたところDOM操作で普通にできたので、そのやり方について。 通常のCSSファイル指定 通…

[Terraform / AWS] externalデータソースを使った外部コマンド実行でセキュリティグループに自分のIPアドレスをセットする

Terraformで環境を作成する際のアクセス元IPを設定したい場合に、AWSのwebポータルだと「マイIP」でアクセス元グローバルIPを簡単にセットできるけどTerraformなどは機能として提供されてなさそうだっため、事前にアドレスを取得してそれをセットするという…

[Terraform / AWS] Data Sourcesでデフォルト(メイン)のルートテーブルを参照する

VPCの作成を行うコードからそのままデフォルトのルートテーブルを使いたい場合は何も問題ないけど、VPCは作成済みで、そのデフォルトのルートテーブルを使いたい場合にプチはまりしたのでその備忘録。 Resourcesで実装する元のコード Data Sourcesの場合 ass…

[Kubernetes] DaemonSetで動いてるPodを停止(スケールを0に)したい

業務で元リソースはそのままでPodを一時的に停止していろいろ確認するなんやかやがあり、DeploymentやStatefulSetはkubectl scaleでレプリカ数を0にすれば良かったんだけど、DaemonSetってそういえばレプリカ0にできないというかそもそもレプリカの概念がな…

[Kubernetes] ヘルスチェックAPIを試す (bearer token認証付き)

KubernetesのヘルスチェックのAPIエンドポイントを試す。 といっても提供されているエンドポイントをcurl叩けばよいだけ。 kubernetes.io 現在は3つのエンドポイントが提供されているが、1つは非推奨とのこと。 healthz (非推奨) livez readyz livezとreadyz…

[K3s / Kubernetes] KUBECONFIGを通常ユーザーでも読めるように起動オプションを指定または変更する

TL;DR K3sのKUBECONFIGファイル 起動オプションと環境変数の指定方法 起動オプションと環境変数一覧 インストール済みのK3sの設定を変更したい場合 サービス起動用のsystemdユニットファイルを修正する K3sの設定ファイルを作成・更新する TL;DR 結論を先に…

[Ansible] ansible.builtin.gather_factsモジュールでfactsを収集するタスクを作成する

ansible.builtin.gather_factsモジュールを使うと、リモートホストのfacts変数を収集するタスクを定義できる。 収集する項目のサブセット指定も可能。 このモジュールはplayの定義でgather_factsをfalseにしていても、タスク実行のタイミングでfactsを収集し…

Docker版GuacamoleでSSH接続の日本語対応 (Debianイメージへの日本語フォント追加)

前夜まとめたDockerコンテナでデプロイした素のGuacamoleは、SSH接続しても日本語の表示や入力が文字化けする。 zaki-hmkc.hatenablog.com 今回はこの対応。 といっても先に結論を書くと、guacdコンテナに日本語フォントを追加すればOK 日本語フォント入りイ…

[Ansible] roleの雛形作成をカスタムする (ansible-galaxy / --role-skeleton)

roleの雛形の作り方と、雛形のカスタマイズ。 今回は試さなかったけどcollectionにも使えるはず。。 role雛形の作成 role雛形のカスタム 雛形のスケルトンを作る スケルトンからroleの雛形を作成 role名の埋め込み role名変換とJinja2テンプレートの書式を同…

[Kubernetes] MetalLBがHelmを使ったインストールに対応してたのでお試し(on kind)

任意のKubernetesクラスタでLoadBalancerタイプのServiceを使えるようにできるMetalLBが0.10.0からHelmを使ったインストールに対応してるようなので試してみた。 環境 MetalLBインストール with Helm リポジトリ追加 チャートとデフォルト値の確認 インスト…

[Ansible / AWS] ダイナミックインベントリを使ってEC2接続先を動的に取得してAnsible実行お試し

Ansibleのダイナミックインベントリを使ったEC2アクセスについて、以前試したような試してないような記憶がおぼろげで、メモも無かったので簡単にまとめてみた。 docs.ansible.com 必要パッケージ クラウド上のEC2状態 アクセスキー設定 インベントリファイ…

[Docker Compose] cpu / memory / ログサイズの制限を指定する

元ネタはこちら。 zaki-hmkc.hatenablog.com zaki-hmkc.hatenablog.com 元ネタではDocker(dockerコマンド)単体で制限設定を行ってましたが、同じことをDocker Compose (v3)で指定する場合はどうするかについて。 docs.docker.com cpu / memory deploy/resour…

[Linux] GitHubに登録している公開鍵を ~/.ssh/authorized_keys に取り込む

取り込むというか単にcurlで取得できるよ、という小ネタ。 少し前からUbuntuのOSインストール時にGitHubに登録してるSSH公開鍵を設定できるようになってたりしてますが、GitHubの公開鍵は特定のURLで簡単に参照できるので、OSインストール後でも任意のタイミ…

[Ansible] 省略したいパラメタに変数指定せざるを得ない場合に使う変数omitとdefaultフィルタ

指定が任意なオプション扱いのパラメタで、指定するパラメタが無い場合は未指定にしたいけど、ループ処理などで決まった型の辞書型変数のリストでキーが有ったり無かったりする場合の処理について。 って書いてもうまく伝わらない気もするのでサンプルコード…

静的サイトジェネレータMkDocsのGetting Startedおためし

KubernetesドキュメントサイトではHugoというサイトジェネレータを使ったのですが、似たようなツールにMkDocsというものがあり、試してみた。 (そのうちGitHub Pagesに置きたい) www.mkdocs.org 大まかな流れとしては、Markdown形式でドキュメントを指定のパ…

[Terraform] EC2のセキュリティグループ指定はsecurity_groupsでなくvpc_security_group_idsを使えば強制再作成されない

結論 VPCでEC2インスタンス作成する定義の場合は、security_groupsでなくvpc_security_group_idsでセキュリティグループを指定しましょう。 該当ドキュメントはこちら 実装例は以下。 github.com 事象 お題は以下のコード zaki-hmkc.hatenablog.com コード r…

Terraformをv0.15に更新してAWSにEC2を作成するサンプルを動作

Terraformがv0.15にアップデートされたので、手元の環境も更新してみた。 以前お試しで作ったv0.12で動いていたソースでプロバイダ設定を新しい書式に更新すれば動作した。 zaki-hmkc.hatenablog.com qiita.com サンプルレベルだとおそらくv0.14 -> v0.15固…

[VyOS] NAT設定を使ったネットワーク間のルーティング (手動 & Ansible / vyos_config)

VyOS自体のIPアドレス設定は前回までにできたので、ようやく(?)ネットワーク間でNATを使ったルーターとして動作するための設定をやってみる。 (試行錯誤でやってるんで「こうした方がいい」とか「いや、そのりくつはおかしい」とかあったらぜひ教えて欲しい……

VyOSをインストールしてIPアドレスとsshの初期設定

OSSで開発されているネットワークOS(Wikipediaの説明より)であるVyOSを使って、仮想環境上にルーターを構築してみる。 VyOSはDebianベースで動作するOSで、VMにインストールすることができる。 vyos.io ちなみにLinux(CentOS)をルーターにするには以下参照。…

NetBoxのSecretを使って暗号化された情報を登録・参照する

NetBoxは、デバイスやVMの情報に暗号化されたSecret情報を持たせることができるので、例えばログイン用のアカウント情報などもNetBoxに登録しておくことができます。 このSecretはbase64でエンコードされるだけのもの、、ではなく、256ビットのAES共通鍵で暗…

[Ansible] jc parserのFilterを使った構造化データ化 (community.generalのフィルタ)

jc parserをAnsibleで使ってみる。 github.com 2021.07.06追記: community.generalコレクションのフィルタのドキュメントがいつのまにか追加されてた -> community.general Filter Guide — Ansible Documentation jc parserについて 使えるparserの種類 簡単…

[Ansible] 複数roleのhandlerとpost_tasks/pre_tasksの処理順序

特定のtaskに変更があったときだけ連動して動く処理を定義できるhandlerですが、処理の実行順序で思い違いしがちなところがあったので確認してみました。 (handlerを使ったroleがあるのを忘れて無邪気に次に処理されるroleを書き足したら期待しない実行順序…

[Ansible] acme_certificateモジュールでLet's Encryptから証明書を発行しApacheでHTTPSサーバー構築

httpdパッケージでApacheをインストール・HTTPS対応し、Let's Encryptの証明書の発行と設定までAnsibleで設定、できるのかな?と思って試したらうまくいった。 Let's Encryptで証明書を作成するには、ACMEプロトコルを利用し、このACMEプロトコルを操作する…

[NetBox] 「VMを登録してIPアドレス割り当て」をREST APIでお試し

NetBoxのREST APIをざっくりと使って「VMを登録してIPアドレスを割り当てる」をやってみる。 APIについては、NetBoxの画面下部の{} APIのリンク先を開くと、Swaggerが表示されるので、エンドポイントとHTTPリクエストメソッド一覧や必要なパラメタ、レスポン…

[Ansible] ターゲットホストのIPアドレスの参照とデフォルトゲートウェイの設定についてのメモ

Ansibleの実行の際に、設定ファイルを作ったりしたい場合に使えると便利なターゲットホストのIPアドレスの参照方法について。 内容は「動かしてみてその内容をまとめたもの」なので、ドキュメントやソースコードを追ったりまでは確認できていないです。 play…

[Ansible] YAML/JSON書式の文字列を構造化データとして扱う

文字列として保持しているYAMLやJSON形式のデータを構造化データとして扱うにはフィルタで変換するのが簡単です。 PowerShellのConvertFrom-Jsonとかと同じやつです。 docs.ansible.com YAML形式の文字列をオブジェクトに変換 JSON形式の文字列をオブジェク…

GitLab CE on Docker Compose (HTTPS + Container Registry + Runner)でSSH設定してなかったので追加

GitLab CE on Docker(Docker Compose)のSSH設定について。 SSHといっても、GitLabサーバーのメンテナンスに使うのでなく、GitリポジトリのSSHアクセスに使用するためのもの。(シェルログインには使用しない) ベースはこちら zaki-hmkc.hatenablog.com docs.g…

[Kubernetes] 軽量ディストリビューション k0s をローカルで動かしてみた

シングルバイナリで簡単・軽量で動くKubernetesディストリビューション「k0s」が出たということで、手元で試してみた。 新しい Kuberentes distro, #k0s が OSSで公開されました!軽量、ワンバイナリ、Intel/ARM対応、アップデートも簡単! チェックしてみて…

IUSリポジトリのパッケージでCentOS 7にGit version 2をインストールした

VS CodeのGitHistoryやGitLens拡張がいつの間にか動かなくなってた。 エラーの通りGit Versionが1系なのが原因なのでアップデートしてみる。 こんなエラー git shortlog -e -s -n HEAD (completed in 0.008s) git log --full-history --pretty=oneline --dat…