Menghapus instance Compute Engine


Dokumen ini menjelaskan cara menghapus instance Compute Engine. Untuk mempelajari lebih lanjut siklus proses instance, lihat Siklus proses instance Compute Engine.

Jika Anda tidak lagi memerlukan instance, hapus instance tersebut untuk menghentikan tagihan instance dan resource terpasangnya.

Sebelum memulai

  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses yang digunakan untuk memverifikasi identitas Anda untuk mengakses Google Cloud layanan dan API. Untuk menjalankan kode atau sampel dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Menginstal Google Cloud CLI. Setelah penginstalan, lakukan inisialisasi Google Cloud CLI dengan menjalankan perintah berikut:

      gcloud init

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    2. Set a default region and zone.

    C#

    Untuk menggunakan contoh .NET di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

    Go

    Untuk menggunakan contoh Go di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

    Java

    Untuk menggunakan contoh Java di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

    Node.js

    Untuk menggunakan contoh Node.js di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

    PHP

    Untuk menggunakan contoh PHP di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

    Python

    Untuk menggunakan contoh Python di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

    Ruby

    Untuk menggunakan contoh Ruby di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud auth application-default login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.

    Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, Anda menggunakan kredensial yang Anda berikan ke gcloud CLI.

      Menginstal Google Cloud CLI.

      Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

    Untuk mengetahui informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud .

Peran yang diperlukan

Untuk mendapatkan izin yang diperlukan untuk menghapus instance Compute, minta administrator untuk memberi Anda peran IAM Compute Instance Admin (v1) (roles/compute.instanceAdmin.v1) di project. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran bawaan ini berisi izin yang diperlukan untuk menghapus instance komputasi. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk menghapus instance komputasi:

  • compute.instances.delete pada instance
  • Untuk menghapus disk yang terpasang secara paksa: compute.disks.delete pada disk

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Implikasi penagihan

Setelah menghapus instance komputasi, Anda tidak akan dikenai biaya untuk instance tersebut dan resource yang terpasang, kecuali dalam kasus berikut:

  • Jika Anda menghapus instance yang dihosting di sole-tenant node, Anda akan tetap dikenai biaya untuk sole-tenant node tersebut.

  • Jika Anda menghapus instance yang menggunakan pemesanan, Anda akan terus membayar resource yang dipesan hingga salah satu hal berikut terjadi:

    • Compute Engine akan otomatis menghapus pemesanan pada tanggal dan waktu yang Anda pilih.

    • Anda menghapus reservasi.

    • Anda mengurangi jumlah instance yang dipesan dalam reservasi.

  • Jika memiliki diskon penggunaan berkomitmen, Anda akan terus membayar resource yang berkomitmen, terlepas dari apakah Anda menggunakannya atau tidak.

  • Jika Anda mempertahankan resource yang terpasang ke instance, seperti disk, Anda akan terus membayar resource tersebut hingga Anda menghapusnya.

Untuk mengetahui informasi selengkapnya, lihat Harga instance VM.

Mempertahankan resource terlampir

Dalam beberapa kasus, sebelum menghapus instance komputasi, Anda mungkin ingin mempertahankan salah satu resource terlampirnya. Anda dapat mempertahankan resource terlampir dengan melakukan hal berikut:

Menghapus instance

Saat Anda menghapus instance komputasi, Compute Engine akan menghentikan instance sebelum menghapusnya.

Jika Anda menghapus satu atau beberapa instance secara bersamaan, Anda harus memutuskan apa yang akan terjadi pada disk terlampir:

Menghapus instance dan semua resource terlampir

Bergantung pada tindakan yang ingin Anda lakukan saat menghapus instance komputasi, gunakan opsi berikut:

  • Jika Anda mengonfigurasi agar disk terlampir dipertahankan saat instance dihapus, Anda dapat mengganti setelan ini dan menghapus paksa disk tersebut menggunakan Google Cloud CLI.

  • Jika Anda telah mengaktifkan penonaktifan yang benar di instance, Anda dapat menghapus instance tanpa menonaktifkannya dengan benar atau mengakhiri penonaktifan yang benar yang sedang berlangsung menggunakan konsol Google Cloud , gcloud CLI, atau REST API.

  • Untuk menghapus beberapa instance secara bersamaan, gunakan Google Cloud konsol atau, untuk instance yang berada di zona yang sama, gcloud CLI.

