Fixes for WinRM/PowerShell support in v2.

- Add support for inserting module args into PowerShell modules.  Fixes #11661.
- Support Windows paths containing spaces.  Applies changes from #10727 to v2.  Fixes #9999.  Should also fix ansible/ansible-modules-core#944 and ansible/ansible-modules-core#1007.
- Change how execution policy is set for running remote scripts.  Applies changes from #11092 to v2.  Also fixes ansible/ansible-modules-core#1776.
- Use codepage 65001 (UTF-8) for WinRM connection instead of default (CP437), convert command to UTF-8 and results from UTF-8.  Replaces changes from #10024.  Fixes #11198.
- Close WinRM connection when task completes.
- Use win_stat, win_file and win_copy modules instead of stat, file and copy when called from within other action plugins (only when using WinRM+PowerShell).
- Unquote Windows path arguments before passing to win_stat, win_file, win_copy and slurp modules (only when using WinRM/PowerShell).
- Check for win_ping module to determine if core modules are missing (only when using WinRM/PowerShell).
- Add stdout_lines to result from running low level commands (so stdout_lines is available when using raw/script).
- Update copy action plugin to use shell functions for joining paths and checking for trailing slash.
- Update fetch action plugin to unquote source path when using Windows paths.
- Add win_copy and win_template action plugins that inherit from copy and template.
- Support running .bat and .cmd scripts using default system encoding instead of UTF-8.
- Always send PowerShell commands as base64-encoded blobs to allow for running simple PowerShell commands via raw.
- Support running modules on Windows with interpreters other than PowerShell.
- Update integration tests to support above changes and test unicode fixes.
- Add test for win_user error from ansible/ansible-modules-core#1241 (fixed by ansible/ansible-modules-core#1774).
- Add test for additional win_stat output values (implemented by ansible/ansible-modules-core#1473).
- Add test for OS architecture and name from setup.ps1 (implemented by ansible/ansible-modules-core#1100).

All WinRM integration tests pass for me with these changes.
This commit is contained in:
Chris Church
2015-07-24 12:39:54 -04:00
committed by James Cammarata
parent fa8043c0ba
commit e87cf4a3cc
25 changed files with 356 additions and 118 deletions

View File

@@ -32,7 +32,7 @@
# - "file_result.state == 'file'"
- name: verify that we are checking an absent file
win_file: path={{win_output_dir}}\bar.txt state=absent
win_file: path={{win_output_dir}}/bar.txt state=absent
register: file2_result
- name: verify that the file was marked as changed
@@ -42,7 +42,7 @@
# - "file2_result.state == 'absent'"
- name: verify we can touch a file
win_file: path={{win_output_dir}}\baz.txt state=touch
win_file: path={{win_output_dir}}/baz.txt state=touch
register: file3_result
- name: verify that the file was marked as changed
@@ -85,8 +85,8 @@
# - "chown_result.failed == True"
# - "file_exists_result.stat.exists == False"
#
- name: clean up
win_file: path=/tmp/worldwritable state=absent
#- name: clean up
# win_file: path=/tmp/worldwritable state=absent
#- name: create soft link to file
# win_file: src={{output_file}} dest={{win_output_dir}}/soft.txt state=link
@@ -107,7 +107,7 @@
# - "file6_result.changed == true"
#
- name: create a directory
win_file: path={{win_output_dir}}\foobar state=directory
win_file: path={{win_output_dir}}/foobar state=directory
register: file7_result
- debug: var=file7_result
@@ -134,22 +134,22 @@
# when: selinux_installed.stdout != "" and selinux_enabled.stdout != "Disabled"
- name: remote directory foobar
win_file: path={{win_output_dir}}\foobar state=absent
win_file: path={{win_output_dir}}/foobar state=absent
- name: remove file foo.txt
win_file: path={{win_output_dir}}\foo.txt state=absent
win_file: path={{win_output_dir}}/foo.txt state=absent
- name: remove file bar.txt
win_file: path={{win_output_dir}}\foo.txt state=absent
win_file: path={{win_output_dir}}/foo.txt state=absent
- name: remove file baz.txt
win_file: path={{win_output_dir}}\foo.txt state=absent
win_file: path={{win_output_dir}}/foo.txt state=absent
- name: win copy directory structure over
win_copy: src=foobar dest={{win_output_dir}}
- name: remove directory foobar
win_file: path={{win_output_dir}}\foobar state=absent
win_file: path={{win_output_dir}}/foobar state=absent
register: file14_result
- debug: var=file14_result