Azure の Linux VM で cloud-init を使用してパッケージを更新およびインストールする

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット

この記事では、Azure でのプロビジョニング時に、cloud-init を使用して、Linux 仮想マシン (VM) または仮想マシン スケール セットでパッケージを更新する方法を示します。 これらの cloud-init スクリプトは、Azure によってリソースがプロビジョニングされた後の最初の起動時に実行されます。 cloud-init が Azure およびサポートされている Linux ディストリビューションでネイティブに動作する方法の詳細については、cloud-init の概要に関するページをご覧ください

cloud-init で VM を更新する

セキュリティのために、初回起動時に最新の更新プログラムを適用するように VM を構成することが必要な場合があります。 cloud-init はさまざまな Linux ディストリビューションで動作するため、パッケージ マネージャーに aptzypper または yum を指定する必要はありません。 代わりに、package_upgrade を定義し、cloud-init プロセスで、使用中のディストリビューションに適したメカニズムを判断します。

この例では、Azure Cloud Shell を使用します。 実行中のアップグレード プロセスを確認するには、cloud_init_upgrade.txt という名前のファイルを作成し、次の構成を貼り付けます。 任意のエディターを使用することができます。 cloud-init ファイル全体 (特に最初の行) が正しくコピーされたことを確認してください。

下のテキストをコピーし、cloud_init_upgrade.txt ファイルに貼り付けます。 cloud-init ファイル全体 (特に最初の行) が正しくコピーされたことを確認してください。

#cloud-config
package_upgrade: true
packages:
- httpd

デプロイする前に、az group create コマンドを使用してリソース グループを作成する必要があります。 Azure リソース グループとは、Azure リソースのデプロイと管理に使用する論理コンテナーです。 次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。

az group create --name myResourceGroup --location eastus

ここで、az vm create で VM を作成し、次のように --custom-data パラメーターで cloud-init ファイルを指定します。

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data cloud_init_upgrade.txt \
  --admin-username azureuser \
  --generate-ssh-keys

注意

myResourceGroupvmNameimageCIURN の値を適宜置き換えます。 cloud-init を含むイメージが選択されていることを確認してください。

前述のコマンドからの出力に示すように、VM のパブリック IP アドレスに SSH 接続します。 実際の userpublicIpAddress を次のように入力します。

ssh <user>@<publicIpAddress>

パッケージ管理ツールを実行し、更新プログラムを確認します。

  • 次のコマンドを実行して、保留中の更新プログラムがないことを確認します
sudo yum check-update

cloud-init によって起動時に更新プログラムが確認され、インストールされるため、追加で適用する更新プログラムはありません。

  • 更新プロセス、変更されたパッケージの数、httpd のインストールを確認するには、以下のコマンドを実行して出力を確認します。
sudo yum history
ID     | Command line                                | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------------------------
     3 | -y install httpd                            | 2022-02-18 18:30 | Install        |    7
     2 | -y upgrade                                  | 2022-02-18 18:23 | I, O, U        |  321 EE
     1 |                                             | 2021-02-04 19:20 | Install        |  496 EE

次のステップ

構成変更の cloud-init の他の例については、以下をご覧ください。