Загрузка данных


---
# Terraform увеличивает размер VMDK (var.hosts[i].disk_size), но не трогает
# раздел/файловую систему внутри гостя — ни для Linux (см. cit_vm/roles/resize_part),
# ни для Windows. Растягиваем системный раздел C: на весь доступный объём.
#
# Сырой PowerShell вместо community.windows.win_partition: версия коллекции на
# реальном сервере не зафиксирована в этом репозитории (ansible/collections
# провижнится отдельно), а команда ниже не зависит от версии коллекции.
- name: "Extend C: partition to fill unallocated space"
  ansible.windows.win_shell: |
    $ErrorActionPreference = "Stop"

    $cPart = Get-Partition -DriveLetter C
    $diskNumber = $cPart.DiskNumber

    # ВАЖНО: Windows может расширить раздел только в СМЕЖНОЕ unallocated-
    # пространство. На типовом Windows-диске после C: обычно идёт ещё один
    # раздел (Recovery/WinRE) — если его не убрать, новое место после роста
    # VMDK оказывается ПОСЛЕ него, а не сразу после C:, и Resize-Partition
    # молча не находит, куда расти (SizeMax остаётся равен текущему размеру).
    # Удаляем все разделы, идущие после C: на том же диске, перед расширением.
    # Компромисс: среда восстановления (WinRE) перестаёт быть доступна — для
    # тестовых disposable VM это приемлемо (аналогично уже принятому решению
    # не делать sysprep/generalize).
    $partsAfterC = Get-Partition -DiskNumber $diskNumber | Where-Object { $_.Offset -gt $cPart.Offset }
    foreach ($p in $partsAfterC) {
      Remove-Partition -DiskNumber $diskNumber -PartitionNumber $p.PartitionNumber -Confirm:$false
    }

    $max = (Get-PartitionSupportedSize -DriveLetter C).SizeMax
    $current = (Get-Partition -DriveLetter C).Size
    if ($max -gt $current) {
      Resize-Partition -DriveLetter C -Size $max
      Write-Output "resized"
    } else {
      Write-Output "already-max"
    }
  register: resize_result
  changed_when: "'resized' in resize_result.stdout"