Thanks Jordan! That code worked a treat - really appreciate your assistance
and detailed explanations below.
On Tuesday, May 15, 2018 at 12:58:42 PM UTC+12, java_cat33 wrote:
>
> Firstly - sorry for the noob question.
>
> I've written a Powershell script that is run from a play that returns in
> json the name of a zip file.
>
> ****Output from Powershell****
>
> {
> "Name": "latest-ansible v0.1.zip"
> }
>
> ***playbook***
> ---
> - hosts: all
> vars:
> filename: none
> tasks:
> - name: Install IIS Web-Server with sub features and management tools
> win_feature:
> name: Web-Server
> state: present
> include_sub_features: yes
> include_management_tools: yes
> register: win_feature
>
> - name: reboot if installing Web-Server feature requires it
> win_reboot:
> when: win_feature.reboot_required
>
> - name: Run Powershell script and return json including zip file name
> script: files/script.ps1
> register: result
>
> - set_fact: filename={{result.stdout_lines}}
> - debug: var=result
> - debug: var=filename
>
> - name: copy files
> win_copy:
> src: C:\Temp\"{{ filename }}"
> dest: C:\Inetpub
>
>
> Output snippet from running the play is as per below....
>
> TASK [set_fact]
> ***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
> task path: /etc/ansible/playbooks/test1/test.yml:22
> [WARNING]: ansible_winrm_cert_validation unsupported by pywinrm (is an
> up-to-date version of pywinrm installed?)
>
> ok: [servername] => {
> "ansible_facts": {
> "filename": [
> "{",
> " \"Name\": \"latest-ansible v0.1.zip\"",
> "}"
> ]
> },
> "changed": false
> }
>
> TASK [debug]
> ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
> task path: /etc/ansible/playbooks/test1/test.yml:23
> [WARNING]: ansible_winrm_cert_validation unsupported by pywinrm (is an
> up-to-date version of pywinrm installed?)
>
> ok: [servername] => {
> "result": {
> "changed": true,
> "failed": false,
> "rc": 0,
> "stderr": "",
> "stdout": "{\r\n \"Name\": \"latest-ansible
> v0.1.zip\"\r\n}\r\n",
> "stdout_lines": [
> "{",
> " \"Name\": \"latest-ansible v0.1.zip\"",
> "}"
> ]
> }
> }
>
> TASK [debug]
> ******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
> task path: /etc/ansible/playbooks/test1/test.yml:24
> [WARNING]: ansible_winrm_cert_validation unsupported by pywinrm (is an
> up-to-date version of pywinrm installed?)
>
> ok: [servername] => {
> "filename": [
> "{",
> " \"Name\": \"latest-ansible v0.1.zip\"",
> "}"
> ]
> }
>
> TASK [copy files]
> *************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************
> task path: /etc/ansible/playbooks/test1/test.yml:26
> [WARNING]: ansible_winrm_cert_validation unsupported by pywinrm (is an
> up-to-date version of pywinrm installed?)
>
> The full traceback is:
> Traceback (most recent call last):
> File
> "/usr/lib/python2.7/dist-packages/ansible/plugins/action/win_copy.py", line
> 398, in run
> source = self._find_needle('files', source)
> File
> "/usr/lib/python2.7/dist-packages/ansible/plugins/action/__init__.py", line
> 999, in _find_needle
> return self._loader.path_dwim_relative_stack(path_stack, dirname,
> needle)
> File "/usr/lib/python2.7/dist-packages/ansible/parsing/dataloader.py",
> line 322, in path_dwim_relative_stack
> raise AnsibleFileNotFound(file_name=source, paths=[to_text(p) for p in
> search])
> AnsibleFileNotFound: Could not find or access 'C:\Temp\"[u'{', u'
> "Name": "latest-ansible v0.1.zip"', u'}']"'
> Searched in:
> /etc/ansible/playbooks/test1/files/C:\Temp\"[u'{', u' "Name":
> "latest-ansible v0.1.zip"', u'}']"
> /etc/ansible/playbooks/test1/C:\Temp\"[u'{', u' "Name":
> "latest-ansible v0.1.zip"', u'}']"
> /etc/ansible/playbooks/test1/files/C:\Temp\"[u'{', u' "Name":
> "latest-ansible v0.1.zip"', u'}']"
> /etc/ansible/playbooks/test1/C:\Temp\"[u'{', u' "Name":
> "latest-ansible v0.1.zip"', u'}']"
>
> fatal: [servername]: FAILED! => {
> "changed": false,
> "dest": "C:\\Inetpub",
> "msg": "Could not find or access 'C:\\Temp\\\"[u'{', u' \"Name\":
> \"latest-ansible v0.1.zip\"', u'}']\"'\nSearched
> in:\n\t/etc/ansible/playbooks/test1/files/C:\\Temp\\\"[u'{', u'
> \"Name\": \"latest-ansible v0.1.zip\"',
> u'}']\"\n\t/etc/ansible/playbooks/test1/C:\\Temp\\\"[u'{', u' \"Name\":
> \"latest-ansible v0.1.zip\"',
> u'}']\"\n\t/etc/ansible/playbooks/test1/files/C:\\Temp\\\"[u'{', u'
> \"Name\": \"latest-ansible v0.1.zip\"',
> u'}']\"\n\t/etc/ansible/playbooks/test1/C:\\Temp\\\"[u'{', u' \"Name\":
> \"latest-ansible v0.1.zip\"', u'}']\"",
> "src": "C:\\Temp\\\"[u'{', u' \"Name\": \"latest-ansible
> v0.1.zip\"', u'}']\""
> }
> to retry, use: --limit @/etc/ansible/playbooks/test1/test.retry
>
>
> What I am trying to do is copy the zip file to a different directory on
> the same server, create a new folder with name captured in the value in the
> json output of filename (excluding the .zip - I.E latest-ansible v0.1) and
> then extract the contents to this new folder.
>
> What do I need to change in my playbook syntax to get this file copy to
> work leveraging the value in the json output? After I've got this sorted I
> can tackle the next hurdle :-)
>
> Thanks in advance!
>
>
--
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/56408c8b-2ee0-4fa6-852d-04c9f0d521d1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.