本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「Azure Red Hat OpenShift を Terraform でコード化!」を再編集したものです。
こちらはFIXER Advent Calendar 2022の15日目の記事です。
はじめに
皆さんお久しぶりです、FIXERの石井です。
なかなかブログに手が出せずに半年以上間隔があいてしまいました。
今日はTerraformを使ってARO(Azure Red Hat OpenShift)を構築してみようと思います。
null_resourceで作ることも可能ですが、今回はazapi_resourceで書いていこうと思います。
azapi_resourceについては知りたい方は下記の記事をご覧ください。
https://tech-blog.cloud-config.jp/2022-12-05-azapi-resource
今回TerraformでAROを構築する処理は、下記チュートリアルの
に対応します。そのため、事前に
を参考に、AROの作成準備を行う必要があるのでご了承ください。
TerraformでAROを構築する(コード)
variables.tf
main.tf
TerraformでAROを構築する(解説)
先ほど貼ったコードについて解説していきます。
variables.tfに関してはそれぞれの変数をざっと解説します。
variables.tfの解説
注意が必要なものに個別で説明すると、
cluster_domain_nameは先頭がアルファベットの小文字、それ以外はアルファベットの小文字+数字の全8桁で構成する必要があり、他の人が作ったリソースと名前が被ってはいけません。8桁ぴったりにする必要があるかは検証してないですが、先頭が数字だと処理が失敗することは確認しています。
virtual_network_name,master_subnet_name,worker_subnet_nameはチュートリアルで説明されているARO用の空のサブネットを指定します。
pod_cidr,service_cidrは特にこだわりがなければそのままの値で大丈夫です。
pull_secretはプルシークレットの中身をそのまま渡せば動作します(セキュリティ的にはよくないですが)。
もし必要ない場合は適当な文字列を渡してあげれば大丈夫です。
それでは、肝心の処理の部分に関してコードを切り分けてそれぞれ説明していこうと思います。
初期宣言
初歩的な部分ですが、今回はazurerm,azuread,azapiの3つのプロバイダーを使っているのでそれぞれにパラメータを渡してあげます。
パラメータは同じものがそのまま使えるので楽ですね。
locals/data定義
ここの処理も初歩的な部分なので、特筆すべき点はないですね。
localsのaro_resoruce_provider_nameはARO固有のリソースプロバイダー名なので変更する必要はないですが、バージョンアップ等で変わるかもしれないのでご注意ください。
ARO用のサービスプリンシパルの作成&権限付与
ARO専用のサービスプリンシパルを作る処理です。
ここではサブスクリプションの共同作成者権限を与えていますが、権限に関しては要件に合わせて適宜調整して使ってください。
リソースプロバイダーサービスプリンシパルの権限付与
ここはTerraform化する際の引っかかりポイントです。
チュートリアルのaz aro createのコマンドだと自動でやってくれているので、Terraform化する際に権限が足りないよエラーで沼ることになります(N敗)。
ここの処理を説明するためにこのブログを書いているといっても過言じゃないです。
OpenShiftクラスターの作成
基本的にはチュートリアルと同じ構成で作るようにしています。
ポイントとしては、AROの構築は時間がかかるのでタイムアウトまでの時間を60分に伸ばしています。
更新と削除のタイムアウトは不要かもしれないですが、念のためつけています。
おわりに
今回はTerraformでAROを構築してみました。さらっとAzureに関するTerraformプロバイダーを3つも使っているので、学習難易度はちょっと高いかもしれないです。
この3つのプロバイダーを使えば全てのAzureのリソース構築を自動化できると思うので、もっと使いこなせるようになって、いろんなリソースの自動化を進めていきたいと思います。
おまけ
後日Microsoft公式のドキュメントでazapiを使った実装コードを見つけました。今回苦労した部分もばっちりコード化されていて、ちょっぴり落ち込みました。
https://learn.microsoft.com/en-us/samples/azure-samples/aro-azapi-terraform/aro-azapi-terraform/
石井 汰樹/FIXER
高専卒の2020年4月入社。四日市事業所所属。
インフラ関連の知見を深めていきたい。
この連載の記事
-
TECH
AzureストレージアカウントのPremiumなオプションを覚えてみる -
TECH
データ分析を楽しみながら学ぼう! Microsoft Fabricコミュニティとは -
TECH
通常2万円が無料! 「Microsoft Fabric」のMCP資格(DP-600)を受験しよう【2024年末まで!】 -
TECH
法人向け「Microsoft Entra ID P2ライセンス」を個人で購入する方法 -
TECH
環境ごとに異なるTerraformのバックエンド設定を効率化、override.tfの使い方 -
TECH
Azure FunctionsとAzureのサービスを連携させる方法 -
TECH
PlaywrightをAzure Functionsにデプロイして動かす方法 -
TECH
Windows Admin Centerとは? ― 2020年代の新しい運用管理のカタチ -
TECH
Azureの管理コスト削減! リソースのタグ付けを自動化しよう -
TECH
Logic Appsでリソースのサブスクリプションを移動させる方法+注意点 -
TECH
生成AIで大注目のOpen InterpreterとAzure CLIを使ってリソースを自動作成してみた - この連載の一覧へ