Обновить ansible/expand_ubuntu_disk_workflow.yml
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
---
|
||||
- name: Stage 1 - Resize disk in vCenter with Terraform
|
||||
hosts: localhost
|
||||
connection: local
|
||||
gather_facts: false
|
||||
become: false
|
||||
|
||||
vars:
|
||||
tf_dir: "{{ playbook_dir }}/../terraform/resize-vm-disk"
|
||||
|
||||
tasks:
|
||||
- name: Terraform init
|
||||
ansible.builtin.shell: terraform init -reconfigure -no-color
|
||||
args:
|
||||
chdir: "{{ tf_dir }}"
|
||||
environment:
|
||||
TF_VAR_vsphere_server: "{{ vsphere_server }}"
|
||||
TF_VAR_vsphere_datacenter: "{{ vsphere_datacenter }}"
|
||||
TF_VAR_vsphere_user: "{{ vsphere_user }}"
|
||||
TF_VAR_vsphere_password: "{{ vsphere_password }}"
|
||||
TF_VAR_vm_name: "{{ vm_name }}"
|
||||
TF_VAR_increase_gb: "{{ increase_gb }}"
|
||||
|
||||
- name: Terraform apply
|
||||
ansible.builtin.shell: terraform apply -auto-approve -no-color -lock=false
|
||||
args:
|
||||
chdir: "{{ tf_dir }}"
|
||||
environment:
|
||||
TF_VAR_vsphere_server: "{{ vsphere_server }}"
|
||||
TF_VAR_vsphere_datacenter: "{{ vsphere_datacenter }}"
|
||||
TF_VAR_vsphere_user: "{{ vsphere_user }}"
|
||||
TF_VAR_vsphere_password: "{{ vsphere_password }}"
|
||||
TF_VAR_vm_name: "{{ vm_name }}"
|
||||
TF_VAR_increase_gb: "{{ increase_gb }}"
|
||||
|
||||
- name: Add Ubuntu VM to in-memory inventory
|
||||
ansible.builtin.add_host:
|
||||
name: ubuntu-resize-target
|
||||
groups: ubuntu_resize_group
|
||||
ansible_host: "{{ vm_ip }}"
|
||||
ansible_user: "{{ ansible_user }}"
|
||||
ansible_password: "{{ ansible_password }}"
|
||||
ansible_become: true
|
||||
ansible_become_password: "{{ ansible_become_password }}"
|
||||
ansible_ssh_extra_args: "-o StrictHostKeyChecking=no"
|
||||
|
||||
- name: Stage 2 - Wait for SSH
|
||||
hosts: ubuntu_resize_group
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Wait for SSH connection
|
||||
ansible.builtin.wait_for_connection:
|
||||
timeout: 300
|
||||
|
||||
- name: Stage 3 - Expand partition, LVM and filesystem
|
||||
hosts: ubuntu_resize_group
|
||||
gather_facts: false
|
||||
become: true
|
||||
|
||||
vars:
|
||||
root_disk: /dev/sda
|
||||
root_partition_number: 3
|
||||
root_partition: /dev/sda3
|
||||
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
|
||||
echo "- - -" > "$host/scan"
|
||||
done
|
||||
args:
|
||||
executable: /bin/bash
|
||||
changed_when: true
|
||||
|
||||
- name: Wait after rescan
|
||||
ansible.builtin.pause:
|
||||
seconds: 5
|
||||
|
||||
- name: Ensure growpart is installed
|
||||
ansible.builtin.apt:
|
||||
name: cloud-guest-utils
|
||||
state: present
|
||||
update_cache: yes
|
||||
|
||||
- name: Expand partition if needed
|
||||
ansible.builtin.command: "growpart {{ root_disk }} {{ root_partition_number }}"
|
||||
register: growpart_result
|
||||
changed_when: "'CHANGED:' in growpart_result.stdout"
|
||||
failed_when: >
|
||||
growpart_result.rc != 0 and
|
||||
'NOCHANGE:' not in growpart_result.stdout
|
||||
|
||||
- name: Resize LVM physical volume
|
||||
ansible.builtin.command: "pvresize {{ root_partition }}"
|
||||
register: pvresize_result
|
||||
failed_when: false
|
||||
changed_when: true
|
||||
|
||||
- name: Extend root logical volume and filesystem
|
||||
ansible.builtin.command: "lvextend -r -l +100%FREE {{ root_lv }}"
|
||||
register: lvextend_result
|
||||
failed_when: false
|
||||
changed_when: true
|
||||
|
||||
- name: Show final disk state
|
||||
ansible.builtin.shell: |
|
||||
pvs
|
||||
vgs
|
||||
lvs
|
||||
df -h /
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: final_state
|
||||
changed_when: false
|
||||
|
||||
- name: Print final disk state
|
||||
ansible.builtin.debug:
|
||||
var: final_state.stdout_lines
|
||||
@@ -1,66 +0,0 @@
|
||||
---
|
||||
- name: Expand Ubuntu LVM root filesystem
|
||||
hosts: all
|
||||
gather_facts: no
|
||||
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
|
||||
echo "- - -" > "$host/scan"
|
||||
done
|
||||
args:
|
||||
executable: /bin/bash
|
||||
changed_when: true
|
||||
|
||||
- name: Wait after rescan
|
||||
ansible.builtin.pause:
|
||||
seconds: 5
|
||||
|
||||
- name: Ensure growpart is installed
|
||||
ansible.builtin.apt:
|
||||
name: cloud-guest-utils
|
||||
state: present
|
||||
update_cache: yes
|
||||
|
||||
- name: Expand partition if needed
|
||||
ansible.builtin.command: "growpart {{ root_disk }} {{ root_partition_number }}"
|
||||
register: growpart_result
|
||||
changed_when: "'CHANGED:' in growpart_result.stdout"
|
||||
failed_when: >
|
||||
growpart_result.rc != 0 and
|
||||
'NOCHANGE:' not in growpart_result.stdout
|
||||
|
||||
- name: Resize LVM physical volume
|
||||
ansible.builtin.command: "pvresize {{ root_partition }}"
|
||||
register: pvresize_result
|
||||
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: "'logical volume' in (lvextend_result.stdout | lower) or 'size of logical volume' in (lvextend_result.stdout | lower)"
|
||||
failed_when: false
|
||||
|
||||
- name: Show final disk state
|
||||
ansible.builtin.shell: |
|
||||
pvs
|
||||
vgs
|
||||
lvs
|
||||
df -h /
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: final_state
|
||||
changed_when: false
|
||||
|
||||
- name: Print final disk state
|
||||
ansible.builtin.debug:
|
||||
var: final_state.stdout_lines
|
||||
Reference in New Issue
Block a user