From: Alexandru Antone Date: Fri, 6 Dec 2019 11:42:12 +0000 (+0200) Subject: EFI: Take into consideration the new GPT layout. X-Git-Url: https://gerrit.akraino.org/r/gitweb?p=ta%2Finfra-ansible.git;a=commitdiff_plain;h=25478b93257348c57830e19caf91438368bfbd77 EFI: Take into consideration the new GPT layout. When EFI is used there are 3 partitions instead of the single one used previously. So we number and setup the LVM and instance partitions accordingly. Signed-off-by: Alexandru Antone Change-Id: Ie3c05e7ba849dda91a970011a81851a6ec831f93 --- diff --git a/infra-ansible.spec b/infra-ansible.spec index a3d8730..b6f3951 100644 --- a/infra-ansible.spec +++ b/infra-ansible.spec @@ -15,7 +15,7 @@ Name: infra-ansible Version: %{_version} -Release: 2%{?dist} +Release: 3%{?dist} Summary: Contains ansible playbook and roles for Akraino rec blueprint License: %{_platform_licence} Source0: %{name}-%{version}.tar.gz diff --git a/roles/partfs_rootdisk/defaults/main.yml b/roles/partfs_rootdisk/defaults/main.yml index 210e0cd..320f588 100644 --- a/roles/partfs_rootdisk/defaults/main.yml +++ b/roles/partfs_rootdisk/defaults/main.yml @@ -20,11 +20,12 @@ debug: False root_disk: "{{ by_path_disks['os'] }}" all_disk_size_for_volume_group_vg: "1" -first_part_size: 50 -second_part_percentage: "{{ rootdisk_vg_percentage }}" -root_disk_left_size: "{{ root_disk_total_size.stdout | int - first_part_size | int }}" -second_part_size: "{{ root_disk_left_size | float * second_part_percentage | float }}" +root_disk_free_size: "{{ root_disk_info.disk.size|float - sys_part.end|float }}" +lvm_part_size: "{{ root_disk_free_size|float * rootdisk_vg_percentage|float }}" -second_part_start: "{{ first_part_size }}" -second_part_end: "{{first_part_size | int + second_part_size | int }}" -third_part_start: "{{ second_part_end }}" +lvm_part_number: "{{ sys_part_number|int + 1 }}" +lvm_part_start: "{{ sys_part.end }}" +lvm_part_end: "{{ lvm_part_start|float + lvm_part_size|float }}" + +instance_part_number: "{{ sys_part_number|int + 2 }}" +instance_part_start: "{{ lvm_part_end }}" diff --git a/roles/partfs_rootdisk/tasks/main.yml b/roles/partfs_rootdisk/tasks/main.yml index dd84759..d4c2d49 100644 --- a/roles/partfs_rootdisk/tasks/main.yml +++ b/roles/partfs_rootdisk/tasks/main.yml @@ -43,8 +43,27 @@ - name: Remove interface configuration which use dhcp shell: rm -f $(grep -li BOOTPROTO.*dhcp /etc/sysconfig/network-scripts/ifcfg-* | sort -u) +- name : Get system disk info + parted: + device: "{{root_disk}}" + unit: GB + register: root_disk_info + +- debug: + msg: "root_disk_info: {{root_disk_info}}" + +- set_fact: + sys_part: "{{ root_disk_info.partitions|selectattr('num', 'equalto', 1)|first }}" + sys_part_number: 1 + when: root_disk_info.disk.table == "msdos" + - set_fact: - root_disk_part1: "{% if root_disk == default_rootdisk_device %}{{root_disk}}{{first_part_number}}{% else %}{{root_disk}}-part{{first_part_number}}{% endif %}" + sys_part: "{{ root_disk_info.partitions|selectattr('num', 'equalto', 3)|first }}" + sys_part_number: 3 + when: root_disk_info.disk.table == "gpt" + +- debug: + msg: "sys_part = {{root_disk}}{{sys_part_number}}: {{sys_part}}" - name: get volume pools shell: dmsetup ls | awk '{print $1}' @@ -81,37 +100,20 @@ - name: delete temporary partition parted: device: "{{root_disk}}" - number: "{{delete_partition}}" + number: "{{ sys_part_number|int + 1 }}" state: absent when: delete_partition is defined -- name: system disk total size - shell: parted {{root_disk}} unit GB print | grep "Disk /dev/" | awk '{print $3}' | tr -d 'a-z,A-Z' - register: root_disk_total_size - -- debug: - msg: "root_disk_total_size.stdout {{ root_disk_total_size.stdout }}" - - name: configure root volume groups include: root_disk_volume_groups.yml vars: - part_start: "{{second_part_start}}GiB" - part_end: "{{second_part_end}}GB" - phy_disk_part_number: 2 create_disk_part: True -- name: system disk first partition size - shell: parted {{root_disk_part1}} unit GB print | grep "Disk /dev/" | awk '{print $3}' | tr -d 'a-z,A-Z' - register: first_part - -- debug: - msg: "first_part.stdout {{ first_part.stdout }}" - - name: configure instance disk partition parted: device: "{{root_disk}}" - number: 3 - part_start: "{{third_part_start}}GB" + number: "{{instance_part_number}}" + part_start: "{{instance_part_start}}GB" flags: [ lvm ] state: present when: rootdisk_vg_percentage != all_disk_size_for_volume_group_vg diff --git a/roles/partfs_rootdisk/tasks/remove_old_instance_vg.yml b/roles/partfs_rootdisk/tasks/remove_old_instance_vg.yml index ed58fa2..bfca11f 100644 --- a/roles/partfs_rootdisk/tasks/remove_old_instance_vg.yml +++ b/roles/partfs_rootdisk/tasks/remove_old_instance_vg.yml @@ -15,10 +15,10 @@ # limitations under the License. - set_fact: - root_disk_part3: "{% if root_disk == default_rootdisk_device %}{{root_disk}}3{% else %}{{root_disk}}-part3{% endif %}" + instance_disk_part: "{% if root_disk == default_rootdisk_device %}{{root_disk}}{{instance_part_number}}{% else %}{{root_disk}}-part{{instance_part_number}}{% endif %}" - debug: - msg: "root disk part3: {{ root_disk_part3 }}" + msg: "instance partition: {{ instance_disk_part }}" - name: get volume pools shell: dmsetup ls | awk '/volumes/ {print $1}' @@ -64,7 +64,7 @@ - item != "VG" - name: remove physical volume (if any) - shell: pvremove {{ root_disk_part3 }} + shell: pvremove {{ instance_disk_part }} ignore_errors: yes - name: get volume groups diff --git a/roles/partfs_rootdisk/tasks/root_disk_volume_groups.yml b/roles/partfs_rootdisk/tasks/root_disk_volume_groups.yml index d0d5d84..c0726e0 100644 --- a/roles/partfs_rootdisk/tasks/root_disk_volume_groups.yml +++ b/roles/partfs_rootdisk/tasks/root_disk_volume_groups.yml @@ -40,28 +40,18 @@ - name: Create Partition for LVMs parted: device: "{{root_disk}}" - number: "{{phy_disk_part_number}}" + number: "{{lvm_part_number}}" + unit: "GB" + label: "{{root_disk_info.disk.table}}" flags: [ lvm ] state: present - part_start: "{{part_start}}" - part_end: "{{part_end}}" + part_start: "{{lvm_part_start}}GB" + part_end: "{{lvm_part_end}}GB" when: - create_disk_part | bool - - rootdisk_vg_percentage != all_disk_size_for_volume_group_vg - -- name: Create Partition for LVMs - parted: - device: "{{root_disk}}" - number: "{{phy_disk_part_number}}" - flags: [ lvm ] - state: present - part_start: "{{part_start}}" - when: - - create_disk_part | bool - - rootdisk_vg_percentage == all_disk_size_for_volume_group_vg - set_fact: - vg_disk: "{% if root_disk == default_rootdisk_device %}{{root_disk}}{{phy_disk_part_number}}{% else %}{{root_disk}}-part{{phy_disk_part_number}}{% endif %}" + vg_disk: "{% if root_disk == default_rootdisk_device %}{{root_disk}}{{lvm_part_number}}{% else %}{{root_disk}}-part{{lvm_part_number}}{% endif %}" - debug: msg: "{{vg_disk}}"