Azure Linux VM エージェントの概要

Microsoft Azure Linux VM エージェント (waagent) は、Linux と FreeBSD のプロビジョニングの他に、仮想マシン (VM) と Azure ファブリック コントローラーとの相互作用を管理します。 プロビジョニング機能を提供する Linux エージェントに加えて、Azure は一部の Linux オペレーティング システムに cloud-init を使用するオプションも提供します。

Linux エージェントは、Linux と FreeBSD の Azure Virtual Machines デプロイに対して次の機能を提供します。 詳細については、GitHub にある Azure Linux VM エージェントの README を参照してください。

イメージのプロビジョニング

  • ユーザー アカウントを作成します
  • SSH 認証の種類の構成
  • SSH 公開キーとキー ペアのデプロイ
  • ホスト名の設定
  • プラットフォーム DNS へのホスト名の発行
  • プラットフォームに SSH ホスト キーのフィンガープリントを報告する
  • リソース ディスクの管理
  • リソース ディスクのフォーマットとマウント
  • スワップ領域の構成

ネットワーク

  • プラットフォーム DHCP サーバーとの互換性を向上させるためのルートの管理
  • ネットワーク インターフェイス名の安定性の保持

カーネル

  • 仮想 NUMA (カーネル 2.6.37 では無効) を構成する
  • /dev/random の Hyper-V エントロピの使用
  • リモートの可能性があるルート デバイスの SCSI タイムアウトの構成

診断

  • シリアル ポートへのコンソール リダイレクトを提供する

System Center Virtual Machine Manager のデプロイ

  • System Center Virtual Machine Manager 2012 R2 環境で Linux 用の Virtual Machine Manager エージェントが実行されている場合、それを検出してブートストラップする

VM 拡張機能

  • Microsoft やパートナーによって作成されたコンポーネントを Linux VM に挿入して、ソフトウェアと構成を自動化できるようにする

VM 拡張機能リファレンスの実装は、GitHub にあります。

通信

プラットフォームからエージェントへの情報の流れは 2 つのチャンネルを経由します。

  • 起動時にアタッチされる VM デプロイ用 DVD。 DVD には Open Virtualization Format (OVF) に準拠している構成ファイルが収録されており、このファイルに、SSH キーの組以外のすべてのプロビジョニング情報が含まれています。
  • デプロイとトポロジの構成を取得するために使用する REST API を公開する TCP エンドポイント。

要件

テストでは、次のシステムが Azure Linux VM エージェントで動作することを確認しました。

Note

この一覧は、Azure で動作保証済みの Linux ディストリビューションとは異なる場合があります。

Distribution X64 ARM64
Alma Linux 9.x 以降 9.x 以降
Debian 10+ 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ サポートされていません
Oracle Linux 6.4+、7.x+、8.x+ サポートされていません
Red Hat Enterprise Linux 6.7+、7.x+、8.x+、9.x+ 8.6+、9.0+
Rocky Linux 9.x 以降 9.x 以降
SLES 12.x+、15.x+ 15.x SP4+
Ubuntu (LTS リリース) 18.04+、20.04+、22.04+、24.04+ 20.04+、22.04+、24.04+

重要

RHEL/Oracle Linux 6.10 は、Extended Lifecycle Support を使用できる唯一の RHEL/OL 6 バージョンです。 延長メンテナンスは 2024 年 6 月 30 日に終了します

サポートされるその他のシステム:

  • エージェントは、ドキュメントに記載されているシステム以外の多くのシステムで動作します。 ただし、保証リストに記載がないディストリビューションのテストやサポートは行いません。 特に、FreeBSD は保証されていません。 FreeBSD 8 を試して問題が発生した場合は、GitHub リポジトリで issue を開くことができ、こちらからお手伝いできる場合があります。

Linux エージェントは、正しく機能するために次のシステム パッケージが必要です。

  • Python 2.6+
  • OpenSSL 1.0+
  • OpenSSH 5.3+
  • ファイル システム ユーティリティ: sfdisk、fdisk、mkfs、parted
  • パスワード ツール: chpasswd、sudo
  • テキスト処理ツール: sed、grep
  • ネットワーク ツール: ip-route
  • UDF ファイル システムのマウントのカーネル サポート

