/ixnas-api

FreeNAS/TrueNAS scripts to help / hook into vm-bhyve for iSCSI creation.

Primary LanguagePython

ixnas-api

FreeNAS/TrueNAS scripts to help / hook into vm-bhyve for iSCSI creation.

Setup config

cp config/ixnas-api.sample.ini config/ixnas-api.ini

Ideally, maybe better to do this, for a global host config: sudo mkdir -p /usr/local/etc/ixnas-api/config cp config/ixnas-api.sample.ini /usr/local/etc/ixnas-api/config/ixnas-api.ini

Edit config, required [HOSTNAME], user= and password=, The HOSTNAME is whatever you'll be using on the command line, so if using short, non-FQDN, then use those in the config.

For iSCSI, iscsi_target_portalgroup= and iscsi_target_initiatorgroup= will be needed. You need to set these up manually in the FreeNAS/TrueNAS UI. Most likely, they will both simply be the number 1.

Usage

create sparse zvol named testing10.iad1, for testing10.iad1 Bhyve VM:

> bin/create-zvol.py --host nas1 --vmname testing10.iad1 --name "testing10.iad1" --size "20G" --sparse

Create the complete iSCSI setup,

This creates Targets, Extents and the Target-Extent association.

> bin/create-iscsi.py --host nas1 --vmname testing10.iad1 --name "testing10.iad1"

Due to a 16 byte length limit for the extent's serial number, if the --diskserial is past, it is set that that, otherwise a UUID is generated, and the default string is built in the form of "${time_low}-${time_mid}-00".

> sudo iscsictl -A -p nas1 -t iqn.2005-08.com.ixsystems.iad1:testing10.iad1

> sudo iscsictl -L

    Target name                          Target portal    State
    iqn.2005-08.com.ixsystems.iad1:testing10.iad1 nas1             Connected: da0

> glabel status
                                  Name  Status  Components                                      
           diskid/DISK-a09bb06e-2fe-00     N/A  da0

> ls -l /dev/diskid/
    total 0
    crw-r-----  1 root  operator  0x94 Jan 27 01:13 DISK-a09bb06e-2fe-00

UX

Things should be non-verbose by default, and should bail out and exit with rc=1 if a problem happens.