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 <[email protected]> 
>>>> 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 <[email protected]> 
>>>>>> 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 <[email protected]
>>>>>>>> > 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 <
>>>>>>>>>> [email protected]> 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 <
>>>>>>>>>>>>> [email protected]> 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 [email protected].
>>>>>>>>>>>>>> To post to this group, send email to 
>>>>>>>>>>>>>> [email protected].
>>>>>>>>>>>>>> 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 [email protected].
>>>>>>>>>>> To post to this group, send email to [email protected]
>>>>>>>>>>> .
>>>>>>>>>>> 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 [email protected].
>>>>>>>>> To post to this group, send email to [email protected].
>>>>>>>>> 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 [email protected].
>>>>>>> To post to this group, send email to [email protected].
>>>>>>> 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 [email protected].
>>>>> To post to this group, send email to [email protected].
>>>>> 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 [email protected].
To post to this group, send email to [email protected].
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