次の方法で共有


VM とイメージの Linux エージェントを無効化または削除する

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

Linux エージェントを削除する前に、Linux エージェントの削除後に VM で実行できなくなる処理について理解しておく必要があります。

Azure 仮想マシン (VM) 拡張機能は、Azure VM のデプロイ後に構成および自動化タスクを実行できるようにする複数の小さなアプリケーションです。拡張機能は Azure コントロール プレーンによってインストールされ、管理されます。 Azure Linux エージェントの役割は、プラットフォーム拡張機能コマンドを処理し、VM 内で拡張機能の状態を適切に維持することです。

Azure プラットフォームでは、VM の構成、監視、セキュリティ、およびユーティリティというさまざまなアプリケーションの多くの拡張機能をホストします。 ファーストパーティとサードパーティの拡張機能は多数用意されています。拡張機能が使用される主なシナリオの例としては次のようなものがあります。

  • ファーストパーティである Azure のサービス (Azure Backup、Monitoring、Disk Encryption、Security、Site Replication など) をサポートします。
  • SSH およびパスワードのリセット
  • VM の構成 - カスタム スクリプトの実行、Chef エージェントや Puppet エージェントなどのインストールなど。
  • AV 製品、VM 脆弱性ツール、VM およびアプリの監視ツールなどのサードパーティ製品。
  • 拡張機能は、新しい VM のデプロイにバンドルできます。 たとえば、大規模なデプロイ、VM プロビジョンでのアプリケーションの構成、またはデプロイ後のサポート対象の拡張機能で運用するシステムに対する実行の一部にすることができます。

拡張機能の処理の無効化

必要に応じて拡張機能の処理を無効にする方法がいくつか用意されていますが、続行する前に、VM に展開されているすべての拡張機能を削除する必要があります。たとえば、Azure CLI を使用すると、一覧を表示して削除できます。

az vm extension delete -g MyResourceGroup --vm-name MyVm -n extension_name

注意

上記の操作を行わないと、プラットフォームは拡張機能の構成を送信しようと試み、40 分後にタイムアウトします。

コントロール プレーンを無効にする

今後も拡張機能が必要になるかどうか不明な場合は、Linux エージェントを VM にインストールしたままにしておいて、プラットフォームから拡張機能の処理機能を無効にすることができます。 このオプションは Microsoft.Compute API バージョン 2018-06-01 以降で使用でき、インストールされている Linux エージェントのバージョンに依存しません。

az vm update -g <resourceGroup> -n <vmName> --set osProfile.allowExtensionOperations=false

上記のコマンドで "true" を設定すると、プラットフォームからこの拡張機能の処理を簡単に再び有効にすることができます。

実行中の VM から Linux エージェントを削除する

上記の手順に従って、VM から既存のすべての拡張機能を前もって削除していることを確認します。

手順 1:Azure Linux エージェントを削除する

関連付けられている構成成果物ではなく、Linux エージェントのみを削除した場合は、後日再インストールできます。 ルートとして次のいずれかを実行し、Azure Linux エージェントを削除します。

Ubuntu 18.04 以降の場合

sudo apt -y remove walinuxagent

Redhat 7.X、8.X、9.X の場合

sudo yum -y remove WALinuxAgent

SUSE 12.X、15.X の場合

sudo zypper --non-interactive remove python-azure-agent

手順 2:(省略可能) Azure Linux エージェントの成果物を削除する

重要

Linux エージェントに関連付けられているすべての成果物を削除できますが、その場合は後日再インストールできなくなります。 したがって、上記のコマンドを使用して、まず Linux エージェントを無効にし、その後で Linux エージェントを削除することを強くお勧めします。

Linux エージェントを再びインストールしないことがわかっている場合は、次のコマンドを実行できます。

Ubuntu 18.04 以降の場合

sudo pt -y purge walinuxagent
sudo cp -rp /var/lib/waagent /var/lib/waagent.bkp
sudo rm -rf /var/lib/waagent
sudo rm -f /var/log/waagent.log

Redhat 7.X、8.X、9.X の場合

sudo yum -y remove WALinuxAgent
sudo rm -f /etc/waagent.conf.rpmsave
sudo rm -rf /var/lib/waagent
sudo rm -f /var/log/waagent.log

SUSE 12.X、15.X の場合

sudo zypper --non-interactive remove python-azure-agent
sudo rm -f /etc/waagent.conf.rpmsave
sudo rm -rf /var/lib/waagent
sudo rm -f /var/log/waagent.log

Linux エージェントを使用せずにイメージを準備する

cloud-init が既に含まれたイメージがあり、Linux エージェントを削除する必要があるが、これからも cloud-init を使用してプロビジョニングする場合は、手順 2 (および必要に応じて手順 3) の手順をルートとして実行して Azure Linux エージェントを削除してから、次のコマンドを使用して、cloud-init 構成とキャッシュ データを削除し、カスタム イメージが作成されるように VM を準備します。

sudo cloud-init clean --logs --seed

プロビジョニングを解除してイメージを作成する

Linux エージェントには、"waagent -deprovision+user" のステップを使用して、既存のイメージ メタデータの一部をクリーンアップする機能がありますが、メタデータを削除した後は、以下のような操作を実行して、その他の機密データをイメージから削除する必要があります。

  • 既存のすべての SSH ホスト キーを削除します

    sudo rm /etc/ssh/ssh_host_*key*
    
  • 管理者アカウントを削除します

    sudo touch /var/run/utmp
    sudo userdel -f -r <admin_user_account>
    
  • ルート パスワードを削除します

    sudo passwd -d root
    

上記の手順を完了したら、Azure CLI を使用してカスタム イメージを作成できます。

通常のマネージド イメージを作成する

az vm deallocate -g <resource_group> -n <vm_name>
az vm generalize -g <resource_group> -n <vm_name>
az image create -g <resource_group> -n <image_name> --source <vm_name>
az sig image-version create \
    -g $sigResourceGroup
    --gallery-name $sigName
    --gallery-image-definition $imageDefName
    --gallery-image-version 1.0.0
    --managed-image /subscriptions/00000000-0000-0000-0000-00000000xxxx/resourceGroups/imageGroups/providers/images/MyManagedImage

Linux エージェントを含まないイメージからの VM の作成

Linux エージェントが含まれていないイメージから VM を作成する場合、この VM では拡張機能がサポートされことを VM のデプロイ構成で必ず示す必要があります。

注意

上記の操作を行わないと、プラットフォームは拡張機能の構成を送信しようと試み、40 分後にタイムアウトします。

拡張機能が無効になっている VM をデプロイする場合は、--enable-agent を指定して Azure CLI を実行できます。

az vm create \
    --resource-group $resourceGroup \
    --name $prodVmName \
    --image RedHat:RHEL:8.1-ci:latest \
    --admin-username azadmin \
    --ssh-key-value "$sshPubkeyPath" \
    --enable-agent false

また、"provisionVMAgent": false, を設定して Azure Resource Manager (ARM) テンプレートを使用することによっても、これを実行できます。

"osProfile": {
    "computerName": "[parameters('virtualMachineName')]",
    "adminUsername": "[parameters('adminUsername')]",
    "linuxConfiguration": {
        "disablePasswordAuthentication": "true",
        "provisionVMAgent": false,
        "ssh": {
            "publicKeys": [
                {
                    "path": "[concat('/home/', parameters('adminUsername'), '/.ssh/authorized_keys')]",
                    "keyData": "[parameters('adminPublicKey')]"

次のステップ

詳細については、Linux のプロビジョニングに関するページを参照してください。