Azure Developer CLI (azd) は HCP Terraform でステート管理をまだできない
最近、個人的に Azure Developer CLI (azd) という超便利ツールが熱い。 azd up コマンドでインフラ含めて Azure Functions とかの実行環境をサクッと作れて、書いたコードをすぐに動かせる。 コードもテンプレートがあるのでゼロから書く必要がない。 たぶん azd だけでは自分に刺さらなかった。 Functions で Flex Consumption が使えるようになったり、生成 AI のおかげで自分でもそれっぽいコードを書けたり、色々条件が重なったからこそ今 azd の便利さの片鱗を味わえている。 そんな azd はアプリケーション実行環境の土台となる Azure リソースを Bicep を使ってプロビジョニングする。 そして、まだベータ版だが Terraform も使える。 Terraform を使うということはステート管理の話が出てくる。 当然 azd もステート管理を考慮していて、デフォルトのローカルステート(ローカル環境にステートファイルをそのまま置くやつ)に加えて、リモートステートとして Azure Storage にステートファイルを格納できる。 普段 HCP Terraform を使っている身としては「azd のステートファイルを HCP Terraform に格納できるのか」というのが気になるところ。 結論から言うと今はまだ azd で HCP Terraform にステートファイルを格納できなかった。 今回はそのことについて書く。 確認に使った各ツールのバージョンは次の通り。 azd v1.13.0 terraform v1.11.0 要約 azd で HCP Terraform を使えない理由は以下のとおり。 HCP Terraform は「VCS-driven」と「CLI-driven」という連携方法がある(「API-driven」は割愛) Plan ファイルを保存する azd では「VCS-driven」は使えない ステートロックが無効化されている azd では「CLI-driven」は使えない そもそも azd で Terraform を使うためにはいくつか設定が必要になるが、詳しくは Microsoft の公式ドキュメントを見てもらいたい。 ...
HCP Terraform で複数アカウントを使い分ける方法
仕事柄、プロジェクトごとに複数アカウントを切り替えて HCP Terraform (旧称 Terraform Cloud) を使っている。 HCP Terraform ではローカル環境などで terraform plan する前に terraform login で Plan を実行するアカウントのトークンを取得しておく必要がある。 しかし、terraform login で取得したトークンは 1 アカウント分しか保存されないので、アカウント切り替え時に都度トークンを取得する手間が発生する。 そこで、HCP Terraform のアカウントを使い分ける方法を紹介する。 要約 環境変数 TF_CLI_CONFIG_FILE を使用して CLI 設定ファイルを切り替え プロジェクトごとに .terraformrc ファイルを用意 direnv で自動的に環境変数を切り替え オプションとして ghq + peco と組み合わせて効率化 HCP Terraform のトークン Terraform ではコマンド実行時に CLI 設定ファイルが読み込まれる。 デフォルトでは $HOME/.terraformrc と $HOME/.terraform.d/credentials.tfrc.json というファイルを読み込む。 これらのファイルに設定されているトークンが HCP Terraform の認証に使われるが、使われるトークンの優先順位は次のようになる。 $HOME/.terraform.d/credentials.tfrc.json $HOME/.terraformrc .terraform.d/credentials.tfrc.json .terraform.d/credentials.tfrc.json は HCP Terraform のトークンを格納するファイル。 terraform login で取得されたトークンがこのファイルへ自動的に登録される。 ファイルの中身は以下のようになっており、HCP Terraform のドメイン app.terraform.io または Terraform Enterprise (HCP Terraform のセルフホスト版) のドメインが設定される。 ...
OpenShift に New Relic Integration をデプロイするときは kube-state-metrics に注意
「New Relic Kubernetes integration」というエージェントを使うことで Kubernetes のメトリクスを簡単に New Relic へ送ることができる。 Introduction to the Kubernetes integration | New Relic Documentation Kubernetes integration into New Relic: features, requirements, and getting started. docs.newrelic.com この Kubernetse integration は OpenShift にも対応しているが、kube-state-metrics には注意が必要。 何が起こるか:nrk8s-ksm で Warning が出続ける Kubernetes integration は Helm を使ってインストールでき、色々はリソースがデプロイされる。 そのうちの一つに nrk8s-ksm というコンポーネント (Deployment) があるが、デフォルト設定で Kubernetes integration をインストールすると、この nrk8s-ksm が次の Warning メッセージを出し続けてしまう。 Error populating KSM metrics: populate errors:, querying KSM: getting filtered metric families: error calling prometheus exposed metrics endpoint. Got status code: 400 どうすればよいか:参照する kube-state-metrics の namespace を指定する Kubernetes integration を Helm でインストールするとき、次の values.yaml が使われる。 ...
四国の Azure 導入事例集(2024 年)
ふと思い立って、2024 年の 1 年間にどれくらい四国の Azure 導入事例などが出ているか調べてみた。 調べたと言っても Google で「2024/01/01-2024/12/31」の期間で検索しただけなので漏れがあるかもしれない。 事例の詳しい内容はリンク先の記事を見てもらいたい。 今治造船株式会社(愛媛県) 愛媛が誇る造船会社「今治造船(いまぞう)」の Azure 導入事例。 2024年3月14日に公開された。 オンプレミスの基幹系システムを Azure に移行、オーバースペック回避で TCO を大幅に削減し、バックアップ/バッチ処理時間の短縮も実現 | Microsoft Customer Stories グループ全体で 10 か所の建造拠点を保有し、新造船建造量が国内トップとなっている今治造船株式会社。ここではオンプレミスの仮想化基盤上で運用されてきた基幹系システムが、Microsoft Azure ネイティブの IaaS へと「リフト」されています。これにより、オンプレミス システムにありがちな「オーバースペック」を回避し、TCO を大幅に削減。データ バックアップやバッチの処理時間短縮も実現しています。またこの移行にあたっては、Azure Migrate による必要リソースのアセスメントや、Azure Migrate & Modernize による各種支援、Azure への移行でさらに 3 年間無償でセキュリティ更新プログラムを受けられる Windows Server 2012 の拡張セキュリティ更新プログラムなども活用。FastTrack for Azure もプロジェクトに参画し、テスト フェーズで発生した問題のスピーディな解決などで、大きな貢献を果たしています。 www.microsoft.com 事例記事によると、VMware で構築されたオンプレの基盤を Azure にリフトして IaaS を使っているらしい。 ぜひ苦労話をコミュニティでお話ししてもらいたいものだ。 なお、今治造船には「いまぞう君」というゆるキャラが存在する。 株式会社 石垣(香川県) 「株式会社 石垣」は香川県坂出市に工場や開発センターを持つ水インフラ関連の企業(本社は東京)。 2024年5月17日に Azure Machine Learning の導入事例が公開された。 環境機器の IoT データ プラットフォーム「miyoru」、Azure ML による予測モデルの実装で新たなフェーズへ | Microsoft Customer Stories IoT で収集したデータの可視化や分析をサービスとして提供する「ISHIGAKI Cyber Platform “miyoru”」を Microsoft Azure 上で実現し、2022 年 8 月にリリースした株式会社 石垣。現在はこの miyoru に AI 機能を搭載する取り組みが進められています。その AI エンジンとして採用されているのが、Microsoft Azure Machine Learning です。既に Azure 上で構築されていた IoT 基盤と、AI エンジンをダイレクトに連携させることで、学習のためのデータ パイプラインを完全に自動化。これによってスピーディかつ人手に頼らない学習を可能にしたのです。2023 年 8 月には、AI を搭載した miyoru のコンセプト展示も実施。今後は Microsoft Azure OpenAI Service とも連携させ、プラットフォームとしての強みをさらに強化していく計画です。 www.microsoft.com パートナーは株式会社ナレッジコミュニケーションズ。 同社会社情報によると、いくつかの「Specialization」や「Microsoft Mixed Reality パートナー プログラム認定パートナー」を取得されており、かつ「Microsoft Japan Partner of the Year 2023 (AI Partner Award)」を受賞されているらしい。 ...
2024 年振り返りと 2025 年の抱負
2024 年の振り返りと 2025 年の抱負を掲げます。 今回の振り返りの項目はこちらの記事を参考にしました。 「2024年の振り返り」と「2025年の抱負」 | Security Akademeia【セキュリティアカデメイア】 本記事には、現時点で公表可能な内容のみを記載しています。大抵の場合、裏ではさまざまな案件が同時進行しています。進行中の案件については公開できませんし、完了した案件であっても、まだ... akademeia.info ちなみに 2024 年の初詣で引いたおみくじはこんな感じでした。 今年はがんばり pic.twitter.com/NX0WTS21pH — ののし (@nnstt1) January 2, 2024 2024 年の目標を達成できたか 2024 年の目標は 2 つでした。 Azure 資格全冠 コミュニティ活動に取り組む Azure 資格全冠 ⇒ 未達成 2023 年末の時点では Azure の資格を 9 個所得していて全冠まで折り返し地点でしたが、残念ながら 2024 年は Azure の資格試験を 1 つも受けることなく終わってしまいました。 それどころか、数日前に取得済みの AZ-204 の更新を怠って失効してしまい、全冠が遠のいてしまいました。 コミュニティ活動に取り組む ⇒ 達成 2024 年はコミュニティの勉強会などで 6 回登壇する機会がありました。 特筆すべき点としては「初めてオフライン登壇した」ことです。 オンラインでの登壇はコロナ禍前からやっていましたが、コロナ禍が明けてやっと現地参加できるようになってオフラインでの登壇が叶いました。 一方、2023 年末はこんなことも書いていました。 より登壇回数を増やしたり、運営サイドの行動ができたらと。 できれば近場の方々と Azure などの勉強会などを開けるようになにかした行動を起こしたいです。 コミュニティの運営寄りの活動としては、HashiTalks: Japan で MC をやったことや、四国の Azure コミュニティ「しこあず」を立ち上げたことが 2024 年の成果かと思います。 ...
Hugo で画像をポップアップ表示させる
このブログは Hugo に PaperMod というテーマを入れている。 このテーマは画像の横幅が決まっているため、以下のように大きいサイズの画像を貼り付けると画像の内容が分かりづらくなってしまう。 どうにかできないかと調べたら Lightbox という JavaScript ライブラリを使えば画像をポップアップ表示できそうということが分かった。 こちらのサイトを参考に Hugo に Lightbox を入れていく。 Adding lightbox to Hugo julianstier.com Lightbox 導入 準備 Lightbox を GitHub のリリースページからダウンロード Releases · lokesh/lightbox2 THE original Lightbox script (v2). Contribute to lokesh/lightbox2 development by creating an account on GitHub. github.com CDN もあるらしいけど今回は一旦ローカル保存 lightbox2 - Libraries - cdnjs - The #1 free and open source CDN built to make life easier for developers Lightbox is small javascript library used to overlay images on top of the current page. It's a snap to setup and works on all modern browsers. - Simple. Fast. Reliable. Content delivery at its finest. cdnjs is a free and open-source CDN service trusted by over 12.5% of all websites, serving over 200 billion requests each month, powered by Cloudflare. We make it faster and easier to load library files on your websites. cdnjs.com 必要なファイルの配置 CSS /assets/css/extended/ に Lightbox の CSS ファイル lightbox.min.css を配置 JavaScript /static/js/ に Lightbox の JS ファイル lightbox.min.js を配置 テーマのヘッダーに CSS を追加 PaperMod の /themes/PaperMod/layouts/partials/head.html を /layouts/partials/head.html にコピーして以下を追加 ...
OpenShift Logging でログを New Relic に転送する
OpenShift Container Platform では「OpenShift Logging」という Operator をインストールしてロギングの機能を追加できる。 この OpenShift Logging を使ってコンテナのログを New Relic に転送できるか試した。 バージョンの仕様変更 執筆時点の OpenShift Logging の最新バージョンは 6.1.0 だが、6.0.0 になったタイミングで仕様変更が入っている。 特に ClusterLogging.logging.openshift.io と ClusterLogForwarder.logging.openshift.io という API が無くなり、ClusterLogForwarder.observability.openshift.io に統一された。 今回試したのは 5.9.9 の環境なのでログ転送に ClusterLogForwarder.logging.openshift.io を使っているが、ドキュメントを見る限り 6.0.0 以降の ClusterLogForwarder.observability.openshift.io でも同じように動きそう。 Vector OpenShift Logging では Vector というログやメトリクスなどの可観測性データを収集・加工・送信するツールをコレクターとして使っている。 OpenShift Logging をインストールすると DaemonSets として collector がデプロイされて、Pod の中で Vector コンテナが動いてログを集めて転送する。 この Vector が New Relic 宛のログ転送をサポートしていれば可能かも、ということで調べてみるとベータ版だけどドキュメントが見つかった。 New Relic sink Deliver events to New Relic vector.dev ドキュメント見る限り、Vector に New Relic 用の設定ができればログ転送できそう。 ...
Azure ポータルに表示される AKS の API サーバーアドレスの謎を追う
こちらは Microsoft Azure Advent Calendar 2024 の 6 日目の記事です。 AKS の API サーバーアドレスの謎 Azure ポータルでいろいろな AKS クラスタの状態を眺めていたところ、AKS の概要ページにある 「API サーバーアドレス」に表示されている内容がクラスタによって異なることに気づきました。 当然クラスタごとに一意となる文字列は異なるのですが、ドメイン部分が大きく異なります。 以下は状況を再現したクラスタのスクショです。 表示されている API サーバーアドレスには hcp.<location>.azmk8s.io と 00000000-0000-0000-0000-000000000000.privatelink.<location>.azmk8s.io の 2 種類あります。 クラスタ A の API サーバーアドレス aks-public-aks-public-fqdn-c209fd-mytdol9d.hcp.japaneast.azmk8s.io クラスタ B の API サーバーアドレス aks-public-aks-public-fqdn-c209fd-rzz0g24p.a47e9794-80a7-4088-9a92-3706e050f9cc.privatelink.japaneast.azmk8s.io 両クラスタともプライベート AKS クラスタとして構築しています。 パブリックアクセスはできないので、VPN などを使っていない端末では Azure ポータルからクラスタのリソースを見ようとしてもエラーになってしまいます。 同じプライベート AKS クラスタなのにどうして差が生まれてしまうのでしょうか? 結論から AKS の「パブリック FQDN enablePrivateClusterPublicFqdn」という設定によって API サーバーアドレスに表示される内容が変わります。 プライベート Azure Kubernetes Service (AKS) クラスターを作成する - Azure Kubernetes Service プライベート Azure Kubernetes Service (AKS) クラスターの作成方法について説明します。 learn.microsoft.com Azure CLI では --disable-public-fqdn オプションをつけて新規クラスタを作成、または既存クラスタを更新することで「パブリック FQDN」を無効化できます。 つまりデフォルトは有効状態です。 ...
Terraform v1.10 で Ephemeral resources が使えるようになったので AzureRM Provider で試してみた
こちらは エーピーコミュニケーションズ Advent Calendar 2024 の 1 日目の記事です。 Ephemeral values の登場 先日リリースされた Terraform v1.10.0 で Ephemeral values という新しい機能が登場しました。 Terraform 1.10 improves handling secrets in state with ephemeral values Terraform 1.10 is generally available, and it includes ephemeral values along with improvements to plan and apply performances. www.hashicorp.com Ephemeral values は次の要素で構成されています。 Ephemeral input variables / Ephemeral output variables Ephemeral resources Write-only attribute (v1.11 で追加予定) この中でも今回は Ephemeral resources に焦点を当ててみます。 ...
HCP Vault Dedicated で Secrets Sync が利用できるようになったので試してみた
HashiCorp Vault に Secrets Sync という機能があります。 これは Vault で管理しているシークレットを Azure Key Vault などのクラウドプロバイダが持つシークレットマネージャーや GitHub Actions などの開発ツールに同期できるものです。 Secrets Sync は Vault Enterprise で使えるようになり、マネージドサービスの HCP Vault Dedicated にもベータ機能として公開されていたんですが、不具合があったのかしばらくして利用できなくなっていました。 その後、2024年11月11日にリリースされた v1.18.1 で HCP Vault Dedicated の Secrets Sync が復活、正式に利用できるようになったので試してみました。 Secrets Sync を有効化 検証用の HCP Vault Dedicated クラスタを立てていたので、まずはそのクラスタで Secrets Sync を試しました。 HCP Vault Dedicated にログインすると Secrets Sync のメニューが追加されています。 Secrets Sync を使うには事前に有効化が必要なようです。 Vault Enterprise では自前で Secrets Sync の activate 作業が必要だったので、それと同じ役割なのでしょう。 [Enable] を押すと警告文が表示されるので、チェックをいれて [Confirm] を選択。 ...