Обновить ansible/expand_ubuntu_disk.yml

This commit is contained in:
2026-05-06 19:55:08 +03:00
parent 76cc62c5f3
commit d030cd9a73
+39 -15
View File
@@ -1,16 +1,11 @@
---
- name: Expand Ubuntu root disk in vCenter and inside guest
hosts: all
gather_facts: yes
become: yes
- name: Expand VM disk in vCenter and discover guest IP
hosts: localhost
gather_facts: no
vars:
disk_controller_number: 0
disk_unit_number: 0
root_disk: /dev/sda
root_partition: /dev/sda3
root_partition_number: 3
root_lv: /dev/mapper/ubuntu--vg-ubuntu--lv
tasks:
- name: Get VM info from vCenter
@@ -21,9 +16,13 @@
validate_certs: false
datacenter: "{{ vcenter_datacenter }}"
name: "{{ vm_name }}"
delegate_to: localhost
register: vm_info
- name: Fail if VM has no guest IP in vCenter
ansible.builtin.fail:
msg: "VM {{ vm_name }} has no detected guest IP in vCenter"
when: not vm_info.instance.ipv4
- name: Get current disk size in GB
ansible.builtin.set_fact:
current_disk_gb: >-
@@ -43,7 +42,11 @@
- name: Show resize plan
ansible.builtin.debug:
msg: "Expanding {{ vm_name }} from {{ current_disk_gb }} GB to {{ target_disk_gb }} GB"
msg:
- "VM: {{ vm_name }}"
- "Guest IP: {{ vm_info.instance.ipv4 }}"
- "Current disk: {{ current_disk_gb }} GB"
- "Target disk: {{ target_disk_gb }} GB"
- name: Expand disk in vCenter
community.vmware.vmware_guest_disk:
@@ -58,8 +61,29 @@
unit_number: "{{ disk_unit_number }}"
controller_number: "{{ disk_controller_number }}"
size_gb: "{{ target_disk_gb }}"
delegate_to: localhost
- name: Add discovered VM to temporary inventory
ansible.builtin.add_host:
name: resized_ubuntu_target
ansible_host: "{{ vm_info.instance.ipv4 }}"
ansible_user: "{{ guest_ssh_user }}"
ansible_password: "{{ guest_ssh_password }}"
ansible_become: true
ansible_become_password: "{{ guest_become_password }}"
ansible_ssh_common_args: "-o StrictHostKeyChecking=no"
- name: Expand disk inside Ubuntu guest
hosts: resized_ubuntu_target
gather_facts: yes
become: yes
vars:
root_disk: /dev/sda
root_partition: /dev/sda3
root_partition_number: 3
root_lv: /dev/mapper/ubuntu--vg-ubuntu--lv
tasks:
- name: Rescan SCSI bus
ansible.builtin.shell: |
for host in /sys/class/scsi_host/host*; do
@@ -90,16 +114,16 @@
- name: Resize LVM physical volume
ansible.builtin.command: "pvresize {{ root_partition }}"
register: pvresize_result
changed_when: "'changed' in (pvresize_result.stdout | lower) or 'resized' in (pvresize_result.stdout | lower)"
changed_when: "'resized' in (pvresize_result.stdout | lower) or 'changed' in (pvresize_result.stdout | lower)"
failed_when: false
- name: Extend root logical volume and filesystem
ansible.builtin.command: "lvextend -r -l +100%FREE {{ root_lv }}"
register: lvextend_result
changed_when: "'Size of logical volume' in lvextend_result.stdout or 'Logical volume' in lvextend_result.stdout"
changed_when: "'size of logical volume' in (lvextend_result.stdout | lower) or 'logical volume' in (lvextend_result.stdout | lower)"
failed_when: false
- name: Show volume state
- name: Show final disk state
ansible.builtin.shell: |
pvs
vgs
@@ -110,6 +134,6 @@
register: final_state
changed_when: false
- name: Print final state
- name: Print final disk state
ansible.builtin.debug:
var: final_state.stdout_lines