VM が IP アドレス168.63.129.16 にアクセスできることを確認してください。 詳しくは、「IP アドレス 168.63.129.16 とは」を参照してください。

インストール

Azure Linux VM エージェントをインストールおよびアップグレードする方法として、ディストリビューションのパッケージ リポジトリから RPM または DEB パッケージを使用する方法がサポートされています。 すべての動作保証済みディストリビューション プロバイダーは、Azure Linux VM エージェント パッケージをイメージとリポジトリに統合します。 一部の Linux ディストリビューションでは Azure Linux VM エージェントの自動更新機能が無効になる場合があります。また、一部のリポジトリには古いバージョンが含まれている場合があり、これらによって最新の拡張機能で問題が発生する可能性があるため、最新の安定したバージョンをインストールすることをお勧めします。 Azure Linux VM エージェントが適切に更新されるようにするために、AutoUpdate.Enabled=Y ファイルにオプション /etc/waagent.conf を含めるか、そのオプションをコメント アウトして、それを既定値にすることをお勧めします。 AutoUpdate.Enabled=N を含めると、Azure Linux VM エージェントを適切に更新することはできません。

ソースからのインストール、カスタムの場所やプレフィックスへのインストールなど、高度なインストール オプションについては、Microsoft Azure Linux VM エージェントに関するページを参照してください。 これらのシナリオ以外では、Azure Linux VM エージェントをソースからアップグレードまたは再インストールすることはサポートされておらず、推奨されていません。

コマンド ライン オプション

Flags

  • verbose: 指定したコマンドの詳細度を上げます。
  • force: 一部のコマンドの対話形式の確認をスキップします。

コマンド

  • help: サポートされているコマンドとフラグを一覧表示します。

  • deprovision: システムをクリーンアップし、再プロビジョニングに適した状態にすることが試行されます。 この操作により、次の情報が削除されます。

    • 構成ファイルで Provisioning.RegenerateSshHostKeyPairy である場合は、すべての SSH ホスト キー。
    • /etc/resolv.conf 内の Nameserver 構成。
    • 構成ファイルで Provisioning.DeleteRootPasswordy である場合は、/etc/shadow の root パスワード。
    • キャッシュされた DHCP クライアントのリース。

    クライアントは、ホスト名を localhost.localdomain にリセットします。

    警告

    プロビジョニング解除をしても、イメージからすべての機密情報がクリアされ、イメージが再配布に適した状態になることが保証されるわけではありません。

  • deprovision+user: deprovision のすべてを実行し、前回プロビジョニングされたユーザー アカウント (/var/lib/waagent から取得) と、関連するデータを削除します。 このパラメーターは、以前 Azure でプロビジョニングされたイメージをプロビジョニング解除し、キャプチャして再利用できるようにする場合に使用します。

  • version: waagent のバージョンを表示します。

  • serialconsole: GRUB で ttyS0 (最初のシリアル ポート) がブート コンソールになるように構成します。 このオプションにより、カーネルのブート ログがシリアル ポートに送信され、デバッグに使用できるようになります。

  • daemon: プラットフォームとの相互動作を管理するデーモンとして waagent を実行します。 この引数は waagent init スクリプト内で waagent に指定されます。

  • start: バックグラウンド プロセスとして waagent を実行します。

構成

構成ファイル (/etc/waagent.conf) によって waagent の動作が制御されます。 構成ファイルの例を次に示します。

Provisioning.Enabled=y
Provisioning.DeleteRootPassword=n
Provisioning.RegenerateSshHostKeyPair=y
Provisioning.SshHostKeyPairType=rsa
Provisioning.MonitorHostName=y
Provisioning.DecodeCustomData=n
Provisioning.ExecuteCustomData=n
Provisioning.AllowResetSysUser=n
Provisioning.PasswordCryptId=6
Provisioning.PasswordCryptSaltLength=10
ResourceDisk.Format=y
ResourceDisk.Filesystem=ext4
ResourceDisk.MountPoint=/mnt/resource
ResourceDisk.MountOptions=None
ResourceDisk.EnableSwap=n
ResourceDisk.SwapSizeMB=0
LBProbeResponder=y
Logs.Verbose=n
OS.RootDeviceScsiTimeout=300
OS.OpensslPath=None
HttpProxy.Host=None
HttpProxy.Port=None
AutoUpdate.Enabled=y

