Hello All,
I am trying to use ansible to read values from a csv file (source and destination) and then run commands using the shell module, but I am having no success. Please assist .
The playbook:
Hello All,
I am trying to use ansible to read values from a csv file (source and destination) and then run commands using the shell module, but I am having no success. Please assist .
The playbook:
You're not running the *aws* command. You're testing the *aws* command
with *echo*. Actually, this is a good idea to see the commands before
you run them. Register the results and take a look at *stdout*.
In the module *command*, there is a couple of syntax problems
in the run-string. To make the syntax both simpler and easier to read
use the *folded style*. See
https://yaml.org/spec/1.2.2/#813-folded-style
The tasks below
- command: >-
echo
aws s3 cp
{{ item.source }}
{{ item.destination }}
--recursive --acl parameters --profile prod
loop: "{{ s3list.list }}"
register: out
- debug:
msg: "{{ out.results|map(attribute='stdout')|list }}"
should give you what you want
msg:
- aws s3 cp S3://mybucket/puppy/test.jpg S3://mybucket2/trying/
--recursive --acl parameters --profile prod
- aws s3 cp S3://mybucket/puppy/ds.jpg S3://mybucket3/trying/
--recursive --acl parameters --profile prod
- aws s3 cp S3://mybucket/puppy/as.jpg S3://mybucket4/trying/
--recursive --acl parameters --profile prod
- aws s3 cp S3://mybucket/puppy/was.jpg S3://mybucket5/trying/
--recursive --acl parameters --profile prod
- aws s3 cp S3://mybucket/puppy/qaes.jpg S3://mybucket6/trying/
--recursive --acl parameters --profile prod
If this is what you want remove *echo* and run the *aws* command with
the option *--dryrun*
- command: >-
aws s3 cp
{{ item.source }}
{{ item.destination }}
--dryrun --recursive --acl parameters --profile prod
loop: "{{ s3list.list }}"
register: out
- debug:
var: out
If everything is alright copy the files
- command: >-
aws s3 cp
{{ item.source }}
{{ item.destination }}
--recursive --acl parameters --profile prod
loop: "{{ s3list.list }}"
register: out
- debug:
var: out
Notes:
* You can remove the option *--recursive* as long as you copy single
files
* You'll have to replace *parameters* with actual values. See
https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html
Thank you every much, that worked, although I am not certain why echo with shell module wouldnt work , but thank you!