Azure Static Web Apps を Terraform Cloud で管理する

はじめに 本ブログは Azure の Azure Static Web Apps という PaaS でホスティングしています。 今までは Azure Portal で画面ポチポチしながら設定変更していましたが、なにかあったときに備えてリソースを Terraform で管理するようにします。 いわゆる Infrastructure as Code です。 今回は Azure Static Web Apps の既存リソースを Terraform 構成ファイルに落とし込んで、Terraform 自体を Terraform Cloud に管理してもらう形にします。 どちらかと言うと Terraform Cloud を使う方便だったり。 Azure Static Web Apps 既存リソースの Terraform 化 まず、Azure Static Web Apps のリソースを Terraform で管理できるように構成ファイルを作成します。 事前にプロバイダの設定ファイルを作成してから terraform init しておきます。 terraform { required_version = ">= 0.12" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 3....

January 18, 2023 · 3 min · @nnstt1

2022 年振り返りと 2023 年の抱負

今年の年末は大きな仕事があって丸一日休みという日がなく慌ただしい日々です。 とはいえ、スポットで対応する感じでスキマ時間があるので、昨年掲げた抱負を確認しつつ1年を振り返ります。 昨年は ↓ の抱負を掲げていたようです。 家族との時間を大切にする 転職の目処をつける 2022 年の振り返り 育休取得 今年の4月に双子(第2、3子)が生まれました。 長男出生時は特別休暇をもらったので、その日数(3日?5日?既に覚えてない)休んだだけでした。 その休み中は書類関係の手続きしたり、退院準備をしたり、と育児以外のミッションをしていたらあっという間に休みが終わりました。 次の子も同じ感じになるかなぁと朧気ながら思っていましたが、昨年に双子妊娠がわかって、更には妻が早期に入院する可能性が出てきた(結果的にそうなった)ため、育休を取ることにしました。 結果的には 3~4 月に長男分、5~7 月に次男三男の育休を取得して、計5ヶ月お休みしました。 5ヶ月は職場への負担が大きいかと思ったのですが、現職では男性の育休がボチボチ出てきたところだったので、相談はしやすかったです。 そういうことで、今年1年の約半分は家族メインの生活ができたので「家族との時間を大切にする」という抱負は達成できました。 育休中の振り返りは Note に投稿しました。 育休が終わったので振り返ってみた 転職活動 昨年から転職活動をしていましたが、子供が生まれることもあって中断していました。 まだ具体的な内容は言及できませんが「転職の目処をつける」という抱負は達成できたと思います。 アウトプット 今年は本ブログに 17 本投稿しました。 ラズパイ Ceph を Zabbix で監視する Cephadm のアラートを消す PG の修復 Ceph ホストのメンテナンス Red Hat Developer Subscription の有効期限が切れたので再登録した AMD CPU 使っていて RHEL 9 にアップグレードできなかった話 Fedora ラズパイの PoE+ HAT ファンをコントロールする 仮想化基盤の Proxmox VE への移行 Proxmox VE を管理するため Terraform に入門した Terraform で Proxmox VE の VM パラメータ設定 ansible....

December 31, 2022 · 1 min · @nnstt1

Podman Desktop がリリースされたのでインストールする

Podman Desktop がリリースされたので Windows にインストールしました。 インストールしただけです。 Podman Desktop とは Publickey さんの記事にすべて書かれてます。 failed to fetch remote resource: Service Unavailable インストール Podman Desktop 公式ページ に MacOS, Windows, Linux の各環境向けインストールマニュアルがあります。 今回は Windows 向けマニュアルを参照しました。 前提条件に「Hyper-V が有効化されていること」と「WSL2 がインストールされていること」とありますが、今回は両方ともインストール済みだったので省略します。 マニュアルによると Podman Desktop からそれぞれインストールできるようです。 Podman Desktop ダウンロードページ から .exe ファイルをダウンロードします。 バージョンは v0.9.1 でした。 ダウンロードした .exe を起動すると、匿名で情報収集してよいかと聞かれます。 任意ですがこころよく OK します。 Podman Desktop のダッシュボードが表示されますが、Podman が見つからないと表示されました。 この Windows には Podman 自体もインストールしていませんでした。 [Install] ボタンを押すと Podman をインストールするか聞かれます。 今回はバージョン v4.3.0 でした。 GitHub のリポジトリを見ると v4....

November 16, 2022 · 2 min · @nnstt1

Terraform で AKS と AGW をデプロイする

前回の投稿で、Terraform を使って AKS で AGIC を動かす際のハマりポイントを紹介しました。 その際はマネージド ID の権限周りの設定がうまくできていなかったのですが、解決方法がわかったので改めて Terrafrom で AKS と AGW をデプロイする書き方を整理します。 デプロイパターン まず、AGIC から使う前提の AGW を Terraform でデプロイするパターンとしては以下の 2 つが考えられます。 AKS と AGW を個別にデプロイ AKS デプロイ時に AGW も作成 それぞれについて、Terraform の書き方とデメリットについて説明します。 前提条件として、以下のリソースは既に存在しているものとします。 リソースグループ VNet AKS 用 サブネット AGW 用 サブネット AKS と AGW を個別にデプロイ PIP AKS と AGW を個別にデプロイするパターンでは、Public IP も作成する必要があります。 resource "azurerm_public_ip" "pip" { name = local.pip_name resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location allocation_method = "Static" sku = "Standard" } AGW 次に、PIP に依存する形で AGW を作成します。...

November 2, 2022 · 5 min · @nnstt1

K8s@home で LT したので振り返る

2022/10/12 に開催された K8s@home #1 で LT したので振り返ります。 K8s@home とは 最近できたコミュニティです。 運営は @superbrothers さんと @yuanying さんです。 以下はコミュニティページの説明文。 K8s@home # 本グループについて 自宅でラズパイや NUC、VM、そのほか VPS 等を使って個人の趣味として Kubernetes クラスタを構築、運用する人たちが情報交換、懇親する場所です。クラスタ構成や利用するアドオン、デプロイするアプリケーションなどなど、自宅、趣味のクラスタならではのおもしろ情報、こだわりポイントを共有します。 自宅でのクラスタ運用を楽しんでいる人、パブリッククラウドで格安での運用を目指している人、これから個人のクラスタを飼ってみたい人はぜひご参加ください。 # ミートアップの開催について 不定期の開催を予定しています。 # そのほか 業務における真面目な K... 自宅でラズパイや NUC、VM、そのほか VPS 等を使って個人の趣味として Kubernetes クラスタを構築、運用する人たちが情報交換、懇親する場所です。クラスタ構成や利用するアドオン、デプロイするアプリケーションなどなど、自宅、趣味のクラスタならではのおもしろ情報、こだわりポイントを共有します。 自宅でのクラスタ運用を楽しんでいる人、パブリッククラウドで格安での運用を目指している人、これから個人のクラスタを飼ってみたい人はぜひご参加ください。 このように、Kubernetes Meetup Tokyo と同じ Kubernetes 関連ではあるけど方向性が違ったコミュニティになります。 個人的な印象としては、Kubernetes Meetup Tokyo は「仕事でもバリバリ Kubernetes 使っている人たちが最新事例を共有したい」コミュニティで、K8s@home は「肩の力を抜いて Kubernetes を触ってみたよ」なコミュニティかなと思いました(その割に登壇内容は全員レベル高かったですが!!!)。 動機 前回の LT が一年前の Kubernetes Novice Tokyo #11 でした。 その間も仕事で Kubernetes に触る機会はまったく増えないし、新しく登壇するネタもなく自宅で K8s クラスタとチマチマ戯れる日々。 途中で下の子達も産まれて時間的余裕もなくなってました。...

October 26, 2022 · 1 min · @nnstt1

Terraform で AGIC を使おうとしてハマった

Terraform を使って Azure Kubernetes Service (AKS) で AGIC を動かす機会があったので、ハマりポイントを記録しておきます。 AGIC とは Application Gateway Ingress Controller (AGIC) は、Azure ネイティブの L7 ロードバランサ Application Gateway を利用した AKS で動作する Ingress Controller です。 AGIC を使うことで、AKS で Application Gateway の機能(URL ルーティングや TLS 終端)を使うことができます。 また、AKS クラスタ外の Application Gateway がオートスケールするため、トラフィックの増減に対してクラスタでのリソース消費がありません。 この機能を使うためには、Azure に AKS と Application Gateway、そして Public IP のリソースをデプロイする必要があります。 Terraform から Application Gateway を作成する方法として 2 パターンあります。 Application Gateway と Public IP のリソースタイプを指定する AKS のリソースタイプで Application Gateway を指定する ちなみに、利用した Terraform のバージョンは以下になります(バージョン古いと怒られていますね…)。...

October 25, 2022 · 2 min · @nnstt1

Rook v1.10 へアップグレード

Rook の新バージョン v1.10.0 がリリースされたようなので、早速、自宅ラボの Rook/Ceph をアップグレードしてみます。 マイナーバージョンが上がったときくらいは変更内容を追わないと、と思ってマニフェストの差分を確認しました。 アップグレード手順 アップグレードは公式ドキュメントに載っている手順どおりに進めました。 Rook Upgrades - Rook Ceph Documentation 自宅ラボの Rook は ArgoCD で管理しているので、クラスタ用リポジトリの以下のマニフェストを v1.10.0 の内容でマージしただけアップグレード完了しました。 common.yaml crds.yaml operator.yaml cluster.yaml 今回は common.yaml と operator.yaml の変更点を見ていきます。 cluster.yaml は Ceph のバージョンが違うだけなので割愛、crds.yaml は変更内容が多いため諦め。 アップグレード前の Rook のバージョンは v1.9.5 です。 common.yaml common.yaml には Namespace や RBAC 関連のリソースが記述されています。 削除 Kubernetes v1.25 で PSP が正式に廃止されたことが起因で、common.yaml から PSP に関連したリソースが削除されています。 そして v1.25 未満の Kubernetes 向けに PSP 関連をまとめた psp.yaml が作られています。 リソース 名前 PR ClusterRole psp:rook #10816 ClusterRoleBinding rook-ceph-system-psp #10816 ClusterRoleBinding rook-csi-cephfs-plugin-sa-psp #10816 ClusterRoleBinding rook-csi-cephfs-provisioner-sa-psp #10816 ClusterRoleBinding rook-csi-rbd-plugin-sa-psp #10816 ClusterRoleBinding rook-csi-rbd-provisioner-sa-psp #10816 ClusterRoleBinding cephfs-csi-nodeplugin #10033 PodSecurityPolicy 00-rook-privileged #10816 RoleBinding rook-ceph-cmd-reporter-psp #10816 RoleBinding rook-ceph-default-psp #10816 RoleBinding rook-ceph-mgr-psp #10816 RoleBinding rook-ceph-osd-psp #10816 RoleBinding rook-ceph-purge-osd-psp #10816 RoleBinding rook-ceph-rgw-psp #10816 また、PSP 関連とは別に ClusterRoleBinding cephfs-csi-nodeplugin が削除されています。...

September 2, 2022 · 3 min · @nnstt1

AWS SAA に合格したので振り返る

2022/8/12 に AWS 認定の一つ、「AWS Certified Solutions Architect - Associate (SAA)」をパスしたので記録しておく。 動機 普段 AWS を使う機会はほとんどなく、過去に EC2 や Route53 をチョロっと触ったことがある程度だった。 前職で「AWS を使うかも」となったときに研修に行かせてもらったけど、今となっては全く記憶に残っていないレベル。 関係ないけど、講師が逸般の誤家庭界隈では有名なお方だったと最近知った。 機会があれば AWS を学びたいと思っていたが、そんな折、AWS 認定取得: Associateチャレンジ というキャンペーンを知った。 Associate レベルの受験料が 25% オフになるバウチャーを貰えるらしい。 AWS 認定取得: Associateチャレンジ がスタートしました🎉 ■AssociateレベルのAWS認定を取得する個人を応援するキャンペーンで、先着1000名に25%割引バウチャーを提供! ■参加登録ページhttps://t.co/5VtaZayfCD ■期間は6月13日〜8月31日ですが、参加登録期限は7月10日です。早めにご登録を! pic.twitter.com/2WVsIbRYvk — Wataru Nishimura (@kuwablo) June 12, 2022 Associate レベルの受験料は ¥15,000 (税抜) なので ¥3,750 ほどお安くなる。 Microsoft Cloud Skills Challange と似ているけど、こっちは登録するだけでいい。 これはよい機会だ、ということで AWS SAA を受けるために早速登録してみた。 AWS 認定取得: Associate チャレンジに登録したので AWS SAA ください — ののし (@nnstt1) June 14, 2022 2022/8/30 で AWS SAA の試験内容が更新されるということを登録後に知った。 現行は SAA-C02、更新後は SAA-C03 という。...

August 14, 2022 · 1 min · @nnstt1

ansible.cfg を作成する ansible-config init コマンド

久しぶりに Ansible を触ってみたら ansible.cfg を作成する ansible-config init コマンドができていたので素振りしてみる。 ドキュメント Ansible Configuration Settings — Ansible Documentation バージョン確認 pip で最新の ansible をインストールしている。 ansible-core は v2.13.2。 GitHub を見たところ、ansible-config の init オプションは v2.12.0 から追加されているので、使うなら v2.12.0 以上で。 職場では v2.9 を使っているため、このオプションは使えない模様……。 $ ansible-config --version ansible-config [core 2.13.2] config file = None configured module search path = ['/home/nnstt1/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/nnstt1/.virtualenv/ansible/lib/python3.9/site-packages/ansible ansible collection location = /home/nnstt1/.ansible/collections:/usr/share/ansible/collections executable location = /home/nnstt1/.virtualenv/ansible/bin/ansible-config python version = 3....

August 4, 2022 · 6 min · @nnstt1

Terraform で Proxmox VE の VM パラメータ設定

前回、Terraform を使って Proxmox VE に VM を作成した。 このとき作成した main.tf は最小限の項目しか設定していなかったので、VM のパラメータを設定するように変更する。 設定項目はドキュメントを参照した。VM のネットデバイスやディスクは個別のブロックで設定するらしい。 terraform { required_providers { proxmox = { source = "telmate/proxmox" version = "~> 2.9.10" } } } provider "proxmox" { pm_api_url = "https://pve1.nnstt1.home:8006/api2/json" } resource "proxmox_vm_qemu" "terraform-test" { name = "terraform-test" target_node = "pve1" iso = "local:iso/Fedora-Server-dvd-x86_64-36-1.5.iso" ### 以下、追加した項目 bios = "ovmf" onboot = true memory = 2048 sockets = 1 cores = 2 cpu = "host" scsihw = "pvscsi" # Disk block disk { type = "scsi" storage = "local-lvm" size = "20G" format = "raw" } # Network block network { model = "vmxnet3" bridge = "vmbr0" } } 名前通りの設定をすればよいので難しい点はなさそう。...

July 31, 2022 · 1 min · @nnstt1