summaryrefslogtreecommitdiff
path: root/roles/install-grub/tasks/main.yml
diff options
context:
space:
mode:
Diffstat (limited to 'roles/install-grub/tasks/main.yml')
-rw-r--r--roles/install-grub/tasks/main.yml32
1 files changed, 32 insertions, 0 deletions
diff --git a/roles/install-grub/tasks/main.yml b/roles/install-grub/tasks/main.yml
new file mode 100644
index 0000000..2a20271
--- /dev/null
+++ b/roles/install-grub/tasks/main.yml
@@ -0,0 +1,32 @@
+- name: Create GRUB directory
+ become: true
+ file:
+ path: "{{ vyos_write_root }}/boot/grub"
+ state: directory
+
+# It is necessary to mount and bind /dev, /proc, /sys and /boot in order to execute grub-install
+# and install GRUB correctly within the {{ volume_drive }} using chroot
+
+# XXX: ansible mount module requires fstype so it cannot be used for binding an already
+# mounted location, we get to use mount directly at least for /boot
+- name: Mount and bind /dev /proc /sys and {{ vyos_write_root }}/boot to {{ vyos_install_root }}
+ become: true
+ shell: mount --bind /dev {{ vyos_install_root }}/dev &&
+ mount --bind /proc {{ vyos_install_root }}/proc &&
+ mount --bind /sys {{ vyos_install_root }}/sys &&
+ mount --bind {{ vyos_write_root }} {{ vyos_install_root }}/boot
+ args:
+ warn: no
+
+- name: Install GRUB in the boot sector of {{ vyos_target_drive }}
+ become: true
+ command: chroot {{ vyos_install_root }} grub-install --no-floppy --root-directory=/boot {{ vyos_target_drive }} --force
+ args:
+ creates: "{{ vyos_install_root }}/boot/grub/grubenv"
+
+- name: Configure GRUB
+ become: true
+ template:
+ src: templates/boot/grub/grub.cfg.j2
+ dest: "{{ vyos_write_root }}/boot/grub/grub.cfg"
+ mode: 0644