diff --git a/templates/profiles.yaml b/templates/profiles.yaml
index d5079237720904e74cabddd831d3cb5965a55344..6c001c8ebccf27293a01004be8d901984ba99d7d 100644
--- a/templates/profiles.yaml
+++ b/templates/profiles.yaml
@@ -10,16 +10,50 @@ main-profile:
     imgpath: "daily/v2020dev0"
     baseurl: "https://images.apertis.org"
     boot_method: grub
-    boot_commands:
-      - set root='(hd0,gpt1)'
-      - chainloader /efi/boot/bootx64.efi
-      - boot
-    needs_dtb: false
-    dtb_root: ""
-    device_type: minnowboard-turbot-E3826
-    arch: amd64
-    board: uefi
     visibility: public
+    dtb_root: ""
+
+{% macro amd64_parameters() -%}
+      boot_commands:
+        - set root='(hd0,gpt1)'
+        - chainloader /efi/boot/bootx64.efi
+        - boot
+      needs_dtb: false
+      device_type: minnowboard-turbot-E3826
+      arch: amd64
+      board: uefi
+{%- endmacro %}
+
+{% macro arm64_parameters() -%}
+      device_type: r8a7796-m3ulcb
+      arch: arm64
+      board: uboot
+      boot_method: u-boot
+      boot_commands:
+        - run bootcmd_mmc0
+      needs_dtb: true
+      dtb_root: "renesas/"
+{%- endmacro %}
+
+{% macro imx6_parameters() -%}
+      device_type: imx6q-sabrelite
+      arch: armhf
+      board: mx6qsabrelite
+      boot_method: u-boot
+      boot_commands:
+        - run bootcmd_mmc0
+      needs_dtb: true
+{%- endmacro %}
+
+{% macro imx6_internal_parameters() -%}
+      {{imx6_parameters()}}
+      imgpath: "internal/daily/v2020dev0"
+      fs: btrfs
+      image_variant: collabora
+      visibility:
+        group:
+          - Apertis
+{%- endmacro %}
 
 profiles:
   # AMD64 profiles.
@@ -29,15 +63,18 @@ profiles:
     variables:
       pretty: "Minnowboard turbot using minimal image"
       image_type: minimal
+      {{amd64_parameters()}}
   - name: apertis-nfs-amd64-uefi
     templates: [ group-nfs-tpl.yaml ]
     variables:
       pretty: "Amd64 nfsroot"
       image_type: nfsroot
+      {{amd64_parameters()}}
   - name: apertis-target-amd64-uefi
     variables:
       pretty: "Minnowboard turbot using target image"
       image_type: target
