Forráskód Böngészése

add kodi-bootstrap role

Blaine Story 3 éve
szülő
commit
208c678303
1 módosított fájl, 104 hozzáadás és 0 törlés
  1. 104 0
      roles/kodi-bootstrap/tasks/main.yml

+ 104 - 0
roles/kodi-bootstrap/tasks/main.yml

@@ -0,0 +1,104 @@
+---
+- name: Fail if not running Nix
+  ansible.builtin.raw: grep Nix /etc/os-release
+  changed_when: false
+
+- name: Install Python3 if needed
+  ansible.builtin.raw: bash -c "which python3 || nix-env -iA nixos.python3"
+
+- name: Gather facts now that Python is installed
+  ansible.builtin.setup:
+
+- name: Set Devices
+  ansible.builtin.set_fact:
+    devices: "{{ ansible_devices | dict2items }}"
+
+- name: Find correct device
+  ansible.builtin.set_fact:
+    device: "{{ item }}"
+  when:
+    - item.value.host is defined
+    - item.value.host != ""
+    - item.value.removable|int == 0
+  with_items:
+    - "{{ devices }}"
+  loop_control:
+    label: "{{ item.key }}"
+
+- name: Wipe /dev/{{ device.key }} and label GPT
+  ansible.builtin.shell:
+    cmd: sgdisk -og /dev/{{ device.key }}
+
+- name: Create boot partition
+  ansible.builtin.shell:
+    cmd: sgdisk -n 1::+500M -t 1:ef00 /dev/{{ device.key }}
+
+- name: Create root partition
+  ansible.builtin.shell:
+    cmd: sgdisk -n 2::0 -t 2:8300 /dev/{{ device.key }}
+
+- name: Rescan disk
+  community.general.parted:
+    device: /dev/{{ device.key }}
+  register: device
+
+- name: Build prefix
+  ansible.builtin.set_fact:
+    device_prefix: "{{ device.disk.dev }}{% if 'nvme' in device.disk.dev %}p{% endif %}"
+
+- name: Format boot partition
+  community.general.filesystem:
+    device: "{{ device_prefix }}1"
+    fstype: vfat
+    
+- name: Format root partition
+  community.general.filesystem:
+    device: "{{ device_prefix }}2"
+    fstype: xfs
+
+- name: Mount root partition
+  ansible.builtin.shell:
+    cmd: mount {{ device_prefix }}2 /mnt
+
+- name: Create /mnt/boot
+  ansible.builtin.file:
+    path: /mnt/boot
+    state: directory
+
+- name: Mount boot partition
+  ansible.builtin.shell:
+    cmd: mount {{ device_prefix }}1 /mnt/boot
+
+- name: Generate nix hardware config
+  ansible.builtin.shell:
+    cmd: nixos-generate-config --root /mnt
+
+- name: Copy configuration.nix
+  ansible.builtin.template:
+    src: "{{ role_path }}/../nix-kodi/templates/configuration.nix.j2"
+    dest: /mnt/etc/nixos/configuration.nix
+    owner: root
+    group: root
+    mode: '0644'
+
+- name: Install Nix
+  ansible.builtin.shell:
+    cmd: nixos-install --no-root-password
+
+- name: Reboot asynchronously
+  ansible.builtin.shell:
+    cmd: "sleep 5 && /run/current-system/sw/bin/systemctl reboot"
+  async: 1
+  poll: 0
+
+- name: Wait for the reboot and reconnect
+  ansible.builtin.wait_for:
+    port: 22
+    host: '{{ inventory_hostname }}'
+    search_regex: OpenSSH
+    delay: 15
+    timeout: 60
+  delegate_to: localhost
+  become: false
+
+- meta: end_host