こんにちは、Aireです。
今回はAzure VMで利用可能なOSイメージを、Azure CLIを使用して検索する方法を紹介します。
Azure CLIでOSイメージを表示する
Azure CLIを使用してaz vm image list
コマンドを実行すると、利用可能なOSイメージを表示できます。
<実行例>
1 2 3 4 5 6 7 8 9 |
$ az vm image list --all --location japaneast \ --architecture x64 --offer RHEL --publisher RedHat \ --query "reverse(sort_by([?offer=='RHEL' && starts_with(version,'8.6')],&version))" \ --output table Publisher Offer Sku Version Architecture Urn ----------- ------- ---------- -------------- -------------- ------------------------------------- RedHat RHEL 8_6 8.6.2023053115 x64 RedHat:RHEL:8_6:8.6.2023053115 RedHat RHEL 86-gen2 8.6.2023053115 x64 RedHat:RHEL:86-gen2:8.6.2023053115 (…省略…) |
以下、コマンドの実行時に指定するオプションを記載します。(イメージの絞り込みまたは出力に関するオプションのみ記載します)
<オプション>
オプション情報 | 必須/任意 | オプションの説明 |
---|---|---|
--all | 任意 | 全てのイメージを表示します。省略すると、オフラインでキャッシュされたイメージのみが表示されます。 |
--location または -l | 任意 | イメージの共有元となるリージョンを指定します。あらかじめaz configure --defaults location=<location> コマンドで既定のリージョンを指定しておくと、本オプションは省略可能です。 |
--architecture | 任意 | イメージのアーキテクチャを指定します(x64またはArm64)。 |
--offer または -f | 任意 | イメージのグループ名を指定します(WindowsServerやRHELなど)。完全一致ではなく部分一致による検索が行われます。 |
--publisher または -p | 任意 | イメージの発行元を指定します(MicrosoftWindowsServerやRedHatなど)。完全一致ではなく部分一致による検索が行われます。 |
--sku または -s | 任意 | イメージのメジャーリリースを指定します(2019-datacenter-gensecondや8-lvm-gen2など)。完全一致ではなく部分一致による検索が行われます。 |
--query | 任意 | グローバルパラメータの1つ。コマンドの結果に対してJMESPathクエリを実行できます。 JMESPathは、CLI の出力からデータを選択して変更できるようにする、JSON用のクエリ言語です。 |
--output または -o | 任意 | グローバルパラメータの1つ。実行結果の表示形式を指定します。表示形式の種類は以下のAzure公式ドキュメントを参照してください。 |
<コマンドの出力情報>
出力情報 | 出力情報の説明 | 出力例 |
---|---|---|
Architecture | イメージのアーキテクチャ | x64 |
Publisher | イメージの発行元 | MicrosoftWindowsServer |
Offer | イメージのグループ | WindowsServer |
Sku | イメージのメジャーリリース | 2022-datacenter-azure-edition |
Version | SKUのバージョン | 20348.1487.230106 |
Urn | イメージの識別子。publisher、offer、sku、versionをコロン(:)で連結した値 | MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition:20348.1487.230106 |
特定のOSのイメージを新しい順に表示する
各OSのイメージを新しい順に表示するためのコマンド例を紹介します。また、表示するOSイメージの前提として、ここでは第2世代仮想マシンのイメージのみを表示します。
第1世代仮想マシンと第2世代仮想マシンの違いは以下の公式サイトを参照してください。
Windows Server
Windows Serverを表示する場合、イメージの発行元に関連するオプション--offer
と--publisher
の値をそれぞれ以下のように指定します。
オプション | 引数値 |
---|---|
--offer | WindowsServer |
--publisher | MicrosoftWindowsServer |
以下、Windows Serverの各バージョンの表示方法を紹介します。
Windows Server 2019
--query
オプションでaz vm image list
コマンドの出力結果からsku
が2019-datacenter-gensecond
且つversion
の先頭が17763
から始まるイメージを抽出し、version
情報に含まれる日付でソートします。出力結果には、urn
のみを含めています。
<コマンド例>
1 2 3 4 |
$ az vm image list --all --location japaneast \ --architecture x64 --offer WindowsServer --publisher MicrosoftWindowsServer \ --query "reverse(sort_by([?sku=='2019-datacenter-gensecond' && starts_with(version,'17763')],&version))[].{Urn:urn}" \ --output table |
<実行結果>
1 2 3 4 5 6 7 8 |
Urn -------------------------------------------------------------------------------- MicrosoftWindowsServer:WindowsServer:2019-datacenter-gensecond:17763.4377.230505 MicrosoftWindowsServer:WindowsServer:2019-datacenter-gensecond:17763.4252.230404 MicrosoftWindowsServer:WindowsServer:2019-datacenter-gensecond:17763.4131.230311 MicrosoftWindowsServer:WindowsServer:2019-datacenter-gensecond:17763.4010.230207 MicrosoftWindowsServer:WindowsServer:2019-datacenter-gensecond:17763.3887.230107 (…省略…) |
Windows Server 2022
Windows Server 2022の場合は、az vm image list
コマンドの出力結果を、version
情報に含まれる日付で直接ソートしても上手くできませんでした。
理由は、version情報の20348.xxxx.yyyyyy
に含まれるxxxx
の部分について、最新イメージ(以下実行例の場合、1726)よりも特定の古いイメージ(以下実行例の場合、887)の方が先頭の値が大きいためです。
1 2 3 4 5 6 7 8 9 |
Version ----------------- 20348.887.220806 20348.825.220704 20348.768.220609 20348.707.220505 20348.1726.230505 20348.1668.230404 (…省略…) |
そのため、以下のコマンド例では、--query
オプションでsku
が2022-datacenter-azure-edition
(通常エディションが良い場合は2022-datacenter-g2
を指定)であるイメージのurn
のみをtsvフォーマットで抽出し、その後、sort
コマンドを使用して、20348.xxxx.yyyyyy
に含まれるyyyyyy
の部分を対象にソートしています。
<コマンド例>
1 2 3 4 |
$ az vm image list --all --location japaneast \ --architecture x64 --offer WindowsServer --publisher MicrosoftWindowsServer \ --query "[?sku=='2022-datacenter-azure-edition'].{Urn:urn}" \ --output tsv | sort -r -t "." -k 3 |
<実行結果>
1 2 3 4 5 6 7 |
MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition:20348.1726.230505 MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition:20348.1668.230404 (…省略…) MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition:20348.1129.221007 MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition:20348.1006.220908 MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition:20348.887.220806 MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition:20348.825.220704 |
Red Hat Enterprise Linux Server
Red Hat Enterprise Linux Serverを表示する場合、イメージの発行元に関連するオプション--offer
と--publisher
の値をそれぞれ以下のように指定します。
オプション | 引数値 |
---|---|
--offer | RHEL |
--publisher | RedHat |
以下、Red Hat Enterprise Linux Serverの各バージョンの表示方法を紹介します。
RHEL 8
--sku gen2
で第2世代仮想マシンを指定し、--query
オプションでaz vm image list
コマンドの出力結果からoffer
がRHEL
且つversion
の先頭が8.
(マイナーバージョンまで絞り込む場合は8.6
など)から始まるイメージを抽出し、version
情報に含まれる日付でソートします。出力結果には、urn
のみを含めています。
<コマンド例>
1 2 3 4 |
$ az vm image list --all --location japaneast \ --architecture x64 --offer RHEL --publisher RedHat --sku gen2 \ --query "reverse(sort_by([?offer=='RHEL' && starts_with(version,'8.')],&version))[].{Urn:urn}" \ --output table |
<実行結果>
1 2 3 4 5 |
Urn ------------------------------------- RedHat:RHEL:88-gen2:8.8.2023310512 RedHat:RHEL:8-lvm-gen2:8.7.2023022813 (…省略…) |
RHEL 9
RHEL 8と同じように、--sku gen2
で第2世代仮想マシンを指定し、--query
オプションでaz vm image list
コマンドの出力結果からoffer
がRHEL
且つversion
の先頭が9.
(マイナーバージョンまで絞り込む場合は9.2
など)から始まるイメージを抽出し、version
情報に含まれる日付でソートします。出力結果には、urn
のみを含めています。
<コマンド例>
1 2 3 4 |
$ az vm image list --all --location japaneast \ --architecture x64 --offer RHEL --publisher RedHat --sku gen2 \ --query "reverse(sort_by([?offer=='RHEL' && starts_with(version,'9.')],&version))[].{Urn:urn}" \ --output table |
<実行結果>
1 2 3 4 5 |
Urn ------------------------------------- RedHat:RHEL:91-gen2:9.1.2023041316 RedHat:RHEL:9-lvm-gen2:9.1.2023041316 (…省略…) |
Ubuntu Server
Ubuntu Serverを表示する場合、イメージの発行元に関連するオプション--offer
と--publisher
の値をそれぞれ以下のように指定します。
オプション | 引数値 |
---|---|
--offer | バージョンが20.04より前:UbuntuServer バージョンが20.04以降:0001-com-ubuntu-server |
--publisher | Canonical |
以下、Ubuntu Serverの各バージョンの表示方法を紹介します。
Ubuntu Server 20.04より前
--sku lts-gen2
で第2世代仮想マシンおよび長期サポート版(LTS)のイメージを指定し、--query
オプションでaz vm image list
コマンドの出力結果をversion
情報に含まれる日付でソートします。出力結果には、urn
のみを含めています。その後、grep
コマンドでイメージ名にdaily
や_0-
が含まれるものを除外します。
<コマンド例>
1 2 3 4 |
$ az vm image list --all --location japaneast \ --architecture x64 --offer UbuntuServer --publisher Canonical --sku lts-gen2 \ --query "reverse(sort_by([],&version))[].{Urn:urn}" \ --output table | grep -v "daily" | grep -v "_0-" |
<実行結果>
1 2 3 4 5 6 |
Urn --------------------------------------------------------------------------------- Canonical:UbuntuServer:18_04-lts-gen2:18.04.202305220 Canonical:UbuntuServer:18_04-lts-gen2:18.04.202305010 Canonical:UbuntuServer:18_04-lts-gen2:18.04.202304270 (…省略…) |
特定のバージョンを表示する場合は、以下のようにstarts_with
関数を使用します。
<コマンド例>
1 2 3 4 |
$ az vm image list --all --location japaneast \ --architecture x64 --offer UbuntuServer --publisher Canonical --sku lts-gen2 \ --query "reverse(sort_by([?starts_with(version,'16.')],&version))[].{Urn:urn}" \ --output table | grep -v "daily" | grep -v "_0-" |
<実行結果>
1 2 3 4 5 6 |
Urn --------------------------------------------------------------------------------- Canonical:UbuntuServer:16_04_0-lts-gen2:16.04.202109280 Canonical:UbuntuServer:16_04-lts-gen2:16.04.202109280 Canonical:UbuntuServer:16_04_0-lts-gen2:16.04.202106110 (…省略…) |
Ubuntu Server 20.04以降
--sku lts-gen2
で第2世代仮想マシンおよび長期サポート版(LTS)のイメージを指定し、--query
オプションでaz vm image list
コマンドの出力結果をversion
情報に含まれる日付でソートします。出力結果には、urn
のみを含めています。その後、grep
コマンドでイメージ名にdaily
が含まれるものを除外します。
<コマンド例>
1 2 3 4 |
$ az vm image list --all --location japaneast \ --architecture x64 --offer 0001-com-ubuntu-server --publisher Canonical --sku lts-gen2 \ --query "reverse(sort_by([],&version))[].{Urn:urn}" \ --output table | grep -v "daily" |
<実行結果>
1 2 3 4 5 6 |
Urn --------------------------------------------------------------------------------- Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:22.04.202306010 Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:22.04.202305160 Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:22.04.202304280 (…省略…) |
特定のバージョンを表示する場合は、以下のようにstarts_with
関数を使用します。
<コマンド例>
1 2 3 4 |
$ az vm image list --all --location japaneast \ --architecture x64 --offer 0001-com-ubuntu-server --publisher Canonical --sku lts-gen2 \ --query "reverse(sort_by([?starts_with(version,'20.')],&version))[].{Urn:urn}" \ --output table | grep -v "daily" |
<実行結果>
1 2 3 4 5 6 |
Urn --------------------------------------------------------------------------------- Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:20.04.202305150 Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:20.04.202304260 Canonical:0001-com-ubuntu-server-focal:20_04-lts-gen2:20.04.202304180 (…省略…) |