Red Hat Enterprise Linux/CentOS Linuxと互換性があり、無償利用が可能なLinux OSの候補としては、「AlmaLinux」が挙げられることがよくある。これをAzureの仮想マシンにインストール(デプロイ)する際、注意が必要な「OSイメージ」について説明する。
対象: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イメージについて説明したい。
AzureでAlmaLinuxのVMをデプロイする場合、通常はAzure MarketplaceにあるAlmaLinuxのOSイメージを利用することになる。
以下の画面はAzure Portalの「Marketplace」で「almalinux」という名前を検索した結果である。執筆時点では540個ほどのAlmaLinuxベースのOSイメージが見つかった。
このうちの大部分はサードパーティー企業が提供する有償のOSイメージで、VMの使用料とは別に利用料金がかかる。試用するなら、まずは運営元であるAlmaLinux OS Foundationが提供する公式かつ無償のOSイメージから始めるのがよい。それには、[発行元名]に「almalinux」と指定して絞り込む。
執筆時点でAlmaLinux OS Foundationは3種類のOSイメージを提供している(それぞれに、バージョンなどが異なる複数のバリエーションがある)。
特に制約がなければ、x64アーキテクチャである「AlmaLinux OS (x86_64/AMD64)」を選ぶとよいだろう。以下では、このOSイメージを利用する前提で説明する。
以上を踏まえつつ、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: {
// ……<中略>……
}
}
}
}
}
重要なのは、変数「imageReferences」のキー「AlmaLinux9gen2.offer」(VMリソースの定義では「properties.imageReference.offer」に該当)の値である。前述した「AlmaLinux OS (x86_64/AMD64)」のOSイメージを選択する場合、それを表す「almalinux-x86_64」をここに指定する必要がある。
VMリソース定義のキー「properties.imageReference」では、前述の「offer」の他、上記リストのように「publisher」「sku」「version」も指定する必要がある。ただ、これらに指定できる値はOSイメージによって異なる。そこで、指定可能な値をAzure CLIで確認する方法を紹介する。
「publisher」(Azure portalでは「出版社」と翻訳されている)の一覧は、「az vm image list-publishers」コマンドで確認できる。ただ、そのまだと大量に表示されてしまうので、以下のように「--query」オプションで「almalinux」を含むpublisherだけに限定した方がよい。
az vm image list-publishers -l <リージョン> --query "[?contains(name, 'almalinux')]" -o table
執筆時点で「publisher」は、AlmaLinux OS Foundation公式の「almalinux」一択だろう。
「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
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」を指定すればよい。
「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」オプションを指定すること。
上記の場合、AlmaLinux 9/第2世代VM/x64アーキテクチャのOSイメージには、4個のバージョンがあることが分かる。
画面内の一覧表の列見出しにある「Urn」は、publisher/offer/sku/versionを一括して指定できる文字列だ。この後で説明する「az vm image show」コマンドなどで、「--urn」オプションとともに指定すると、それだけで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」のようなバージョン番号そのものを指定する必要がある。
上記の内容は、VMリソース定義の細かい指定に必要となる。例えば、キー「plan」にnull以外の有意な値(購入プラン)が指定されていたら、VMリソース定義のキー「plan」にも同じ内容を指定する必要がある。
また、キー「features.name」に値「SecurityType」がない場合、トラステッド起動などのセキュリティ機能が利用できないので、VMリソース定義のキー「property.securityProfile」などにそれらの機能を加えないようにする必要がある(加えるとエラーになる)。
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」[英語]参照)。
この方針変更後でも、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】初版公開。
Copyright© Digital Advantage Corp. All Rights Reserved.