+      {{amd64_parameters()}}
   - name: apertis_ostree-minimal-amd64-uefi
     templates: [ group-minimal-standalone-tpl.yaml,
                  group-apparmor-standalone-tpl.yaml,
@@ -45,6 +82,7 @@ profiles:
     variables:
       pretty: "Minnowboard turbot using minimal OStree image"
       image_type: minimal
+      {{amd64_parameters()}}
   - name: apertis_ostree-target-amd64-uefi
     templates: [ group-common-standalone-tpl.yaml,
                  group-ostree-common-tpl.yaml,
@@ -53,6 +91,7 @@ profiles:
     variables:
       pretty: "Minnowboard turbot using target OStree image"
       image_type: target
+      {{amd64_parameters()}}
 
   # SDK image will run in QEMU.
   - name: apertis-sdk-amd64-sdk
@@ -85,56 +124,28 @@ profiles:
                  group-apparmor-tpl.yaml ]
     variables:
       pretty: "ARM64 using minimal image"
-      device_type: r8a7796-m3ulcb
-      arch: arm64
       image_type: minimal
-      board: uboot
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
-      dtb_root: "renesas/"
+      {{arm64_parameters()}}
   - name: apertis-nfs-arm64-uboot
     templates: [ group-nfs-tpl.yaml ]
     variables:
-      pretty: "ARM64 using minimal image"
-      device_type: r8a7796-m3ulcb
-      arch: arm64
+      pretty: "ARM64 using nfsroot image"
       image_type: nfsroot
-      board: uboot
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
-      dtb_root: "renesas/"
+      {{arm64_parameters()}}
   - name: apertis_ostree-minimal-arm64-uboot
     templates: [ group-minimal-standalone-tpl.yaml,
                  group-apparmor-standalone-tpl.yaml,
                  group-ostree-common-tpl.yaml ]
     variables:
       pretty: "ARM64 using minimal OStree image"
-      device_type: r8a7796-m3ulcb
-      arch: arm64
       image_type: minimal
-      board: uboot
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
-      dtb_root: "renesas/"
+      {{arm64_parameters()}}
   - name: apertis-target-arm64-uboot
     templates: [ boot-tpl.yaml ]
     variables:
       pretty: "ARM64 using target image"
-      device_type: r8a7796-m3ulcb
-      arch: arm64
       image_type: target
-      board: uboot
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
-      dtb_root: "renesas/"
+      {{arm64_parameters()}}
   - name: apertis_ostree-target-arm64-uboot
     templates: [ group-common-standalone-tpl.yaml,
                  group-ostree-common-tpl.yaml,
@@ -142,51 +153,26 @@ profiles:
                  group-apparmor-standalone-tpl.yaml ]
     variables:
       pretty: "ARM64 using target OStree image"
-      device_type: r8a7796-m3ulcb
-      arch: arm64
       image_type: target
-      board: uboot
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
-      dtb_root: "renesas/"
+      {{arm64_parameters()}}
   - name: apertis-minimal-armhf-uboot
     templates: [ group-minimal-tpl.yaml,
                  group-apparmor-tpl.yaml ]
     variables:
       pretty: "i.MX6 Sabrelite using minimal image"
-      device_type: imx6q-sabrelite
-      arch: armhf
       image_type: minimal
-      board: uboot
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
+      {{imx6_parameters()}}
   - name: apertis-nfs-armhf-uboot
     templates: [ group-nfs-tpl.yaml ]
     variables:
-      pretty: "i.MX6 Sabrelite using minimal image"
-      device_type: imx6q-sabrelite
-      arch: armhf
+      pretty: "i.MX6 Sabrelite using nfsroot image"
       image_type: nfsroot
-      board: uboot
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
+      {{imx6_parameters()}}
   - name: apertis-target-armhf-uboot
     variables:
       pretty: "i.MX6 Sabrelite using target image"
-      device_type: imx6q-sabrelite
-      arch: armhf
       image_type: target
-      board: uboot
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
+      {{imx6_parameters()}}
   - name: apertis_ostree-minimal-armhf-uboot
     templates: [ group-minimal-standalone-tpl.yaml,
                  group-apparmor-standalone-tpl.yaml,
@@ -198,14 +184,8 @@ profiles:
                  aum-rollback-blacklist.yaml ]
     variables:
       pretty: "i.MX6 Sabrelite using OStree minimal image"
-      device_type: imx6q-sabrelite
-      arch: armhf
       image_type: minimal
-      board: uboot
-      boot_method: u-boot
-      boot_commands:
-        - reset
-      needs_dtb: true
+      {{imx6_parameters()}}
   - name: apertis_ostree-target-armhf-uboot
     templates: [ group-common-standalone-tpl.yaml,
                  group-ostree-common-tpl.yaml,
@@ -213,33 +193,15 @@ profiles:
                  group-apparmor-standalone-tpl.yaml ]
     variables:
       pretty: "i.MX6 Sabrelite using OStree target image"
-      device_type: imx6q-sabrelite
-      arch: armhf
       image_type: target
-      board: uboot
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
+      {{imx6_parameters()}}
 
   # Internal ARM images
   - name: apertis-target-armhf-internal-mx6qsabrelite
     variables:
       pretty: "i.MX6 Sabrelite using internal target image"
-      device_type: imx6q-sabrelite
-      imgpath: "internal/daily/v2020dev0"
-      arch: armhf
       image_type: target
-      board: mx6qsabrelite
-      fs: btrfs
-      image_variant: collabora
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
-      visibility:
-        group:
-          - Apertis
+      {{imx6_internal_parameters()}}
   - name: apertis_ostree-target-armhf-internal-mx6qsabrelite
     templates: [ group-common-standalone-tpl.yaml,
                  group-ostree-common-tpl.yaml,
@@ -247,54 +209,20 @@ profiles:
                  group-apparmor-standalone-tpl.yaml ]
     variables:
       pretty: "i.MX6 Sabrelite using OStree internal target image"
-      device_type: imx6q-sabrelite
-      imgpath: "internal/daily/v2020dev0"
-      arch: armhf
       image_type: target
-      board: mx6qsabrelite
-      fs: btrfs
-      image_variant: collabora
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
-      visibility:
-        group:
-          - Apertis
+      {{imx6_internal_parameters()}}
   - name: apertis-minimal-armhf-internal-mx6qsabrelite
     templates: [ group-minimal-tpl.yaml,
                  group-apparmor-tpl.yaml ]
     variables:
       pretty: "i.MX6 Sabrelite using internal minimal image"
-      device_type: imx6q-sabrelite
-      imgpath: "internal/daily/v2020dev0"
-      arch: armhf
       image_type: minimal
-      board: mx6qsabrelite
-      fs: btrfs
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
-      visibility:
-        group:
-          - Apertis
+      {{imx6_internal_parameters()}}
   - name: apertis_ostree-minimal-armhf-internal-mx6qsabrelite
     templates: [ group-minimal-standalone-tpl.yaml,
                  group-apparmor-standalone-tpl.yaml,
                  group-ostree-common-tpl.yaml ]
     variables:
       pretty: "i.MX6 Sabrelite using OStree internal minimal image"
-      device_type: imx6q-sabrelite
-      imgpath: "internal/daily/v2020dev0"
-      arch: armhf
       image_type: minimal
-      board: mx6qsabrelite
-      fs: btrfs
-      boot_method: u-boot
-      boot_commands:
-        - run bootcmd_mmc0
-      needs_dtb: true
-      visibility:
-        group:
-          - Apertis
+      {{imx6_internal_parameters()}}