このページの本文へ

FIXER Tech Blog - Azure

Azure Red Hat OpenShift(ARO)をTerraformでコード化!

2023年01月30日 10時00分更新

文● 石井 汰樹/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事は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月入社。四日市事業所所属。
インフラ関連の知見を深めていきたい。

[転載元]
 Azure Red Hat OpenShift を Terraform でコード化!

カテゴリートップへ

この連載の記事