Untuk menghapus satu atau beberapa instance dan semua resource yang terlampir, pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman VM instances.

    Buka instance VM

  2. Pilih instance yang ingin Anda hapus.

  3. Klik Delete.

  4. Dalam dialog, lakukan hal berikut:

    1. Opsional: Untuk menghapus instance tanpa mematikannya dengan benar, atau mengakhiri penonaktifan yang sedang berlangsung dengan benar, centang kotak Lewati penonaktifan yang benar (jika berlaku).

    2. Untuk mengonfirmasi, klik Hapus.

gcloud

Untuk menghapus satu atau beberapa instance di zona yang sama, gunakan perintah gcloud compute instances delete:

gcloud compute instances delete INSTANCE_NAMES \
    --zone=ZONE

Ganti kode berikut:

  • INSTANCE_NAMES: daftar nama instance yang dipisahkan oleh spasi—misalnya, instance-01 instance-02 instance-03.

  • ZONE: zona tempat instance berada.

Secara opsional, Anda dapat melakukan salah satu atau kedua hal berikut:

  • Untuk menghapus secara paksa disk yang terpasang ke satu atau beberapa instance, sertakan tanda --delete-disks:

    gcloud compute instances delete INSTANCE_NAMES \
        --delete-disks=DELETE_DISK_TYPE \
        --zone=ZONE
    

    Ganti DELETE_DISK_TYPE dengan salah satu nilai berikut:

    • Untuk menghapus penyimpanan persisten booting dan non-booting yang terpasang: all

    • Untuk menghapus hanya penyimpanan persisten boot yang terlampir: boot

    • Untuk menghapus hanya penyimpanan persisten non-boot: data

  • Jika Anda telah mengaktifkan penonaktifan yang benar di satu atau beberapa instance, Anda dapat menghapus instance tanpa menonaktifkannya dengan benar, atau mengakhiri penonaktifan yang benar yang sedang berlangsung secara manual. Untuk melakukannya, gunakan perintah gcloud beta compute instances delete dengan flag --no-graceful-shutdown:

    gcloud beta compute instances delete INSTANCE_NAMES \
        --no-graceful-shutdown \
        --zone=ZONE
    

C#


using Google.Cloud.Compute.V1;
using System.Threading.Tasks;

public class DeleteInstanceAsyncSample
{
    public async Task DeleteInstanceAsync(
        // TODO(developer): Set your own default values for these parameters or pass different values when calling this method.
        string projectId = "your-project-id",
        string zone = "us-central1-a",
        string machineName = "test-machine")
    {

        // Initialize client that will be used to send requests. This client only needs to be created
        // once, and can be reused for multiple requests.
        InstancesClient client = await InstancesClient.CreateAsync();

        // Make the request to delete a VM instance.
        var instanceDeletion = await client.DeleteAsync(projectId, zone, machineName);

        // Wait for the operation to complete using client-side polling.
        await instanceDeletion.PollUntilCompletedAsync();
    }
}

Go

import (
	"context"
	"fmt"
	"io"

	compute "cloud.google.com/go/compute/apiv1"
	computepb "cloud.google.com/go/compute/apiv1/computepb"
)

// deleteInstance sends a delete request to the Compute Engine API and waits for it to complete.
func deleteInstance(w io.Writer, projectID, zone, instanceName string) error {
	// projectID := "your_project_id"
	// zone := "europe-central2-b"
	// instanceName := "your_instance_name"
	ctx := context.Background()
	instancesClient, err := compute.NewInstancesRESTClient(ctx)
	if err != nil {
		return fmt.Errorf("NewInstancesRESTClient: %w", err)
	}
	defer instancesClient.Close()

	req := &computepb.DeleteInstanceRequest{
		Project:  projectID,
		Zone:     zone,
		Instance: instanceName,
	}

	op, err := instancesClient.Delete(ctx, req)
	if err != nil {
		return fmt.Errorf("unable to delete instance: %w", err)
	}

	if err = op.Wait(ctx); err != nil {
		return fmt.Errorf("unable to wait for the operation: %w", err)
	}

	fmt.Fprintf(w, "Instance deleted\n")

	return nil
}