構成オプションは BooleanStringInteger の 3 種類です。 Boolean 構成オプションは、y または n として指定できます。 特殊なキーワード None は、一部の文字列型の構成エントリに使用される場合があります。

Provisioning.Enabled

Type: Boolean
Default: y

このオプションにより、エージェントのプロビジョニング機能を有効や無効にできます。 有効な値は yn です。 プロビジョニングを無効にした場合、イメージの SSH ホストとユーザー キーは保持され、Azure プロビジョニング API の構成は無視されます。

注意

cloud-init を使用してプロビジョニングを実行する Ubuntu Cloud Image では、Provisioning.Enabled パラメーターが既定で n に設定されています。

Provisioning.DeleteRootPassword

Type: Boolean
Default: n

値が y である場合、/etc/shadow ファイル内の root パスワードは、プロビジョニング プロセス中にエージェントによって消去されます。

Provisioning.RegenerateSshHostKeyPair

Type: Boolean
Default: y

値が y である場合、ECDSA、DSA、RSA を含め、/etc/ssh/ のすべての SSH ホスト キー の組は、プロビジョニング プロセス中にエージェントによって削除されます。 エージェントは、1 つの新しいキー ペアを生成します。

Provisioning.SshHostKeyPairType エントリを使用して、新しいキー ペアの暗号化の種類を構成します。 一部ディストリビューションでは、SSH デーモンの再起動時 (再起動後など) に、不足している暗号化の種類があれば、それに対して SSH キーの組が再作成されます。

Provisioning.SshHostKeyPairType

Type: String
Default: rsa

このオプションは、VM において SSH デーモンでサポートされている暗号化アルゴリズムの種類に対して設定できます。 通常サポートされる値は rsadsaecdsaです。 Windows の putty.exe ファイルでは、ecdsa はサポートされていません。 Windows で putty.exe を使用して Linux デプロイに接続する場合は、rsadsa を使用します。

Provisioning.MonitorHostName

Type: Boolean
Default: y

値が y である場合、waagent は、hostname コマンドによって返されるホスト名の変更について Linux VM を監視します。 その後、waagent はイメージ内のネットワーク構成を自動的に更新して、変更内容を反映します。 DNS サーバーに名前の変更をプッシュするため、VM でネットワークが再起動されます。 この再起動により、インターネット接続は短時間失われます。

Provisioning.DecodeCustomData

Type: Boolean
Default: n

値が y である場合、waagent は Base64 から CustomData をデコードします。

Provisioning.ExecuteCustomData

Type: Boolean
Default: n

値が y である場合、waagent はプロビジョニング後に CustomData を実行します。

Provisioning.AllowResetSysUser

Type: Boolean
Default: n

このオプションにより、システム ユーザーのパスワードをリセットできます。 既定では無効になっています。

Provisioning.PasswordCryptId

Type: String
Default: 6

このオプションでは、パスワード ハッシュを生成するときに crypt で使用されるアルゴリズムを指定します。 有効な値は次のとおりです。

  • 1: MD5
  • 2a: Blowfish
  • 5: SHA-256
  • 6: SHA-512

Provisioning.PasswordCryptSaltLength

Type: String
Default: 10

このオプションでは、パスワード ハッシュの生成時に使用されるランダムなソルトの長さを指定します。

ResourceDisk.Format

Type: Boolean
Default: y

値が y である場合、ResourceDisk.Filesystem でユーザーが要求したファイル システムの種類が ntfs でなければ、waagent はプラットフォームが提供するリソース ディスクをフォーマットしてマウントします。 エージェントは、ディスク上で 1 つの Linux パーティション (ID 83) を使用できるようにします。 正常にマウントできる場合、このパーティションはフォーマットされません。

ResourceDisk.Filesystem

Type: String
Default: ext4

