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

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

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

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

Proxmox VE を管理するため Terraform に入門した

先日構築した Proxmox VE クラスタを IaC で管理したいと思い、重い腰を上げてついに Terraform に入門した。 Terraform はクラウドリソースを管理するのがメインと思っていたけど、幸いにも Proxmox VE にも対応している。 「対応している」よりは「誰かが対応するように Provider というものを作ってくれている」という表現のほうが正しい。 Proxmox VE で VM やコンテナを作るための「Proxmox Provider」というものが公開されている。 Terraform Registry - proxmox 手始めに Proxmox Provider のドキュメントに沿って VM を作成してみる。 Proxmox VE Terraform 用ユーザ/ロールの作成 Proxmox VE に Terraform が利用するユーザとロールを作成する。 クラスタ管理権限を付与することもできるが、必要最低限の権限を割り当てることでセキュリティリスクを低減する。 root@pve1:~# pveum role add TerraformProv -privs "VM.Allocate VM.Clone VM.Config.CDROM VM.Config.CPU VM.Config.Cloudinit VM.Config.Disk VM.Config.HWType VM.Config.Memory VM.Config.Network VM.Config.Options VM.Monitor VM.Audit VM.PowerMgmt Datastore.AllocateSpace Datastore.Audit" root@pve1:~# pveum user add terraform-prov@pve --password <password> root@pve1:~# pveum aclmod / -user terraform-prov@pve -role TerraformProv 作成したロールとユーザを確認する。 表形式で出力されるが見切れてしまっている。...

July 30, 2022 · 5 min · @nnstt1