On Thu, Oct 9, 2014 at 12:59 PM, Juan Andres Ramirez <jandresa...@gmail.com>
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 puppet-users+unsubscr...@googlegroups.com.
> 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 puppet-users+unsubscr...@googlegroups.com.
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