5 простых способов получить все виртуальные машины vSphere — подробное руководство для новичков

Вот статья в блоге, в которой представлены различные методы получения всех виртуальных машин vSphere с использованием разговорного языка и примеры кода.

Вы новичок в vSphere и хотите узнать, как получить все виртуальные машины (ВМ) в вашей среде vSphere? Не смотрите дальше! В этом руководстве мы покажем вам пять простых способов получить все виртуальные машины vSphere с использованием разных языков программирования и инструментов. Независимо от того, новичок вы или опытный пользователь, эти методы помогут вам автоматизировать процесс и сэкономить драгоценное время. Итак, приступим!

Метод 1. Использование vSphere API с Python
Пример кода:

from pyVim.connect import SmartConnect
from pyVmomi import vim
def get_all_vms():
    service_instance = SmartConnect(
        host="your_vcenter_ip",
        user="your_username",
        pwd="your_password",
        port=443
    )
    content = service_instance.RetrieveContent()
    container = content.rootFolder
    view_type = [vim.VirtualMachine]
    recursive = True

    vm_view = content.viewManager.CreateContainerView(container, view_type, recursive)
    vms = vm_view.view
    return vms
# Usage
all_vms = get_all_vms()
for vm in all_vms:
    print(vm.name)

Метод 2: использование PowerCLI (PowerShell)
Пример кода:

# Connect to vCenter Server
Connect-VIServer -Server your_vcenter_ip -User your_username -Password your_password
# Retrieve all VMs
$allVMs = Get-VM
# Display VM names
foreach ($vm in $allVMs) {
    Write-Host $vm.Name
}

Метод 3. Использование vSphere SDK для Java
Пример кода:

import com.vmware.vim25.*;
public class GetAllVMs {
    public static void main(String[] args) {
        try {
            ServiceInstance serviceInstance = new ServiceInstance(new URL("https://your_vcenter_ip/sdk"),
                    "your_username", "your_password", true);
            Folder rootFolder = serviceInstance.getRootFolder();
            ManagedEntity[] vms = new InventoryNavigator(rootFolder).searchManagedEntities("VirtualMachine");

            for (ManagedEntity vm : vms) {
                System.out.println(vm.getName());
            }

            serviceInstance.getServerConnection().logout();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Метод 4. Использование модуля VMware PowerCLI в PowerShell Core
Пример кода:

# Connect to vCenter Server
Connect-VIServer -Server your_vcenter_ip -User your_username -Password your_password
# Retrieve all VMs
$allVMs = Get-VM
# Display VM names
foreach ($vm in $allVMs) {
    Write-Host $vm.Name
}

Метод 5. Использование vSphere REST API
Пример кода:

# Retrieve access token
curl -X POST -k -H "Content-Type: application/x-www-form-urlencoded" -d "username=your_username&password=your_password" "https://your_vcenter_ip/rest/com/vmware/cis/session"
# Retrieve all VMs
curl -X GET -k -H "Content-Type: application/json" -H "Authorization: Bearer <access_token>" "https://your_vcenter_ip/rest/vcenter/vm"
# Extract VM names from the response
# ...
# Cleanup: Logout session
curl -X DELETE -k -H "Content-Type: application/json" -H "Authorization: Bearer <access_token>" "https://your_vcenter_ip/rest/com/vmware/cis/session"

В этой статье мы рассмотрели пять различных методов получения всех виртуальных машин vSphere с помощью популярных языков программирования и инструментов. Независимо от того, предпочитаете ли вы Python, PowerShell, Java или REST API, теперь у вас есть целый ряд вариантов на выбор. Автоматизируя эту задачу, вы можете сэкономить время и усилия по управлению виртуализированной средой. Так зачем ждать? Начните изучать эти методы и улучшите свои навыки управления vSphere уже сегодня!