stuvusIT.iscsi-target
iscsi-target
iSCSI target role that installs and uses targetcli.
Requirements
Debian stretch or Ubuntu (at least bionic as versions before that don't carry the targetcli-fb package).
Also, this role is not creating any disks/partitions/LVs.
Therefore it is expected that they are already present on machine or created by some other role.
Role Variables
| Name | Default / Mandatory | Description | 
|---|---|---|
iscsi_base_wwn | 
:heavy_check_mark: | WWN that identifies the target host | 
iscsi_disk_path_prefix | 
'' | 
Optional prefix to exported disk paths | 
iscsi_targets | 
:heavy_check_mark: | List of targets to be configured, see targets | 
iscsi_default_initiators | 
[] | 
A list of initiators. If specified it will be used as default for targets. | 
iscsi_default_portals | 
[] | 
A list of dicts having an ip and optionally a port | 
iscsi_default_disk_type | 
block | 
Default disk type | 
Targets
Each target has the following vars:
| Name | Default / Mandatory | Description | 
|---|---|---|
name | 
:heavy_check_mark: | name identifier of this target. This is appended to iscsi_base_wwn and used as wwn | 
disks | 
:heavy_check_mark: | Disk configuration, see disks | 
initiators | 
:heavy_check_mark: | List of initiators that are allowed to connect to this target, see initiators | 
portals | 
:heavy_check_mark: | List of dicts that contains the local ip and optionally the port on which access to this target is allowed (default port is 3260) | 
state | 
present | 
present or absent. Default: present | 
Disks
A list of dicts with the following entries:
| Name | Default / Mandatory | Description | 
|---|---|---|
name | 
:heavy_check_mark: | Name that is used for the backstore | 
path | 
:heavy_check_mark: | Existing path to the disk that should be used as backstore. iscsi_disk_path_prefix will be prepended if defined. | 
type | 
[{{ iscsi_default_disk_type }}](#role variables) | 
One out of {fileio, iblock, pscsi, rd_mcp} | 
Initiators
Each initiator element is a dict that must have a wwn attribute and can optionally have a authentication attribute, which is also a dict that can contain the following entries:
| Name | mandatory | Description | 
|---|---|---|
userid | 
:heavy_check_mark: | Userid to authenticate the initator | 
password | 
:heavy_check_mark: | Password to authenticate the initiator | 
userid_mutual | 
(omitted) | Mutual userid to authenticate the target | 
password_mutual | 
(omitted) | Mutual password to authenticate the target | 
Dependencies
This role depends on the ansible targetcli modules.
Example Playbook
- hosts: storage
  roles:
    - role: iscsi-target
      iscsi_base_wwn: iqn.1994-05.com.redhat
      iscsi_disk_path_prefix: /dev/zvol/tank/vms/
      iscsi_default_initiators:
       - name: iqn.1994-05.com.redhat:client1
         authentication:
           userid: myuser
           password: mypassword
           userid_mutual: sharedkey
           password_mutual: sharedsecret
      iscsi_default_portals:
        - ip: 192.168.1.45
          port: 5555
      iscsi_targets:
        - name: target1
          disks:
            - name: vm1
              path: testing/vm1
            - name: vm2
              path: testing/vm2
        - name: target2
          disks:
            - name: vm3
              path: testing/vm2
              type: iblock
          initiators:
            - name: iqn.1994-05.com.redhat:client1
              authentication:
                userid: myuser
                password: mypassword
                userid_mutual: sharedkey
                password_mutual: sharedsecret
            - name: iqn.1994-05.com.redhat:client2
              authentication:
                userid: otheruser
                password: otherpw
                userid_mutual: somekey
                password_mutual: somesecret
          portals:
            - ip: 192.168.1.45
              port: 5555
            - ip: 192.168.2.10
Result
| Target | Disks | Initiators | Portals | 
|---|---|---|---|
target1 | 
vm1,vm2 (both iblock) | 
iqn.1994-05.com.redhat:client1 | 
192.168.1.45:5555 | 
target2 | 
vm3 (iblock) | 
iqn.1994-05.com.redhat:client1,iqn.1994-05.com.redhat:client2 | 
192.168.1.45:5555, 192.168.2.10:3260 | 
License
GPLv3
Author Information
- original author: Ondrej Faměra (OndrejHome) ondrej-xa2iel8u@famera.cz
 - modified by Michel Weitbrecht (SlothOfAnarchy) michel.weitbrecht@stuvus.uni-stuttgart.de
 
