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.

Reply via email to