【Azure】AlmaLinuxの仮想マシン(VM)を作成する際の注意点(CentOS7代替)Tech TIPS

Red Hat Enterprise Linux/CentOS Linuxと互換性があり、無償利用が可能なLinux OSの候補としては、「AlmaLinux」が挙げられることがよくある。これをAzureの仮想マシンにインストール(デプロイ)する際、注意が必要な「OSイメージ」について説明する。

» 2024年10月09日 05時00分 公開
[島田広道デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

AlmaLinuxをAzureのVMにデプロイする際の注意点

対象:Azure Virtual Machine(仮想マシン)、AlmaLinux、Bicep


 「Red Hat Enterprise Linux」(以下、「RHEL」)と互換性があり、無償利用が可能だった「CentOS Linux 7」は、2024年6月でサポートが終了してしまった。

 かといって、Ubuntuなど使い勝手が異なる別系列のLinuxディストリビューションに移行するのは、ハードルが高い。やはり無償利用が可能で、かつRHEL互換OSを使い続けたい、と考える人は多いのではないだろうか?

 その候補の一つとして挙げられるのが「AlmaLinux」だ。CloudLinux社など複数企業からの支援を受けつつ、コミュニティー主体で開発されてきた。これまでRHEL 8/9の各バージョンのリリースから間を空けずに同一バージョンがリリースされた他、クラウドサービス向けのOSイメージも提供されている。CentOS Linuxの有力な代替候補として挙げられることも多い。

 本Tech TIPSでは、このAlmaLinuxをAzureの仮想マシン(VM)としてデプロイする際、注意が必要なOSイメージについて説明したい。

■執筆時の各種ツール/APIのバージョン

  • Azure CLI: Ver. 2.64.0
  • Bicep CLI: Ver. 0.30.23
  • デプロイ時のAPIバージョン:2024-07-01(仮想マシン生成)

Azureで多数のAlmaLinuxのOSイメージから1つを選ぶには

 AzureでAlmaLinuxのVMをデプロイする場合、通常はAzure MarketplaceにあるAlmaLinuxのOSイメージを利用することになる。

 以下の画面はAzure Portalの「Marketplace」で「almalinux」という名前を検索した結果である。執筆時点では540個ほどのAlmaLinuxベースのOSイメージが見つかった。

Azure Marketplaceで「almalinux」という名前で探すと見つかるOSイメージ(一部) Azure Marketplaceで「almalinux」という名前で探すと見つかるOSイメージ(一部)

 このうちの大部分はサードパーティー企業が提供する有償のOSイメージで、VMの使用料とは別に利用料金がかかる。試用するなら、まずは運営元であるAlmaLinux OS Foundationが提供する公式かつ無償のOSイメージから始めるのがよい。それには、[発行元名]に「almalinux」と指定して絞り込む。

「AlmaLinux OS Foundation」提供のAlmaLinuxのOSイメージ 「AlmaLinux OS Foundation」提供のAlmaLinuxのOSイメージ

 執筆時点でAlmaLinux OS Foundationは3種類のOSイメージを提供している(それぞれに、バージョンなどが異なる複数のバリエーションがある)。

  • AlmaLinux OS (x86_64/AMD64): x64アーキテクチャ向け
  • AlmaLinux OS (AArch64/ARM64): Arm64アーキテクチャ向け
  • AlmaLinux OS (x86_64/AMD64) HPC: HPC(ハイパフォーマンスコンピューティング)向け

 特に制約がなければ、x64アーキテクチャである「AlmaLinux OS (x86_64/AMD64)」を選ぶとよいだろう。以下では、このOSイメージを利用する前提で説明する。

AzureリソーステンプレートでAlmaLinuxのVMをデプロイする際のポイント

 以上を踏まえつつ、AzureでAlmaLinux公式のOSイメージを使ってVMをデプロイするためのリソーステンプレート(Bicep)の例を以下に記す。

param location string = resourceGroup().location
param vmName string
// ……<中略>……

// OSの選択
param osImageName string = 'AlmaLinux9gen2' // imageReferencesのキー名を指定
var imageReferences = {
  AlmaLinux9gen2: { // AlmaLinux 9(第2世代VM)
    offer: 'almalinux-x86_64' // x64アーキテクチャ向け
    publisher: 'almalinux' // AlmaLinux OS Foundation
    sku: '9-gen2' // バージョン9(第2世代VM)を選択
    version: 'latest' // 最新バージョンを選択(執筆時点で9.4)
  }
  AlmaLinux8gen2: { // AlmaLinux 8(第2世代VM)
    // ……<中略>……
  }
  // ……<中略>……
}

// リソース生成: 仮想マシン
resource vm 'Microsoft.Compute/virtualMachines@2024-07-01' = {
  name: vmName
  location: location
  properties: {
    storageProfile: {
      imageReference: imageReferences[osImageName]
      osDisk: {
        createOption: 'FromImage'
        name: 'osdisk-${vmName}'
        managedDisk: {
          // ……<中略>……
        }
      }
    }
  }
}

【Bicep】AlmaLinuxのVMをデプロイする(x86_64アーキテクチャ、第2世代VM)
ネットワークやセキュリティなどの設定は省いているので、必要に応じて追加/変更してほしい。
※Microsoftのレファレンス: Microsoft.Compute/virtualMachines

 重要なのは、変数「imageReferences」のキー「AlmaLinux9gen2.offer」(VMリソースの定義では「properties.imageReference.offer」に該当)の値である。前述した「AlmaLinux OS (x86_64/AMD64)」のOSイメージを選択する場合、それを表す「almalinux-x86_64」をここに指定する必要がある。

Azure VMのOSイメージの「publisher」「sku」「version」に指定できる値を確認するには

 VMリソース定義のキー「properties.imageReference」では、前述の「offer」の他、上記リストのように「publisher」「sku」「version」も指定する必要がある。ただ、これらに指定できる値はOSイメージによって異なる。そこで、指定可能な値をAzure CLIで確認する方法を紹介する。

●「publisher」を確認するには

 「publisher」(Azure portalでは「出版社」と翻訳されている)の一覧は、「az vm image list-publishers」コマンドで確認できる。ただ、そのまだと大量に表示されてしまうので、以下のように--query」オプションで「almalinux」を含むpublisherだけに限定した方がよい。

az vm image list-publishers -l <リージョン> --query "[?contains(name, 'almalinux')]" -o table



OSイメージの指定に必要な「publisher」の一覧を確認するには OSイメージの指定に必要な「publisher」の一覧を確認するには

 執筆時点で「publisher」は、AlmaLinux OS Foundation公式の「almalinux」一択だろう。

●「sku」を確認するには

 「publisher」「offer」が確定できたら、次は「az vm image list-skus」コマンドで「sku」(Stock Keeping Unit: 管理単位)を確認する。

az vm image list-skus --publisher almalinux --offer almalinux-x86_64 -l <リージョン> -o table



OSイメージの指定に必要な「sku」の一覧を確認するには OSイメージの指定に必要な「sku」の一覧を確認するには

 AlmaLinux OS FoundationのOSイメージの場合、skuはバージョン系列とVMの世代を表している。

 skuの先頭にある「8」はバージョン8系列、「8_7」はバージョン8.7系列、「9」はバージョン9系列をそれぞれ指している。一方、「gen1」「gen2」は、それぞれ「第1世代VM」「第2世代VM」を表している。

 例えばAlmaLinux 8を第1世代VMにインストールしたい場合は、「8-gen1」を指定すればよい。

●「version」を確認するには

 「publisher」「offer」「sku」が確定できたら、次は「az vm image list」コマンドで「version」を確認する。

 ただし、最新バージョンでよければ、VMのリソース定義では「latest」を指定すればよい。そうではなく、例えば「9.3」「9.2」というようにマイナーバージョンも特定したい場合は、指定可能なversionを以下のコマンドラインで確認する必要がある。

az vm image list --all --publisher almalinux --offer almalinux-x86_64 --sku <SKU> -l <リージョン> -o table



 「You are viewing an offline list of images, use --all to retrieve an up-to-date list」というメッセージが表示され、リストが全く表示されない場合は、上記コマンドラインのように「--all」オプションを指定すること。

OSイメージの指定に必要な「version」の一覧を確認するには OSイメージの指定に必要な「version」の一覧を確認するには
ここではAlmaLinux 9かつ第2世代VMを選択している。また、見やすくするために「--query "[].{Arch:architecture,Urn:urn,Version:version}"」オプションを指定して、オプションで指定していて自明な「publisher」「offer」「sku」の各列を出力から省いている。

 上記の場合、AlmaLinux 9/第2世代VM/x64アーキテクチャのOSイメージには、4個のバージョンがあることが分かる。

 画面内の一覧表の列見出しにある「Urn」は、publisher/offer/sku/versionを一括して指定できる文字列だ。この後で説明する「az vm image show」コマンドなどで、「--urn」オプションとともに指定すると、それだけでOSイメージを特定できる。

●OSイメージの詳細を確認するには

 「publisher」「offer」「sku」「version」が確定できたら、「az vm image show」コマンドを以下のように実行すると、OSイメージ自体の詳細を確認できる。

az vm image show --publisher almalinux --offer almalinux-x86_64 --sku <SKU> --version <バージョン> -l <リージョン> -o jsonc



 <バージョン>には、「latest」ではなく「9.4.2024080501」のようなバージョン番号そのものを指定する必要がある。

AlmaLinux 9/x64アーキテクチャ/第2世代VMのOSイメージの詳細(1/2) AlmaLinux 9/x64アーキテクチャ/第2世代VMのOSイメージの詳細(1/2)
AlmaLinux 9/x64アーキテクチャ/第2世代VMのOSイメージの詳細(2/2) AlmaLinux 9/x64アーキテクチャ/第2世代VMのOSイメージの詳細(2/2)

 上記の内容は、VMリソース定義の細かい指定に必要となる。例えば、キー「plan」にnull以外の有意な値(購入プラン)が指定されていたら、VMリソース定義のキー「plan」にも同じ内容を指定する必要がある。

 また、キー「features.name」に値「SecurityType」がない場合、トラステッド起動などのセキュリティ機能が利用できないので、VMリソース定義のキー「property.securityProfile」などにそれらの機能を加えないようにする必要がある(加えるとエラーになる)。

2023年のRHELソースコード公開方針変更によるAlmaLinuxへの影響は?

 Red Hatが2023年6月、RHELに含まれるOSS(オープンソースソフトウェア)のソースコード公開を、CentOS Streamのリポジトリに限定することを発表したことをご存じだろうか? 公式発表については、Red Hatのブログ記事「Red Hat’s commitment to open source: A response to the git.centos.org changes」[英語]を参照してほしい。

 以前は、RHEL自体に含まれるOSSソースコードが公開されていて、そこからRHELの完全互換OS(クローンOS)を作ることが可能だった。しかし2023年6月以降は、その公開対象がRHELとは似て非なるCentOS Streamに変わるため、RHELの完全互換OSを実現するのが非常に困難になることが予想される。

 このRed Hatの方針変更に対し、AlmaLinuxを運営する「AlmaLinux OS Foundation」は2023年7月に、従来の「1対1の互換性」からABI(アプリケーションバイナリインタフェース)の互換性を目指す方針に変えることを表明した(詳細は同団体のブログ記事「The Future of AlmaLinux is Bright」[英語]参照)。

AlmaLinux OS Foundationのサイトに掲載された今後のAlmaLinuxの方針に関するブログ記事 AlmaLinux OS Foundationのサイトに掲載された今後のAlmaLinuxの方針に関するブログ記事

 この方針変更後でも、RHELと互換性のあるアプリケーションは引き続きAlmaLinuxでも実行できる一方で、例えばRHELにあるバグがAlmaLinuxにはない、あるいはRHELにないバグがAlmaLinuxに生じる可能性がある、とのことだ。

 この発表を読む限り、「RHEL対応アプリケーションをAlmaLinuxで実行するにはソースコードからの再コンパイルしなければならない」といった手間が、ユーザー側で生じることはそうそうないように思える。ただ、実際にRHELやCentOSからの移行先システムの構築/運用にどう影響するかは、AlmaLinuxを実際に試用しながら様子を見ていくことになるだろう。

■更新履歴

【2024/10/09】最新の情報を反映しました。

【2023/08/10】冒頭の要約文で、CentOS Linux 7のサポート終了日を「2023年6月末」と記していました。正しくは「2024年6月末」でした。お詫びして訂正いたします。

【2023/08/03】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。