EFI: Take into consideration the new GPT layout. 99/2099/4
authorAlexandru Antone <Alexandru.Antone@enea.com>
Fri, 6 Dec 2019 11:42:12 +0000 (13:42 +0200)
committerAlexandru Antone <Alexandru.Antone@enea.com>
Tue, 10 Dec 2019 12:13:05 +0000 (14:13 +0200)
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 <Alexandru.Antone@enea.com>
Change-Id: Ie3c05e7ba849dda91a970011a81851a6ec831f93

infra-ansible.spec
roles/partfs_rootdisk/defaults/main.yml
roles/partfs_rootdisk/tasks/main.yml
roles/partfs_rootdisk/tasks/remove_old_instance_vg.yml
roles/partfs_rootdisk/tasks/root_disk_volume_groups.yml

index a3d8730..b6f3951 100644 (file)
@@ -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
index 210e0cd..320f588 100644 (file)
@@ -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 }}"
index dd84759..d4c2d49 100644 (file)
 - 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}'
 - 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
index ed58fa2..bfca11f 100644 (file)
 # 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
index d0d5d84..c0726e0 100644 (file)
 - 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}}"