Java


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.compute.v1.DeleteInstanceRequest;
import com.google.cloud.compute.v1.InstancesClient;
import com.google.cloud.compute.v1.Operation;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class DeleteInstance {

  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "your-project-id";
    String zone = "zone-name";
    String instanceName = "instance-name";
    deleteInstance(project, zone, instanceName);
  }

  // Delete the instance specified by `instanceName`
  // if it's present in the given project and zone.
  public static void deleteInstance(String project, String zone, String instanceName)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the `instancesClient.close()` method on the client to safely
    // clean up any remaining background resources.
    try (InstancesClient instancesClient = InstancesClient.create()) {

      System.out.printf("Deleting instance: %s ", instanceName);

      // Describe which instance is to be deleted.
      DeleteInstanceRequest deleteInstanceRequest = DeleteInstanceRequest.newBuilder()
          .setProject(project)
          .setZone(zone)
          .setInstance(instanceName).build();

      OperationFuture<Operation, Operation> operation = instancesClient.deleteAsync(
          deleteInstanceRequest);
      // Wait for the operation to complete.
      Operation response = operation.get(3, TimeUnit.MINUTES);

      if (response.hasError()) {
        System.out.println("Instance deletion failed ! ! " + response);
        return;
      }
      System.out.println("Operation Status: " + response.getStatus());
    }
  }
}

Node.js

/**
 * TODO(developer): Uncomment these variables before running the sample.
 */
// const projectId = 'YOUR_PROJECT_ID';
// const zone = 'europe-central2-b'
// const instanceName = 'YOUR_INSTANCE_NAME';

const compute = require('@google-cloud/compute');

// Delete the instance specified by `instanceName` if it's present in the given project and zone.
async function deleteInstance() {
  const instancesClient = new compute.InstancesClient();

  console.log(`Deleting ${instanceName} from ${zone}...`);

  const [response] = await instancesClient.delete({
    project: projectId,
    zone,
    instance: instanceName,
  });
  let operation = response.latestResponse;
  const operationsClient = new compute.ZoneOperationsClient();

  // Wait for the delete operation to complete.
  while (operation.status !== 'DONE') {
    [operation] = await operationsClient.wait({
      operation: operation.name,
      project: projectId,
      zone: operation.zone.split('/').pop(),
    });
  }

  console.log('Instance deleted.');
}

deleteInstance();

PHP

use Google\Cloud\Compute\V1\Client\InstancesClient;
use Google\Cloud\Compute\V1\DeleteInstanceRequest;

/**
 * Delete an instance.
 *
 * @param string $projectId Your Google Cloud project ID.
 * @param string $zone Zone where the instance you want to delete is (like "us-central1-a").
 * @param string $instanceName Unique name for the Compute instance to delete.
 *
 * @throws \Google\ApiCore\ApiException if the remote call fails.
 * @throws \Google\ApiCore\ValidationException if local error occurs before remote call.
 */
function delete_instance(
    string $projectId,
    string $zone,
    string $instanceName
) {
    // Delete the Compute Engine instance using InstancesClient.
    $instancesClient = new InstancesClient();
    $request = (new DeleteInstanceRequest())
        ->setInstance($instanceName)
        ->setProject($projectId)
        ->setZone($zone);
    $operation = $instancesClient->delete($request);

    // Wait for the operation to complete.
    $operation->pollUntilComplete();
    if ($operation->operationSucceeded()) {
        printf('Deleted instance %s' . PHP_EOL, $instanceName);
    } else {
        $error = $operation->getError();
        printf('Failed to delete instance: %s' . PHP_EOL, $error?->getMessage());
    }
}

Python

from __future__ import annotations

import sys
from typing import Any

from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1


def wait_for_extended_operation(
    operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
) -> Any:
    """
    Waits for the extended (long-running) operation to complete.

    If the operation is successful, it will return its result.
    If the operation ends with an error, an exception will be raised.
    If there were any warnings during the execution of the operation
    they will be printed to sys.stderr.

    Args:
        operation: a long-running operation you want to wait on.
        verbose_name: (optional) a more verbose name of the operation,
            used only during error and warning reporting.
        timeout: how long (in seconds) to wait for operation to finish.
            If None, wait indefinitely.

    Returns:
        Whatever the operation.result() returns.

    Raises:
        This method will raise the exception received from `operation.exception()`
        or RuntimeError if there is no exception set, but there is an `error_code`
        set for the `operation`.

        In case of an operation taking longer than `timeout` seconds to complete,
        a `concurrent.futures.TimeoutError` will be raised.
    """
    result = operation.result(timeout=timeout)

    if operation.error_code:
        print(
            f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
            file=sys.stderr,
            flush=True,
        )
        print(f"Operation ID: {operation.name}", file=sys.stderr, flush=True)
        raise operation.exception() or RuntimeError(operation.error_message)

    if operation.warnings:
        print(f"Warnings during {verbose_name}:\n", file=sys.stderr, flush=True)
        for warning in operation.warnings:
            print(f" - {warning.code}: {warning.message}", file=sys.stderr, flush=True)

    return result


