From d030cd9a7314a7f29f78356c6ec77a94a076c98d Mon Sep 17 00:00:00 2001 From: ogrechko Date: Wed, 6 May 2026 19:55:08 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20ansible/expand=5Fubuntu=5Fdisk.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ansible/expand_ubuntu_disk.yml | 54 ++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 15 deletions(-) diff --git a/ansible/expand_ubuntu_disk.yml b/ansible/expand_ubuntu_disk.yml index e4ed344..1f7b905 100644 --- a/ansible/expand_ubuntu_disk.yml +++ b/ansible/expand_ubuntu_disk.yml @@ -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