I am using Puppet installed with the powershell module. I am struggling with how to pass a puppet variable through to powershell. For instance I have the following in my module
init.pp file:
class windows_dns(
$forwarders = '1.1.1.1'
) {
anchor { 'windows_dns::begin': } ->
class{'windows_dns::install': } ->
class{'windows_dns::config': } ->
class{'windows_dns::service': } ->
anchor { 'windows_dns::end': }
}
Then in my config.pp file I have:
class windows_dns::config {
case $kernelmajversion {
6.3: {
$forwarder_execute = 'windows_dns/setdnsforwarders.ps1'
$forwarder_check = 'windows_dns/checkdnsforwarders.ps1'
$dnsforwarders = $windows_dns::forwarders
}
6.1: {
$forwarder_execute = 'windows_dns/setdnsforwarders_legacy.ps1'
$forwarder_check = 'windows_dns/checkdnsforwarders_legacy.ps1'
}
}
exec { 'forwarderscreate':
command => template ($forwarder_execute),
unless => template ($forwarder_check),
provider => powershell,
logoutput => true,
}
I have stored as a template in the manifest a powershell script file as:
$dnsforwarders | out-file C:\test.log
I obviously want to use a more complex output. I tried adding a parameter to the top of my powershell script but dont understand how to pass that as an option to puppet.
The variable passes through fine. I tested by changing the command to command=> template ($dnsforwarders) and i of course got an error from puppet about it not being able to find the template named 1.1.1.1 in the manifest. I just dont know how to pass this through to the shell.