Steven Hillman 9eead39b6b Remove the requirement for VSM version to be specified
Relaxed the requirment for VSM version to always be specified. The
new code will find the newest available VSM iso and create a copy
of the iso called "current-n1000v.iso". This file will be used for
the remainder of the module.

Change-Id: Icdaa0dba83cb05e8c082786e578a9170666aa3ee
2015-11-06 09:07:09 +00:00

106 lines
3.7 KiB
Puppet

# == Class: n1k_vsm::vsmprep
#
# This class prepares the VSM image to be deploy in a server
# This class requires n1k_vsm to set some environmental variables
#
class n1k_vsm::vsmprep
{
include ::stdlib
require ::n1k_vsm
include ::n1k_vsm
# prepare vsm folders
ensure_resource('file', '/var/spool/cisco/', {
ensure => directory,
owner => 'root',
group => 'root',
mode => '0664'}
)
ensure_resource('file', '/var/spool/cisco/vsm', {
ensure => directory,
owner => 'root',
group => 'root',
mode => '0664'}
)
#Check source of n1kv-vsm image:yum-repo (or) local file in 'files' directory
if $n1k_vsm::n1kv_source != '' {
if ($n1k_vsm::n1kv_source =~ /^http/) or ($n1k_vsm::n1kv_source =~ /^ftp/) {
$vsmimage_uri = 'repo'
$vsm_path = '/opt/cisco/vsm'
} else {
$vsmimage_uri = 'file'
$vsmtgtimg = "/var/spool/cisco/vsm/${n1k_vsm::n1kv_source}"
$vsm_path = '/var/spool/cisco/vsm'
}
} else {
$vsmimage_uri = 'unspec'
$vsm_path = '/opt/cisco/vsm'
}
if $vsmimage_uri == 'file' {
#specify location on target-host where image file will be downloaded to.
file { $vsmtgtimg:
owner => 'root',
group => 'root',
mode => '0664',
source => "puppet:///modules/n1k_vsm/${n1k_vsm::n1kv_source}",
require => File['/var/spool/cisco/vsm/'],
}
} else {
if $vsmimage_uri == 'repo' {
#vsm package: 'nexus-1000v-vsm' rpm will be downloaded and installed
#from below repo.
yumrepo { 'cisco-vsm-repo':
baseurl => $n1k_vsm::n1kv_source,
descr => 'Repo for VSM Image',
enabled => 1,
gpgcheck => 1,
gpgkey => "${n1k_vsm::n1kv_source}/RPM-GPG-KEY",
}
}
package {'nexus-1000v-iso':
ensure => 'present',
name => 'nexus-1000v-iso',
provider => 'yum',
}
}
# copy repackiso.py to local place
file { 'VSM_Repackage_Script':
ensure => present,
path => '/tmp/repackiso.py',
owner => 'root',
group => 'root',
mode => '0774',
source => 'puppet:///modules/n1k_vsm/repackiso.py',
}
# copy the latest VSM image to known name
if $n1k_vsm::n1kv_version == '' or $n1k_vsm::n1kv_version == 'latest'{
exec { 'Exec_VSM_Rename':
command => "/bin/cp ${vsm_path}/`/bin/ls ${vsm_path} | /bin/sort -r | /bin/grep -m 1 iso` ${vsm_path}/current-n1000v.iso",
creates => "${vsm_path}/current-n1000v.iso",
}
} else {
exec { 'Exec_VSM_Rename_with_version':
command => "/bin/cp ${vsm_path}/n1000v-dk9.${n1k_vsm::n1kv_version}.iso ${vsm_path}/current-n1000v.iso",
creates => "${vsm_path}/current-n1000v.iso",
}
}
# Now generate ovf xml file and repackage the iso
exec { 'Exec_VSM_Repackage_Script':
command => "/tmp/repackiso.py -i${vsm_path}/current-n1000v.iso -d${n1k_vsm::vsm_domain_id} -n${n1k_vsm::vsmname} -m${n1k_vsm::mgmtip} -s${n1k_vsm::mgmtnetmask} -g${n1k_vsm::mgmtgateway} -p${n1k_vsm::vsm_admin_passwd} -r${n1k_vsm::vsm_role} -f/var/spool/cisco/vsm/${n1k_vsm::vsm_role}_repacked.iso",
creates => "/var/spool/cisco/vsm/${n1k_vsm::vsm_role}_repacked.iso",
}
# If we're under pacemaker_control, create a secondary VSM iso as well
if ($n1k_vsm::pacemaker_control) {
exec { 'Exec_VSM_Repackage_Script_secondary':
command => "/tmp/repackiso.py -i${vsm_path}/current-n1000v.iso -d${n1k_vsm::vsm_domain_id} -n${n1k_vsm::vsmname_s} -m${n1k_vsm::mgmtip} -s${n1k_vsm::mgmtnetmask} -g${n1k_vsm::mgmtgateway} -p${n1k_vsm::vsm_admin_passwd} -r${n1k_vsm::vsm_role_s} -f/var/spool/cisco/vsm/${n1k_vsm::vsm_role_s}_repacked.iso",
creates => "/var/spool/cisco/vsm/${n1k_vsm::vsm_role_s}_repacked.iso",
}
}
}