このオプションで、リソース ディスクのファイル システムの種類を指定します。 サポートされている値は Linux ディストリビューションによって異なります。 文字列が X の場合、mkfs.X が Linux イメージ上に存在する必要があります。

ResourceDisk.MountPoint

Type: String
Default: /mnt/resource

このオプションで、リソース ディスクがマウントされるパスを指定します。 リソース ディスクは "一時" ディスクであるため、VM のプロビジョニングが解除されると空にされることがあります。

ResourceDisk.MountOptions

Type: String
Default: None

このオプションでは、mount -o コマンドに渡されるディスク マウント オプションを指定します。 この値は、値のコンマ区切りリストです (例: nodev,nosuid)。 詳細については、mount(8) のマニュアル ページを参照してください。

ResourceDisk.EnableSwap

Type: Boolean
Default: n

このオプションを設定した場合、エージェントはリソース ディスクにスワップ ファイル (/swapfile) を作成し、システム スワップ領域に追加します。

ResourceDisk.SwapSizeMB

Type: Integer
Default: 0

このオプションでは、スワップ ファイルのサイズをメガバイト単位で指定します。

Logs.Verbose

Type: Boolean
Default: n

このオプションを設定すると、ログの詳細度が上がります。 Waagent は /var/log/waagent.log にログを記録し、システムの logrotate 機能を使用してログをローテーションします。

OS.EnableRDMA

Type: Boolean
Default: n

このオプションを設定した場合、エージェントは、基になるハードウェアのファームウェアのバージョンに一致する RDMA カーネル ドライバーのインストールおよび読み込みを試みます。

OS.RootDeviceScsiTimeout

Type: Integer
Default: 300

このオプションでは、OS ディスクおよびデータ ドライブの SCSI タイムアウトを秒単位で構成します。 設定しない場合、システムの既定値が使用されます。

OS.OpensslPath

Type: String
Default: None

このオプションを使用すると、暗号化処理に使用する openssl バイナリの代替パスを指定できます。

HttpProxy.Host、HttpProxy.Port

Type: String
Default: None

このオプションを設定した場合、エージェントはこのプロキシ サーバーを使用して、インターネットにアクセスします。

AutoUpdate.Enabled

Type: Boolean
Default: y

目標状態処理の自動更新を有効や無効にします。 既定値は y です。

Azure Linux ゲスト エージェントでの自動ログ収集

バージョン 2.7 以降の Azure Linux ゲスト エージェントには、一部のログを自動的に収集してアップロードする機能があります。 この機能には現在、systemd が必要です。 azure-walinuxagent-logcollector.slice という新しい systemd スライスを使用して、収集の実行中にリソースが管理されます。

目的は、オフライン分析を支援することです。 エージェントは、一部の診断ログの .zip ファイルを生成してから、VM のホストにアップロードします。 エンジニアリング チームとサポート プロフェッショナルは、VM 所有者のイシューを調査するためにファイルを取得できます。 Azure Linux ゲスト エージェントが収集するファイルの技術情報については、エージェントの GitHub リポジトリにある azurelinuxagent/common/logcollector_manifests.py ファイルを参照してください。

このオプションを無効にするには、/etc/waagent.conf を編集します。 Logs.Collectn に更新します。

Ubuntu Cloud Image

Ubuntu Cloud Image は cloud-init を使用して、Azure Linux VM エージェントが本来なら管理する多くの構成タスクを実行します。 相違点は以下の通りです。

  • cloud-init を使用してプロビジョニング タスクを実行する Ubuntu Cloud Image は、Provisioning.Enabled が既定で n に設定されています。

  • 次の構成パラメーターは、cloud-init を使用してリソース ディスクとスワップ領域を管理する Ubuntu Cloud Image に影響を与えません。

    • ResourceDisk.Format
    • ResourceDisk.Filesystem
    • ResourceDisk.MountPoint
    • ResourceDisk.EnableSwap
    • ResourceDisk.SwapSizeMB

プロビジョニング中に Ubuntu Cloud Image にリソース ディスク マウント ポイントとスワップ領域を構成する場合は、次のリソースを参照してください。