Josh, your a god among men. Thank you so much. It was the literal string for the variable that resolved it.
On Monday, October 13, 2014 1:05:39 PM UTC-4, Josh Cooper wrote: > > Hi Paul, > > On Mon, Oct 13, 2014 at 7:15 AM, Paul Ponzeka <[email protected] > <javascript:>> wrote: > >> Thanks for this rob. I still cannot get the variable to pass into the >> script. Now i have the *setdnsforwarders.ps1.erb* template, >> > > Note puppet doesn't care what the file extension is, so long as the > template('path/to/file') refers to the correct file. > > >> and here is the complete copy of what is in the template: >> >> $outside = <%= scope['dnsforwarders'] %> >> $outside | out-file C:\output.log -append >> > >> >> I've also tried the following: >> >> >> <%= scope.lookupvar('@dnsforwarders') %> | out-file C:\output.log -append >> > > Variables in the current scope can be accessed directly as <%= > @dnsforwarders %>, as opposed to the variable named "@dnsforwarders" > > >> <%= scope.lookupvar('windows_dns::forwarders') %> | out-file >> C:\output.log -append >> > > I think the pipeline construct isn't doing what you would expect. I think > you need to quote the ERB snippet, so that powershell sees a literal string: > > '<%= scope.lookupvar('windows_dns::forwarders') %>' | out-file > C:\output.log -append > > >> <%= scope.lookupvar('windows_dns::config') %> | out-file C:\output.log >> -append >> > >> Each time the output.log file is blank. >> > >> Here is my windows_dns::config file: >> >> class windows_dns::config { >> >> case $kernelmajversion { >> 6.3: { >> $forwarder_execute = >> 'windows_dns/setdnsforwarders.ps1.erb' >> $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, >> >> } >> > >> And here is where the variable is originally defined in the >> windows_dns::init.pp >> >> 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': } >> >> } >> > > If you are using a recent version of puppet, you don't need the anchor > pattern. See > https://docs.puppetlabs.com/puppet/latest/reference/lang_containment.html > > >> >> Any help would be amazing to get the variable to pass >> > > Here's an example using an inline template that works correctly. Note I > have to escape the backslash c:\\output.log due to the double quoted > string. You won't need to do that if the template is in an external file: > > class windows_dns::config { > $dnsforwarder = "www.example.com" > > exec { 'command': > command => inline_template("'<%= scope['dnsforwarder'] %>' | > out-file c:\\output.log -append"), > logoutput => true, > provider => powershell > } > } > > include windows_dns::config > > C:\>puppet apply powershell.pp > Notice: Compiled catalog for win-agent in environment production in 0.11 > seconds > Notice: /Stage[main]/Windows_dns::Config/Exec[command]/returns: executed > successfully > Notice: Finished catalog run in 1.09 seconds > > Note this will create a UTF-16LE encoded file with a byte-order mark. You > may want to specify the encoding of the file you're writing to. > > >> On Friday, October 10, 2014 5:28:06 PM UTC-4, Rob Reynolds wrote: >>> >>> >>> >>> On Thu, Oct 9, 2014 at 4:18 PM, Paul Ponzeka <[email protected]> wrote: >>> >>>> Thanks josh, so in my template file setdnsforwarders.ps1 is this the >>>> correct syntax? >>>> >>> >>> setdnsforwarders.ps1.erb >>> >>> >>>> >>>> $outside = <%= scope['dnsforwarders'] %> >>>> $outside | out-file C:\output.log -append >>>> >>>> >>>> On Thursday, October 9, 2014 4:52:04 PM UTC-4, Josh Cooper wrote: >>>>> >>>>> >>>>> >>>>> 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%40goog >>>>>> legroups.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/gu >>>>> ides/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/961dd225-1159-48fe-a9bf-c727bf094b74% >>>> 40googlegroups.com >>>> <https://groups.google.com/d/msgid/puppet-users/961dd225-1159-48fe-a9bf-c727bf094b74%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >>> >>> -- >>> Rob Reynolds >>> 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] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/puppet-users/d23ddc00-af07-462d-9a99-1a9d668bce32%40googlegroups.com >> >> <https://groups.google.com/d/msgid/puppet-users/d23ddc00-af07-462d-9a99-1a9d668bce32%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > 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/9c8effba-c5b5-44b6-b76b-ab3ea61a4d1d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
