I updated the test_win_script role in my fork to use the filter and confirm 
the output matches the expected results.

On Monday, February 23, 2015 at 3:54:12 PM UTC-6, Michael Perzel wrote:
>
> Victory!  I'll add a few tests for invalid data and send in a pull request.
>
> TEST_FLAGS="-t test_powershell_filter -i /etc/ansible/hosts" make 
> test_winrm
> ansible-playbook test_winrm.yml -i inventory.winrm -e 
> @integration_config.yml  -v -t test_powershell_filter -i /etc/ansible/hosts
>  [WARNING]: The version of gmp you have installed has a known issue 
> regarding
> timing vulnerabilities when used with pycrypto. If possible, you should 
> update
> it (i.e. yum update gmp).
>
>
> PLAY [windows] 
> ****************************************************************
>
> TASK: [test_powershell_filter | Convert yaml dict to powershell hash] 
> *********
> changed: [mdm-wsrv98.surescripts-dev.qa -> 127.0.0.1] => {"changed": 
> true, "cmd": "echo '@{'This'='THIS';'Other'='OTHER';'That'='THAT';}'", 
> "delta": "0:00:00.003494", "end": "2015-02-23 15:52:47.477128", "rc": 0, 
> "start": "2015-02-23 15:52:47.473634", "stderr": "", "stdout": 
> "@{This=THIS;Other=OTHER;That=THAT;}", "warnings": []}
>
> TASK: [test_powershell_filter | Check that actual equals expected] 
> ************
> ok: [mdm-wsrv98.surescripts-dev.qa] => {"msg": "all assertions passed"}
>
>
>
> On Monday, February 23, 2015 at 3:37:03 PM UTC-6, Michael Perzel wrote:
>>
>> I changed my directory so that test_winrm was in the current directory. 
>> But now I get an error message complaining it can't find the win_file 
>> module. I assume its not finding my ansible-module checkout.
>>
>> ansible/test/integration> TEST_FLAGS="-t test_powershell_filter -i 
>> /etc/ansible/hosts" make test_winrm
>> ansible-playbook test_winrm.yml -i inventory.winrm -e 
>> @integration_config.yml  -v -t test_powershell_filter -i /etc/ansible/hosts
>>  [WARNING]: The version of gmp you have installed has a known issue 
>> regarding
>> timing vulnerabilities when used with pycrypto. If possible, you should 
>> update
>> it (i.e. yum update gmp).
>>
>> ERROR: win_file is not a legal parameter in an Ansible task or handler
>> make: *** [test_winrm] Error 1
>>
>> I'll keep working through this... 
>>
>> On Monday, February 23, 2015 at 3:16:45 PM UTC-6, Michael Perzel wrote:
>>>
>>> I updated test_winrm.yml to include my role but when I tried to run 
>>>
>>> ansible-source/ansible> TEST_FLAGS="-t test_powershell_filter" make 
>>> test_winrm
>>> make: *** No rule to make target `test_winrm'.  Stop.
>>>
>>> Did you need to make changes to the Makefile in order for this to work?
>>>
>>> I updated my playbook. I had intended command: echo ....  I'll update 
>>> test_win_script as well once I get this working.
>>>
>>>
>>> On Monday, February 23, 2015 at 1:33:36 PM UTC-6, Chris Church wrote:
>>>>
>>>> Add your new test role to test/integration/test_winrm.yml with a 
>>>> matching tag, then run:
>>>>
>>>> TEST_FLAGS="-t test_powershell_filter" make test_winrm
>>>>
>>>>
>>>> It may be worthwhile to add to the test_win_script role to make sure 
>>>> your filter works for passing parameters to a PowerShell script.
>>>>
>>>> Also, from your test playbook, there is no echo module - maybe you 
>>>> meant to use command instead?
>>>>
>>>>
>>>> On Mon, Feb 23, 2015 at 12:39 PM, Michael Perzel <michae...@gmail.com> 
>>>> wrote:
>>>>
>>>>> This isn't directly related to this thread but it was discussed 
>>>>> earlier so it was the best place for it.
>>>>>
>>>>> I created a filter that converts a yaml dict to a powershell hash. I'm 
>>>>> trying to write some tests for it but I'm not sure how to run just my 
>>>>> specific test. The file playbook and vars are 
>>>>> at ansible/test/integration/roles/test_powershell_filter/ and the filter 
>>>>> is 
>>>>> at ansible/lib/ansible/runner/filter_plugins.
>>>>>
>>>>> Test playbook:
>>>>> https://gist.github.com/perzizzle/8fb875895b218772eede
>>>>> Test variables
>>>>> https://gist.github.com/perzizzle/dc73025a2232f2da9b88
>>>>> Filter
>>>>> https://gist.github.com/perzizzle/117a6b139e2a97194d5f
>>>>>
>>>>> When I run "make tests" a whole bunch of them succeed but one fails 
>>>>> related to postgres. Is it possible to run just my one test I've created?
>>>>>
>>>>> Thanks,
>>>>>
>>>>> On Wednesday, February 4, 2015 at 1:44:00 AM UTC-6, Chris Church wrote:
>>>>>>
>>>>>> Hi Michael,
>>>>>>
>>>>>> I had submitted a PR (https://github.com/ansible/ansible/pull/9602) 
>>>>>> -- I'll see if I can get that merged soon.
>>>>>>
>>>>>>
>>>>>> On Mon, Jan 26, 2015 at 2:47 PM, Michael Perzel <michae...@gmail.com> 
>>>>>> wrote:
>>>>>>
>>>>>>> I ended up creating a new filter that could transform 
>>>>>>>  
>>>>>>>
>>>>>>> installArguments:
>>>>>>>
>>>>>>>       key: value
>>>>>>>
>>>>>>>       key2: value2
>>>>>>>
>>>>>>> and return “@{'key2'='value2';'key'='value';}” I can share if 
>>>>>>> anyone is interested.
>>>>>>>
>>>>>>> I just upgraded to ansible 1.8 and made your fix to powershell.py 
>>>>>>> and winrm.py manually again. Is there any target version to get this 
>>>>>>> into 
>>>>>>> the main branch? I poked around in github but couldn't find way to see 
>>>>>>> if 
>>>>>>> you had submitted a pull request for this.
>>>>>>>
>>>>>>>
>>>>>>> On Thursday, November 6, 2014 at 5:26:49 PM UTC-6, Chris Church 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Absolutely, just haven't had a chance to get back to 
>>>>>>>> Windows-related things this week.
>>>>>>>>
>>>>>>>> On Thu, Nov 6, 2014 at 4:37 PM, Michael Perzel <michae...@gmail.com
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> Are you going to submit a pull request for this into devel? It 
>>>>>>>>> definitely solved my issue.
>>>>>>>>>
>>>>>>>>> On Saturday, October 25, 2014 2:23:55 PM UTC-5, Chris Church wrote:
>>>>>>>>>>
>>>>>>>>>> Could you create a gist (https://gist.github.com/) with the 
>>>>>>>>>> relevant lines from your inventory variables, playbook and script 
>>>>>>>>>> (removing 
>>>>>>>>>> any sensitive information)?  I'm not quite able to piece together a 
>>>>>>>>>> full 
>>>>>>>>>> example of what you're running from the email thread.
>>>>>>>>>>
>>>>>>>>>> My branch is based on devel; I just created another branch based 
>>>>>>>>>> on 1.7.2 with the splatting changes applied: https://github.com/
>>>>>>>>>> cchurch/ansible/tree/powershell_splatting_v172 
>>>>>>>>>> <https://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fcchurch%2Fansible%2Ftree%2Fpowershell_splatting_v172&sa=D&sntz=1&usg=AFQjCNELYa0RJWKIxEmXb2bqZVp5y1NogA>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Fri, Oct 24, 2014 at 6:12 PM, Michael Perzel <
>>>>>>>>>> michae...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> I tried taking your changes but it failed with:
>>>>>>>>>>> <Objs Version="1.1.0.1" xmlns="http://schemas.microsof
>>>>>>>>>>> t.com/powershell/2004/04"><S S="Error">C:\Users\ansible\App
>>>>>>>>>>> Data\Local\Temp\ansible-tmp-1414187414.25-97343749557638\de_
>>>>>>>>>>> x000D__x000A_</S><S S="Error">ployLauncher.ps1 : A positional 
>>>>>>>>>>> parameter cannot be found that accepts _x000D__x000A_</S><S 
>>>>>>>>>>> S="Error">argument 'False'._x000D__x000A_</S><S S="Error">At line:1 
>>>>>>>>>>> char:1_x000D__x000A_</S><S S="Error">+ &amp; _x000D__x000A_</S><S 
>>>>>>>>>>> S="Error">C:\Users\ansible\AppData\Local\Temp\ansible-tmp-14
>>>>>>>>>>> 14187414.25-97343749557638\\ _x000D__x000A_</S><S 
>>>>>>>>>>> S="Error">..._x000D__x000A_</S><S S="Error">+ 
>>>>>>>>>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>>>>>>> ~~~~~~~~~~~~~~~~~_x000D__x000A_</S><S 
>>>>>>>>>>> S="Error">~~~_x000D__x000A_</S><S S="Error"> + CategoryInfo : 
>>>>>>>>>>> InvalidArgument: (:) [deployLauncher.ps1], Param 
>>>>>>>>>>> _x000D__x000A_</S><S 
>>>>>>>>>>> S="Error"> eterBindingException_x000D__x000A_</S><S S="Error"> 
>>>>>>>>>>> + FullyQualifiedErrorId : PositionalParameterNotFound,de
>>>>>>>>>>> ployLauncher.ps1_x000D__x000A_</S><S S="Error"> 
>>>>>>>>>>> _x000D__x000A_</S></Objs>
>>>>>>>>>>>
>>>>>>>>>>> Looking at the diff between your code and mine there's a few 
>>>>>>>>>>> other differences. I'm running 1.7.2,  I assume your branched off 
>>>>>>>>>>> something 
>>>>>>>>>>> newer.I'll see if I can sort through the issue.
>>>>>>>>>>>
>>>>>>>>>>> Thanks
>>>>>>>>>>>
>>>>>>>>>>> On Friday, October 24, 2014 3:52:39 PM UTC-5, Michael Perzel 
>>>>>>>>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Your idea with jinja filter is what I originally tried to get 
>>>>>>>>>>>> working. I never managed it but I think its the ideal solution 
>>>>>>>>>>>> (converting 
>>>>>>>>>>>> yaml hash to a powershell one). 
>>>>>>>>>>>>
>>>>>>>>>>>> If I follow your patch you added a parameter that controls 
>>>>>>>>>>>> whether or not arguments get quoted (and set it to false for 
>>>>>>>>>>>> powershell 
>>>>>>>>>>>> scripts)? I'm not particularly worried about nefarious activity 
>>>>>>>>>>>> within our 
>>>>>>>>>>>> system so this could work for us.
>>>>>>>>>>>>
>>>>>>>>>>>> On Friday, October 24, 2014 12:52:52 AM UTC-5, Chris Church 
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> That method of passing arguments is apparently called 
>>>>>>>>>>>>> "splatting" (http://technet.microsoft.com/
>>>>>>>>>>>>> en-us/magazine/gg675931.aspx).
>>>>>>>>>>>>>
>>>>>>>>>>>>> I have a branch where I've been able to get it working:
>>>>>>>>>>>>>
>>>>>>>>>>>>> https://github.com/cchurch/ansible/tree/powershell_splatting
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> I've also added integration tests to show examples of it in 
>>>>>>>>>>>>> use:
>>>>>>>>>>>>>
>>>>>>>>>>>>> https://github.com/cchurch/ansible/blob/powershell_splatting
>>>>>>>>>>>>> /test/integration/roles/test_win_script/tasks/main.yml#L50
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> I also considered the idea of a Jinja2 filter to convert a 
>>>>>>>>>>>>> YAML/JSON data structure to this format to allow for defining 
>>>>>>>>>>>>> your 
>>>>>>>>>>>>> arguments as you would any other variables:
>>>>>>>>>>>>>
>>>>>>>>>>>>> build_args:
>>>>>>>>>>>>>
>>>>>>>>>>>>>   key1: value1
>>>>>>>>>>>>>
>>>>>>>>>>>>>   key2: value2
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> You could then run your task as:
>>>>>>>>>>>>>
>>>>>>>>>>>>> script: dostuff.ps1 {{ build_args|splattify }}
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Would you (or any other Windows users) be interested in this 
>>>>>>>>>>>>> approach?
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Oct 22, 2014 at 10:28 AM, Michael Perzel <
>>>>>>>>>>>>> michae...@gmail.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> I'll look into this. My work around thus far is using a 
>>>>>>>>>>>>>> template for my deploy script. Instead of passing the deploy 
>>>>>>>>>>>>>> script 
>>>>>>>>>>>>>> arguments, I just assign them at the top:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> $build = {{ build }}
>>>>>>>>>>>>>> $pass = {{ password }}
>>>>>>>>>>>>>> $arguments = @{ {{ arguments }} }
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> This then becomes:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> $build = 42
>>>>>>>>>>>>>> $pass = password
>>>>>>>>>>>>>> $arguments = @{ key1=value1; key2= value2 }
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Using the template has given me complete control over the 
>>>>>>>>>>>>>> syntax. In our paradigm we have an entirely generic "deploy" 
>>>>>>>>>>>>>> powershell 
>>>>>>>>>>>>>> script that stages files, unzips them and similar things. It 
>>>>>>>>>>>>>> then calls an 
>>>>>>>>>>>>>> "install" script that handles all the app specific items. The 
>>>>>>>>>>>>>> install 
>>>>>>>>>>>>>> scripts are bundled with the specific app.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Wednesday, October 22, 2014 8:38:11 AM UTC-5, J 
>>>>>>>>>>>>>> Hawkesworth wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I don't have a direct answer for this - rightly or wrongly 
>>>>>>>>>>>>>>>> the ps1 scripts I have so far don't take any arguments - I 
>>>>>>>>>>>>>>>> consider them to 
>>>>>>>>>>>>>>>> be specific to my roles and at the moment they embed some 
>>>>>>>>>>>>>>>> details that it 
>>>>>>>>>>>>>>>> would probably be best to have as parameters.  However, it 
>>>>>>>>>>>>>>>> looks to me like 
>>>>>>>>>>>>>>>> your deployLauncher.ps1 really wants to be a very general 
>>>>>>>>>>>>>>>> purpose 
>>>>>>>>>>>>>>>> deployment tool and maybe it would be better off as an ansible 
>>>>>>>>>>>>>>>> module.  
>>>>>>>>>>>>>>>> That way you could perhaps take advantage of ansible's 
>>>>>>>>>>>>>>>> existing syntax for 
>>>>>>>>>>>>>>>> specifying module arguments.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> As an aside I believe @Trond Hindenes has a win_package 
>>>>>>>>>>>>>>> module in the works which might do some of what you want.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>  -- 
>>>>>>>>>>>>>> You received this message because you are subscribed to the 
>>>>>>>>>>>>>> Google Groups "Ansible Project" group.
>>>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from 
>>>>>>>>>>>>>> it, send an email to ansible-proje...@googlegroups.com.
>>>>>>>>>>>>>> To post to this group, send email to 
>>>>>>>>>>>>>> ansible...@googlegroups.com.
>>>>>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>>>>>> https://groups.google.com/d/msgid/ansible-project/388179f6-4
>>>>>>>>>>>>>> 48e-44e7-967f-94e400dc4514%40googlegroups.com 
>>>>>>>>>>>>>> <https://groups.google.com/d/msgid/ansible-project/388179f6-448e-44e7-967f-94e400dc4514%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>>>>> .
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>  -- 
>>>>>>>>>>> You received this message because you are subscribed to the 
>>>>>>>>>>> Google Groups "Ansible Project" group.
>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from 
>>>>>>>>>>> it, send an email to ansible-proje...@googlegroups.com.
>>>>>>>>>>> To post to this group, send email to ansible...@googlegroups.com
>>>>>>>>>>> .
>>>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>>>> https://groups.google.com/d/msgid/ansible-project/ba6b122a-1
>>>>>>>>>>> fa5-48c6-9b1d-a8a2f67083ef%40googlegroups.com 
>>>>>>>>>>> <https://groups.google.com/d/msgid/ansible-project/ba6b122a-1fa5-48c6-9b1d-a8a2f67083ef%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>>>> .
>>>>>>>>>>>
>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>  -- 
>>>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>>>> Groups "Ansible Project" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>>>> send an email to ansible-proje...@googlegroups.com.
>>>>>>>>> To post to this group, send email to ansible...@googlegroups.com.
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/ansible-project/118759f9-
>>>>>>>>> df6f-4805-886d-00a250457019%40googlegroups.com 
>>>>>>>>> <https://groups.google.com/d/msgid/ansible-project/118759f9-df6f-4805-886d-00a250457019%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>
>>>>>>>>
>>>>>>>>  -- 
>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>> Groups "Ansible Project" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>> send an email to ansible-proje...@googlegroups.com.
>>>>>>> To post to this group, send email to ansible...@googlegroups.com.
>>>>>>> To view this discussion on the web visit 
>>>>>>> https://groups.google.com/d/msgid/ansible-project/
>>>>>>> 35495c72-0da0-42f9-b854-4ab8f049ccdd%40googlegroups.com 
>>>>>>> <https://groups.google.com/d/msgid/ansible-project/35495c72-0da0-42f9-b854-4ab8f049ccdd%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>>
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>>  -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "Ansible Project" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to ansible-proje...@googlegroups.com.
>>>>> To post to this group, send email to ansible...@googlegroups.com.
>>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/ansible-project/db5bd592-8018-4bf7-971d-6f8652fd9737%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/ansible-project/db5bd592-8018-4bf7-971d-6f8652fd9737%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/6f443dfe-aa55-41cf-a0bc-547eaa54775e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to