From 1aa03a7d37924f74a24aecb1c9f76cede5177944 Mon Sep 17 00:00:00 2001 From: Massaki Archambault Date: Tue, 6 Aug 2024 13:41:57 -0400 Subject: [PATCH] add usbip --- hosts | 17 ++++++++++----- playbook.yml | 6 +++++- roles/proxmox/tasks/main.yml | 6 ++++++ roles/usbip/defaults/main.yml | 1 + roles/usbip/files/usbip-bind@.service | 15 +++++++++++++ roles/usbip/files/usbipd.service | 10 +++++++++ roles/usbip/tasks/main.yml | 31 +++++++++++++++++++++++++++ 7 files changed, 80 insertions(+), 6 deletions(-) create mode 100644 roles/usbip/defaults/main.yml create mode 100644 roles/usbip/files/usbip-bind@.service create mode 100644 roles/usbip/files/usbipd.service create mode 100644 roles/usbip/tasks/main.yml diff --git a/hosts b/hosts index 949db6d..85d2b7a 100644 --- a/hosts +++ b/hosts @@ -46,13 +46,19 @@ all: name: jirost level: 4 home-assistant: - hosts: - home-assistant: - ansible_host: 192.168.31.20 + # hosts: + # home-assistant: + # ansible_host: 192.168.31.20 cups: + # hosts: + # cups: + # ansible_host: cups.local + usbip: hosts: - cups: - ansible_host: cups.local + usbip: + ansible_host: 192.168.20.33 + exposed_usb_devices: + - 2-1 k3s: children: k3s-server: @@ -93,6 +99,7 @@ all: minecraft-server: home-assistant: cups: + usbip: vars: ansible_user: ansible ansible_password: !vault | diff --git a/playbook.yml b/playbook.yml index b71b00e..82b0d7a 100644 --- a/playbook.yml +++ b/playbook.yml @@ -48,4 +48,8 @@ - hosts: cups roles: - - cups \ No newline at end of file + - cups + +- hosts: usbip + roles: + - usbip \ No newline at end of file diff --git a/roles/proxmox/tasks/main.yml b/roles/proxmox/tasks/main.yml index 2eb3e56..9073918 100644 --- a/roles/proxmox/tasks/main.yml +++ b/roles/proxmox/tasks/main.yml @@ -1,3 +1,9 @@ +- name: Install linux-tools + apt: + update_cache: true + name: + - linux-tools-generic + - name: Enable IOMMU lineinfile: path: /etc/default/grub diff --git a/roles/usbip/defaults/main.yml b/roles/usbip/defaults/main.yml new file mode 100644 index 0000000..2c9154e --- /dev/null +++ b/roles/usbip/defaults/main.yml @@ -0,0 +1 @@ +exposed_usb_devices: [] \ No newline at end of file diff --git a/roles/usbip/files/usbip-bind@.service b/roles/usbip/files/usbip-bind@.service new file mode 100644 index 0000000..91c8a75 --- /dev/null +++ b/roles/usbip/files/usbip-bind@.service @@ -0,0 +1,15 @@ +[Unit] +Description=USB-IP Binding on bus id %I +After=network-online.target usbipd.service +Wants=network-online.target +Requires=usbipd.service + +[Service] +Type=simple +ExecStart=/usr/bin/usbip bind -b %i +RemainAfterExit=yes +ExecStop=/usr/bin/usbip unbind -b %i +Restart=on-failure + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/roles/usbip/files/usbipd.service b/roles/usbip/files/usbipd.service new file mode 100644 index 0000000..df08104 --- /dev/null +++ b/roles/usbip/files/usbipd.service @@ -0,0 +1,10 @@ +[Unit] +Description=USB/IP server +After=network.target + +[Service] +ExecStartPre=/usr/sbin/modprobe usbip-host +ExecStart=/usr/bin/usbipd + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/roles/usbip/tasks/main.yml b/roles/usbip/tasks/main.yml new file mode 100644 index 0000000..07e10db --- /dev/null +++ b/roles/usbip/tasks/main.yml @@ -0,0 +1,31 @@ +- name: Install linux-tools-generic + apt: + update_cache: true + name: + - linux-tools-generic + +- name: Install usbip systemd unit + copy: + src: usbipd.service + dest: /etc/systemd/system/usbipd.service + mode: 0644 + register: copy_usbipd_unit + +- name: Install usbip-bind systemd unit + copy: + src: usbip-bind@.service + dest: /etc/systemd/system/usbip-bind@.service + mode: 0644 + register: copy_usbip_bind_unit + +- name: Reload systemd + systemd: + daemon_reload: true + when: copy_usbipd_unit.changed or copy_usbip_bind_unit.changed + +- name: Enable usbip units + with_items: "{{ exposed_usb_devices }}" + systemd: + name: "usbip-bind@{{ item }}.service" + state: started + enabled: true