zaki work log

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

[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…

[Kubernetes] Helmを使ってインストールすると生成されるシークレットの内容についてのメモ

Helmチャートをインストールすると、sh.helm.release.v1.<リリース名>.v1というシークレットリソースが作成されるけど、これ何だっけ?と思って調べてみた。 結論から言うと、Helmでインストールしたリリース情報がgzip形式で格納されている。これを手動で消…

[K3s / Helm] K3sのHelmChartカスタムリソースを使ったチャートのインストール (Fluent Bit)

K3sにHelmを使って何かをデプロイする場合、K3s自体にHelmChartカスタムリソースを使ったチャートのインストールがサポートされており、helmCLIコマンドを使わずにマニフェストを作成するだけでチャートのインストールが可能なので試してみた。 docs.k3s.io …

[Terraform] Data Sourcesを使った対象リージョンのAZの実行時取得

指定のリージョンにおけるアベイラビリティゾーンは何があるか?のように、自分が実装する内容でなくAWS(プロバイダ)の情報を取得したい場合は、データソースを使うことで情報参照ができる。 developer.hashicorp.com アベイラビリティゾーンを参照するため…

Ansibleからterraform applyを実行するタスクの実装

Terraformでインフラをプロビジョニングしたあとに上物に対してAnsibleで何か(アプリをインストールしたりデータを投入したり)処理をするようなことが多いので、AnsibleからTerraformを実行するようにして一発で処理できるようにするにはどうするか実装を確…

[Terraform / AWS] EventBridge Schedulerを使ったVMの自動起動と停止

EventBridge Schedulerを使ったVMの自動on/off設定をCloudFormationを使って設定するには以下のClassmethodさんの記事を見れば一通り実装できます。 dev.classmethod.jp ここではTerraformを使った実装についてのまとめ。 こうしたらうまくいった、という感…

[HashiCorp Vault] KVシークレットエンジンのデータの読み書きメモ (CLI/REST)

HashiCorp VaultのKVシークレットエンジンを使ったkey/value形式のデータの読み書きを試した。 触り始めて間もないので解釈や表現がおかしいところはあるかも。(あったら教えてください) developer.hashicorp.com HashiCorp Vaultにおいてシークレットエンジ…

[Terraform] EC2のEIP設定とdomain="vpc"定義とAWSプロバイダーのアップグレード

EC2にEIPを設定したくて以下のようなtfファイルを作成 resource "aws_instance" "sample" { : } resource "aws_eip" "sample-eip" { instance = aws_instance.sample.id domain = "vpc" depends_on = [aws_internet_gateway.igw] tags = { Name = "sample-ei…

Azure Key Vaultを使ったHA構成HashiCorp Vaultの自動unseal / join / remove

ここのブログでHashicorp Vaultを扱うのはそういえば初めてだったけど、Vault使う上で面倒なunsealなどを自動処理する方法を調べる機会があったのでまとめました。 なお、unseal keyやroot tokenを記事用に全部書き出してますが、機密情報なので実際は厳重に…

[Kubernetes] K3sのバージョン指定インストール

K3sをインストールする際は、特に指定がない場合は「最新安定板」がインストールされますが、これはKubernetesの最新版の1個前だったりします。 このエントリ執筆時点(2024.02.08)のKubernetesのバージョンは1.29.1が最も新しいですが、K3sのインストールで…

Proxmox VEのVMのIPアドレスをサマリーに表示する

特にESXiから移行したVMなんかで表示されない「サマリー画面」のIPsですが、次の2点を対応すればVMのIPアドレスが表示されます。ほぼ小ネタ。 1. VMオプションの「QEMU Guest Agent」の有効化 [オプション]->[QEMU Guest Agent]の値がデフォルトは無効になっ…

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

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

Proxmox VEのweb管理画面にCPUの温度を表示する

去年の春に構築して灼熱の夏は無事に乗り越えたMINISFORUM NAB6だけど、以前使ってたIntel NUC(現在win11が入ってる)はちょいちょい熱暴走起こしてたので、念のために簡単にモニタリングできるようにしてみた。 2024.04.01 パッケージバージョンアップで変更…

セルフホスト版GitLabの初期パスワード未設定時の設定方法が変わっていたのでメモ

年末にGitLabのコンテナレジストリが必要になったので久しぶりにローカルに新しくver16.6をDocker Composeで構築したら、初回アクセス時のrootの初期パスワード設定を行う画面が表示されることなくログイン画面に遷移してどうすればよいかわからず戸惑ったた…

[Kubernetes] K3sにおける証明書の期限の延長や設定(平たく言うと塩漬け運用したい場合のx年設定)について

オンプレKubernetesにおいて選択肢の一つになりうるK3sで内部で使用する証明書の期限についての調査&検証のまとめ的な作業ログ 確認した環境のホストOSはUbuntu 22.04とFedora39でK3sは1.28.5 デフォルト設定 自動ローテートの確認 手動ローテート 期限のカ…

[Ansible / AWX / AAP] ログアグリゲーター設定でジョブの実行ログをLogstash経由でsyslogサーバーへ転送する

ロギング設定にログアグリゲーターを指定して、リモートのsyslogへジョブの実行履歴を転送してみます。 通常AWX・AAPではDBに記録されたジョブの実行履歴などはスケジュールのCleanup Job Scheduleで設定された期限が過ぎたら削除されるので、基本的にはUIで…

[Ansible / AAP / AWX] EEのコンテナイメージ作成にAnsible Builderは必ずしも必要ないかを確認してみた (小ネタ)

AAPやAWXでジョブ実行に必要なExecution Environments(EE)を作るために通常はAnsible Builderを使ってコンテナイメージをビルドするが、要件を満たせばDockerfileを直接書いて自前でビルドしても動くのでは…と思ったので確認してみた。 結論としては、以下が…

[Ansible / AAP / AWX] AnsibleでAAPリソースの作成を自動化する

本エントリは「エーピーコミュニケーションズ Advent Calendar 2023」の24日目のエントリです。クリスマスイブは一切関係ないネタです。 Ansible Automation PlatformのAutomation Controller(旧Ansible Tower / 以下AAP)やAWXはGUIでAnsibleを実行すること…

[Ansible] kubernetesコネクションプラグインとインベントリプラグインを使ってみる

本エントリは、Ansible Advent Calendar 2023の14日目の記事です。煽られて(?)即席で書き上げました。 昨年共著で出版させていただいたAnsibleクックブックでは紙面の都合 * で掲載しなかった、kubernetesコネクションプラグインについて簡単に使い方の例を…

[Ansible] S3互換オブジェクトストレージのデータをget/putする

本エントリは、Ansible Advent Calendar 2023の8日目の記事です。 昨日のAnsibleアドカレ7日目で id:usagi_automate さんがAWXで作成したテキストファイルをZipに固めて手元に持ってきたい - うさラボという記事で「バイナリデータもBase64でテキスト化して…

[Ansible / K3s] 2023年版AWXクイックインストールガイド

本エントリは、Ansible Advent Calendar 2023の6日目の記事になります。 AWXのセットアップがDocker ComposeからKubernetes環境になって手を出しづらくなったとか、インストール方法がわかりづらいなどの声を観測範囲で聞くことがあったので、ローカル環境で…

[Ansible] 日付書式の文字列から「〇分後」を求める (既存フィルター or カスタムフィルター)

Ansibleで「指定日時の5分後」みたいな時刻加減算をやる機会があったけど、ちょうど良い機能が見当たらなかったのでいろいろ試した話。 だいぶ面倒なことをやってるので「〇〇すればシュッとできるよ」とか情報があれば教えてください。 Pythonの場合の日時の加…

[Python] 標準ライブラリで"2023-09-27T12:43:39.123456Z"のようなISO 8601拡張形式の文字列のdatetime変換とタイムゾーン

"2023-09-27T12:43:39.123456Z" のようなISO 8601拡張形式の文字列をPythonでdatetimeオブジェクトとして扱ったり、JSTのYYYY/mm/dd HH:MM:SS文字列に変換するサンプルコードについて。 最小限の環境で動くように、標準ライブラリで実装している。(pip insta…