zaki work log

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

tech

[Terraform] HashiCorp Configuration Language(HCL)コードのドキュメンテーションとGitHub Actionsで自動化 (terraform-docs)

本エントリは「エーピーコミュニケーションズ Advent Calendar 2024」の2日目のエントリです。 TerraformのコードのREADME作成時に何かいいのが無いか調べてみたらterraform-docsというプロダクトを見つけたので、使い方について簡単にまとめました。 github…

[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ファイル指定 通…

[JavaScript / Python] 配列内に指定の要素が含まれるかどうかをチェック (備忘録)

よく使うけとすぐ忘れるので。 JavaScript 基本構文 例:httpステータスチェック Python 基本構文 例:httpステータスチェック 辞書の場合 集合(追記) JavaScript includesを使う。 developer.mozilla.org 基本構文 array.include(item); 例:httpステータス…

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

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

[ブラウザJavaScript] クリップボード操作 (テキストのコピー/ペースト)

developer.mozilla.org 基本的にサンプルコード通りで動作した。 クリップボードへのテキストコピー HTTPの場合 動的に動作を変えるには ペーストの場合 動作環境 クリップボードへのテキストコピー テキストをクリップボードへコピーするのは簡単で、以下の…

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

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

[Ansible] password_hashフィルター使用時はpasslibパッケージを入れておく

Ansibleクックブックの「2-3-3 パスワードをハッシュ化する」にも載っているpassword_hashフィルターで発生したエラーについて簡単にまとめ。 docs.ansible.com Ansible10 (ansible-core 2.17)の場合 Ansible9 (ansible-core 2.16)の場合 どういうこと? 環…

[ブラウザJavaScript] htmlから<script src>したJavaScriptでさらにimportするときのエラーと対処法

htmlファイルから<script>でJavaScriptのソースコードを読み込み、そこから更にimportで外部ファイルに実装した処理を読み込みたい、という構成で数日ハマったのでメモ。 html/javascriptコード (before) エラーと対応 Cannot use import statement outside a module…

[JavaScript] URLSearchParamsを使ったクエリ文字列の解析

URL中のQuery StringはURLSearchParamsを使って簡単にparseできる。 developer.mozilla.org const param = new URLSearchParams(('key1=%E3%82%AD%E3%83%BC1&key2=%E5%80%A41')); なお、URLデコードも自動で行われる。 値の参照 これはキーが分かってる場合…

[K3s] 設定ファイルを使ったインストール時のパラメタ指定

K3sのインストール時にコマンドラインオプションや環境変数でパラメタをいろいろ設定できるが、数が多くなると見通しが悪くなりメンテ性も落ちる。 そんな時は設定ファイルにパラメタを指定すれば管理しやすい。 設定のコメントも書ける docs.k3s.io ファイ…

SSHの秘密鍵から公開鍵を生成する (小ネタ)

たとえばプロジェクトで共有の秘密鍵(というのも微妙だけど)はあって、それを使ってアクセスしたいホストがあるけど公開鍵がない、みたいな場合。 ssh-keygen -yコマンドを使って、秘密鍵から公開鍵を生成できる。 実行するコマンドは以下 ssh-keygen -y -f …

Caddyコンテナでローカルに自己署名の検証用途などのHTTPSサーバーをシュッとたてる

ローカルでの検証などで、静的なweb系のファイルアクセスをオレオレな証明書で構わないのでHTTPSで行いたいとき、nginxやApacheでやろうとするとダミーのSSL証明書を作成する必要があって若干面倒です。 そんなときはDocker版Caddyの自動HTTPS機能のlocal HT…

[HashiCorp Vault] KVシークレットエンジンのデータの更新と削除メモ (CLI/REST)

前回のエントリの残件だった「更新」と「削除」についてまとめ。 zaki-hmkc.hatenablog.com CLIはサブコマンド毎にページが分かれてるけど、RESTは全部以下に集約されてる。 developer.hashicorp.com update CLI REST delete latest(最新)バージョンの削除 …

[Terraform] EC2プライベートIPアドレスの固定とパブリックIPの割り振り

AWSのEC2のプライベートIPは、使用するサブネットアドレスから自動で割り当てられるが、複数のEC2間で通信したい場合などであらかじめ固定したIPアドレスを使いたいという場合にTerraformでどう設定するかについて。 固定プライベートIPの設定 通常はaws_ins…

[Ansible] community.general.slackモジュールでSlack通知を行うタスク

先日AAP/AWXの通知機能でSlack連携をまとめたので、ついでにPlaybookのタスクから任意のメッセージを通知する方法について。 使うモジュールは以下 docs.ansible.com たとえばAAP/AWX構築Playbookで資材内にSlackのトークンを持っているのであれば、ついでに…

[AWS] VPCとS3エンドポイントを使ってインターネット接続が制限されたEC2(サブネット)からECRに接続する [修正済み]

6/23: S3へのエンドポイントも必要なことを追記 概要 webポータルから VPCエンドポイントの作成 S3用ゲートウェイエンドポイントの作成 Terraformで構築 参考 6/23追記 概要 インターネットゲートウェイを設定せずにインターネット接続が制限されたサブネッ…

[Ansible / AAP / AWX] 通知機能を使ってジョブの実行状態をSlackへ通知する

AAP(Controller)とAWXには「通知」の機能の一つ(連携先の一つ)としてSlackにジョブの起動・終了(成功・失敗)等を通知することができる。 大まかな流れは以下の通り。 Slackに投稿用botを用意しトークンを作成 作成したトークンを使ってAWX/AAPに通知リソース…

コンテナ化されたAAPのContainerized Ansible Automation Platform (tech preview)を試してみた(AAP 2.4)

最近AAPのインストーラーの新しいバージョンをダウンロードしようとしたら、見慣れない「Tech Preview: Ansible Automation Platform 2.4 Containerized Setup」というインストーラが(日付を見る限り1月の時点ですでに)あったので試してみた。 access.redhat…

AWXのバックアップ・リストアが付属のpostgresql-15-c9s:latestでうまくいかないときのワークアラウンド

原因 現在標準のquay.io/sclorg/postgresql-15-c9s:latestはUID 26で動くので、「UID 26のユーザーがRead/Writeできない領域のボリュームへのバックアップ」が失敗する。 例えば↓のような「rootか特定のUIDでないと書き込めないNFSサーバー領域」とかね。 ro…

オフラインK3sクラスタでworkerノード追加

少し前に実施したシングルノード構成の「オフライン環境へのK3sインストール」に、workerノードを追加する。 環境は引き続きインターネット接続のないオフライン環境。 zaki-hmkc.hatenablog.com 手順はAir-Gap Installの通りで大丈夫。 docs.k3s.io 構成 (…

[rsyslog] タイムゾーンが異なるリモートからのログ受信時にローカルの時刻で記録する (RHEL/Ubuntu)

リモートのrsyslogへのログ転送は、ログ情報としてはタイムゾーンは持っていないため、例えば日本時間4月30日の20時に、JSTに設定されているrsyslogサーバーへ、UTCのシステムからログを送信すると、9時間ズレて11時のログとして記録されてしまう。 手っ取り…

[Ansible Builder / AWS] CodeCommit + CodeBuild 環境でEEの自動ビルドとECRへpush (起動は手動)

プライベートではGitHub Actions使ったEEの自動ビルドを1年前に試したけど、業務だとCodeCommit環境を使ってたりするので、せっかくなのでAWSのサービスを使ったビルド環境を試してみた。 初めに軽く検索した感じだと、CodeBuildではコンテナで処理がされる…

[Proxmox VE] Cloud-Initのvendorデータを使ってサブスクリプション済みRHELのVMをサクッと作成する

Proxmox VEのWeb UIから設定できるCloud-Init項目は以下の通りで、最低限必要な設定はできるけど、追加パッケージの指定とかがデフォルトでは現状できない。 ユーザ パスワード DNSドメイン DNSサーバ SSH公開鍵 プロビジョニング時のパッケージアップグレー…

[AWS / Terraform] EC2作成時のユーザーデータ内で動的に割り当てられるIPアドレスやパブリックDNSの参照とIMDSv2の設定

TerraformでEC2プロビジョニング時に、ユーザーデータ内でパブリックDNS名を参照しようとしたらすんなり実装できなかったのでメモ。 AWSでEC2をプロビジョニングする際にホスト上の初期処理を投入したい場合は、実行したいコマンドをシェルスクリプトとして…

[Proxmox VE] テンプレートとクローンとCloud-Initを使ってVMをサクサクシュッと生やす (Fedora / Ubuntu)

Proxmox VEには、VMのテンプレート化とクローン機能があり、さらにCloud-Initを使って初期設定込みで簡単にVMをプロビジョニングできる機能がある。 もうすぐFedora40やUbuntu 24.04がリリースされそうなので、その時にサラサラとテンプレート作成できるよう…

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

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

(4/11追記) arm64版AWXをデプロイするだけなら自前のビルドは全く不要になってる件の補足とまとめ

2024.04.11追記 forum.ansible.com AWX 24.2.0とAWX Operator 2.15.0がリリースされ、GitHub Container Registryにしかなかったarm64版awxイメージがquay.ioからもpullできるようになりました。 image repository tag awx-operator quay.io/ansible/awx-oper…

[追記あり] 2024年3月現在のAWXのarm64ビルドの状況 (AWX 24.0.0 / Operator 2.13.1)

2年前にKubernetesで動くAWXをarmアーキテクチャのホストで動かそうとした際には、armプラットフォーム用のコンテナイメージが何一つ用意されてなく全部自前でビルドしてた。が、2024年現在、状況が結構変わってかなり簡単になってたので、今時点でどうすれ…

オフライン環境へのK3sインストール

いろんなものを業務でオフライン動作させてきた身としては一度はやっておきたかったインターネット接続の無いオフライン環境へのインストールお試し。 K3sは軽量Kubernetesとして様々な環境で動作するのが特徴の一つで、インターネット接続の無い環境でもAir…