def delete_instance(project_id: str, zone: str, machine_name: str) -> None:
    """
    Send an instance deletion request to the Compute Engine API and wait for it to complete.

    Args:
        project_id: project ID or project number of the Cloud project you want to use.
        zone: name of the zone you want to use. For example: “us-west3-b”
        machine_name: name of the machine you want to delete.
    """
    instance_client = compcompute_v1tInstancesClient    print(f"Deleting {machine_name} from {zone}...")
    operation = instinstance_client.delete      project=project_id, zone=zone, instance=machine_name
    )
    wait_for_extended_operation(operation, "instance deletion")
    print(f"Instance {machine_name} deleted.")

Ruby


require "google/cloud/compute/v1"

# Sends an instance deletion request to the Compute Engine API and waits for it to complete.
#
# @param [String] project project ID or project number of the Cloud project you want to use.
# @param [String] zone name of the zone you want to use. For example: "us-west3-b"
# @param [String] instance_name name of the instance you want to delete.
def delete_instance project:, zone:, instance_name:
  # Initialize client that will be used to send requests. This client only needs to be created
  # once, and can be reused for multiple requests.
  client = ::Google::Cloud::Compute::V1::Instances::Rest::Client.new

  puts "Deleting #{instance_name} from #{zone}..."
  begin
    # Make the request to delete a VM instance.
    operation = client.delete project: project, zone: zone, instance: instance_name
    # Wait for the delete operation to complete.
    operation = wait_until_done operation: operation

    if operation.error?
      warn "Error during deletion:", operation.error
    else
      compute_operation = operation.operation
      warn "Warning during creation:", compute_operation.warnings unless compute_operation.warnings.empty?
      puts "Instance #{instance_name} deleted."
    end
  rescue ::Google::Cloud::Error => e
    warn "Exception during deletion:", e
  end
end

REST

Untuk menghapus instance, buat permintaan DELETE ke metode instances delete:

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME

Ganti kode berikut:

  • PROJECT_ID: ID project tempat instance berada.

  • ZONE: zona instance.

  • INSTANCE_NAME: nama instance.

Secara opsional, jika Anda telah mengaktifkan penonaktifan yang benar di instance, Anda dapat menghapus instance tanpa menonaktifkannya dengan benar, atau mengakhiri penonaktifan yang benar yang sedang berlangsung secara manual. Untuk melakukannya, buat permintaan DELETE ke metode beta instances.delete. Di URL permintaan, sertakan parameter kueri noGracefulShutdown yang ditetapkan ke true:

DELETE https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME?noGracefulShutdown=true

Menghapus instance dan mempertahankan disk

Secara default, menghapus instance komputasi akan menghapus instance dan resource terlampirnya. Namun, saat menghapus instance menggunakan gcloud CLI, Anda dapat menentukan untuk mempertahankan disk terlampir, terlepas dari setelan hapus otomatisnya.

Untuk menghapus satu atau beberapa instance di zona yang sama sambil mempertahankan disk terlampirnya, gunakan perintah gcloud compute instances delete dengan flag --keep-disks:

gcloud compute instances delete INSTANCE_NAMES \
    --keep-disks=KEEP_DISK_TYPE \
    --zone=ZONE

Ganti kode berikut:

  • INSTANCE_NAMES: daftar nama instance yang dipisahkan oleh spasi—misalnya, instance-01 instance-02 instance-03.

  • KEEP_DISK_TYPE: tentukan salah satu nilai berikut:

    • Untuk mempertahankan penyimpanan persisten booting dan non-booting yang terpasang: all

    • Untuk mempertahankan hanya penyimpanan persisten boot yang terpasang: boot

    • Untuk mempertahankan hanya penyimpanan persisten non-boot yang terpasang: data

  • ZONE: zona tempat instance berada.

Secara opsional, jika Anda telah mengaktifkan penonaktifan yang benar di satu atau beberapa instance, Anda dapat menghapus instance tanpa menonaktifkannya dengan benar, atau mengakhiri penonaktifan yang benar yang sedang berlangsung secara manual. Untuk melakukannya, gunakan perintah gcloud beta compute instances delete dengan flag --no-graceful-shutdown:

gcloud beta compute instances delete VM_NAMES \
    --keep-disks=KEEP_DISK_TYPE \
    --no-graceful-shutdown \
    --zone=ZONE

Langkah berikutnya