Reputation: 2578
I need to copy the contents of a file in windows to a variable. I tried as below, but getting error.
- name: test
set_fact:
new_var: "{{lookup('file', 'C:\\temp\\test.csv') }}"
Error is:
"An unhandled exception occurred while running the lookup plugin 'file'. Error was a , original message: could not locate file in lookup: C:\temp\test.csv"
The file is present in the remote windows server. Please let me know what is wrong here or please suggest an alternative way.
Upvotes: 0
Views: 4615
Reputation: 1953
The reason the OPs solution doesnt work, is that the nlookup is run on the localhost (the ansible server, where the playbook is stored). nlookup can be used to get file content as either a "file" or as a "template". Template will replace {{ variables }} with a variable. File will just read the file to a variable.
C:\temp\test.csv does not exist in the playbook folder, hence it fails.
amutter's solution works by running a windows command and then passing the output into a variable. The command that he ran is
# This runs the windows command 'type' to read the contents of the file and return the value in the console. The console output is passed into the variable content
- name: get content
win_shell: 'type C:\Temp\ansible.readme'
register: content
# The content.stdout is used to return the whole console output. stdout_lines can be used to use a specific line as it is an array of lines
- name: write content
debug:
msg: "{{ content.stdout }} "
Upvotes: 0
Reputation: 81
I had the same problem, didn't get it to work with the lookup file plugin. As an alternative I did:
- name: get content
win_shell: 'type C:\Temp\ansible.readme'
register: content
- name: write content
debug:
msg: "{{ content.stdout_lines }} "
Upvotes: 2