On Thu, Oct 9, 2014 at 12:59 PM, Juan Andres Ramirez <[email protected]>
wrote:

> Example:
>
> I have my script on powershell in the next path
>
> in Puppet:
>
> define some::module() {
>    $script = "\\\\server1\\shared\\script.ps1
>
>     exec { "Executing a script":
>           command => "powershell.exe -ExecutionPolicy ByPass -File
> ${script} ${param1}",
>           unless      => "powershell.exe -ExecutionPolicy ByPass -command
> \"here any command on powershell \""
> }
>
>
>
> On Thursday, October 9, 2014 4:22:14 PM UTC-3, Paul Ponzeka wrote:
>
>> 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.
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/puppet-users/c62b8af5-4890-4a84-905e-63e7b6132e13%40googlegroups.com
> <https://groups.google.com/d/msgid/puppet-users/c62b8af5-4890-4a84-905e-63e7b6132e13%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>


I would recommend using the powershell provider as you were doing. In your
powershell script 'windows_dns/setdnsforwarders.ps1', resolve parameters
using ERB syntax found in
https://docs.puppetlabs.com/guides/templating.html#referencing-variables,
something like:

<%= scope['dnsforwarders'] %>

Josh

-- 
Josh Cooper
Developer, Puppet Labs

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/CA%2Bu97unM6jyQiCEBhdxFT4Qnv93jf95jQQ5%2Bb0PMfAGKZ47PSQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to