From d6345c3d0099a52a38262ca1bc3638994c6df069 Mon Sep 17 00:00:00 2001 From: Mikhail Chernonog Date: Wed, 7 Apr 2021 14:19:56 +0300 Subject: [PATCH] iscsi: Add new feature Signed-off-by: Mikhail Chernonog --- features/iscsi/README.md | 14 +++++++ features/iscsi/config.mk | 12 ++++++ .../iscsi/data/etc/initrd/cmdline.d/iscsi | 9 ++++ features/iscsi/data/etc/rc.d/init.d/iscsi | 41 +++++++++++++++++++ features/iscsi/rules.mk | 5 +++ 5 files changed, 81 insertions(+) create mode 100644 features/iscsi/README.md create mode 100644 features/iscsi/config.mk create mode 100644 features/iscsi/data/etc/initrd/cmdline.d/iscsi create mode 100755 features/iscsi/data/etc/rc.d/init.d/iscsi create mode 100644 features/iscsi/rules.mk diff --git a/features/iscsi/README.md b/features/iscsi/README.md new file mode 100644 index 00000000..b72b8c46 --- /dev/null +++ b/features/iscsi/README.md @@ -0,0 +1,14 @@ +# Feature: iscsi-boot + +Feature adds you to perform a diskless system boot using pxe and iSCSI. + +## Parameters +- **ISCSI_TARGET_NAME** -- Target name iSCSI, required parameter +- **ISCSI_TARGET_IP** -- Target IP address iSCSI, required parameter +- **ISCSI_TARGET_PORT** -- Target port iSCSI +- **ISCSI_TARGET_LUN** -- Target group tag iSCSI +- **ISCSI_INITIATOR** -- Initiator name iSCSI +- **ISCSI_USERNAME** -- Username for initiator authentication by the target(s) +- **ISCSI_PASSWORD** -- Password for initiator authentication by the target(s) +- **ISCSI_IN_USERNAME** -- Username for target(s) authentication by the initiator +- **ISCSI_IN_PASSWORD** -- Password for target(s) authentication by the initiator diff --git a/features/iscsi/config.mk b/features/iscsi/config.mk new file mode 100644 index 00000000..02f0c84b --- /dev/null +++ b/features/iscsi/config.mk @@ -0,0 +1,12 @@ +ISCSI_MODULES = iscsi-ibft \ + iscsi-tcp \ + iscsi-boot-sysfs \ + iscsi-target-mod \ + target-core-mod \ + libiscsi \ + libiscsi-tcp \ + scsi-transport-iscsi \ + sd_mod \ + sr_mod + +ISCSI_DATADIR = $(FEATURESDIR)/iscsi/data diff --git a/features/iscsi/data/etc/initrd/cmdline.d/iscsi b/features/iscsi/data/etc/initrd/cmdline.d/iscsi new file mode 100644 index 00000000..27d0e0eb --- /dev/null +++ b/features/iscsi/data/etc/initrd/cmdline.d/iscsi @@ -0,0 +1,9 @@ +register_parameter string ISCSI_TARGET_NAME +register_parameter string ISCSI_TARGET_IP +register_parameter number ISCSI_TARGET_PORT +register_parameter number ISCSI_TARGET_LUN +register_parameter string ISCSI_INITIATOR +register_parameter string ISCSI_USERNAME +register_parameter string ISCSI_PASSWORD +register_parameter string ISCSI_IN_USERNAME +register_parameter string ISCSI_IN_PASSWORD diff --git a/features/iscsi/data/etc/rc.d/init.d/iscsi b/features/iscsi/data/etc/rc.d/init.d/iscsi new file mode 100755 index 00000000..a4fa805b --- /dev/null +++ b/features/iscsi/data/etc/rc.d/init.d/iscsi @@ -0,0 +1,41 @@ +#!/bin/bash +### BEGIN INIT INFO +# Provides: iscsi +# Required-Start: cmdline modules network-up +# Should-Start: +# Required-Stop: +# Should-Stop: +# Default-Start: 3 4 5 +# Default-Stop: +### END INIT INFO + +[ -z "${1-}" ] || [ "$1" = start ] || exit 0 + +if [ -z "$ISCSI_TARGET_NAME" ] || [ -z "$ISCSI_TARGET_IP" ]; then + exit 0 +fi + +if [ -z "$ISCSI_INITIATOR" ]; then + if [ ! -f /etc/iscsi/initiatorname.iscsi ]; then + mkdir -p /etc/iscsi + iscsi-gen-initiatorname + fi + . /etc/iscsi/initiatorname.iscsi + ISCSI_INITIATOR="$InitiatorName" +fi + +if [ -z "$ISCSI_TARGET_PORT" ]; then + ISCSI_TARGET_PORT=3260 +fi + +if [ -z "$ISCSI_TARGET_GROUP" ]; then + ISCSI_TARGET_GROUP=1 +fi + +iscsistart -i "$ISCSI_INITIATOR" -t "$ISCSI_TARGET_NAME" \ + -g "$ISCSI_TARGET_GROUP" -a "$ISCSI_TARGET_IP" \ + -p "$ISCSI_TARGET_PORT" \ + "${ISCSI_USERNAME:+-u "$ISCSI_USERNAME"}" \ + "${ISCSI_PASSWORD:+-w "$ISCSI_PASSWORD"}" \ + "${ISCSI_IN_USERNAME:+-U "$ISCSI_IN_USERNAME"}" \ + "${ISCSI_IN_PASSWORD:+-W "$ISCSI_IN_PASSWORD"}" diff --git a/features/iscsi/rules.mk b/features/iscsi/rules.mk new file mode 100644 index 00000000..42a20880 --- /dev/null +++ b/features/iscsi/rules.mk @@ -0,0 +1,5 @@ +MODULES_LOAD += $(ISCSI_MODULES) + +PUT_PROGS += iscsistart iscsi-gen-initiatorname iscsi-iname +PUT_FILES += $(wildcard /etc/iscsi/initiatorname.iscsi) +PUT_FEATURE_DIRS += $(ISCSI_DATADIR)