98 lines
No EOL
2.1 KiB
Puppet
98 lines
No EOL
2.1 KiB
Puppet
|
|
class iscsi::server {
|
|
|
|
package { "scsi-target-utils":
|
|
ensure => installed,
|
|
}
|
|
|
|
service { "tgtd":
|
|
ensure => running,
|
|
enable => true,
|
|
require => Package["scsi-target-utils"],
|
|
}
|
|
|
|
file { "/etc/tgt/targets.conf":
|
|
ensure => present,
|
|
source => [ "puppet:///files/iscsi/targets.conf.${fqdn}",
|
|
"puppet:///files/iscsi/targets.conf",
|
|
"puppet:///iscsi/targets.conf", ],
|
|
mode => 0600,
|
|
owner => root,
|
|
group => root,
|
|
require => Package["scsi-target-utils"],
|
|
}
|
|
|
|
file { "/etc/tgt/target.d":
|
|
ensure => directory,
|
|
mode => 0700,
|
|
owner => root,
|
|
group => root,
|
|
require => Package["scsi-target-utils"],
|
|
}
|
|
|
|
exec { "iscsi-refresh":
|
|
command => "tgt-admin -e",
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
onlyif => "tgt-admin -e -p | egrep '^tgtadm '",
|
|
require => Service["tgtd"],
|
|
}
|
|
|
|
}
|
|
|
|
|
|
define iscsi::target($tid, $initiator = "ALL", $ensure = "present") {
|
|
|
|
include iscsi::server
|
|
|
|
$iqn = sprintf("iqn.2005-08.tgt:%s%s", $hostname, regsubst($name, "/", ".", "G"))
|
|
|
|
case $ensure {
|
|
"present": {
|
|
file { "/etc/tgt/target.d/${tid}.conf":
|
|
ensure => present,
|
|
content => template("iscsi/tid.conf.erb"),
|
|
mode => 0600,
|
|
owner => root,
|
|
group => root,
|
|
require => File["/etc/tgt/target.d"],
|
|
before => Exec["iscsi-refresh"],
|
|
}
|
|
|
|
}
|
|
"absent": {
|
|
file { "/etc/tgt/target.d/${tid}.conf":
|
|
ensure => absent,
|
|
before => Exec["iscsi-refresh"],
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
class iscsi::initiator {
|
|
|
|
package { "iscsi-initiator-utils":
|
|
ensure => installed,
|
|
}
|
|
|
|
service { "iscsid":
|
|
ensure => running,
|
|
enable => true,
|
|
require => Package["iscsi-initiator-utils"],
|
|
}
|
|
|
|
}
|
|
|
|
define iscsi::connect($portal) {
|
|
|
|
include iscsi::initiator
|
|
|
|
exec { "iscsi-connect-${name}":
|
|
path => "/bin:/usr/bin:/sbin:/usr/sbin",
|
|
command => "iscsiadm --mode discovery --type sendtargets --portal ${portal} && iscsiadm --mode node --targetname ${name} --portal ${portal} --login",
|
|
onlyif => "! iscsiadm --mode session | egrep '${portal}:[0-9]*,[0-9]* ${name}'\$",
|
|
require => Service["iscsid"],
|
|
}
|
|
|
|
} |