FWIW, the template module already knows where to look for the template
files: templates/
Same concept is true for other modules like copy which looks for the files
in the files/ folder.
Now, if you are willing to sacrifice the name of the task and make it a
little bit more broad, you could use the template module with with_items
like so:
---
- name: Install ddclient
apt: name={{ item }} state=latest
with_items:
- ddclient
- name: Copy ddclient configurations to server
template: src={{ item.src }}.j2 dest={{ item.dest }} owner=root group=root
mode=0600 backup=yes
with_items:
- { src: 'ddclient.conf', dest: '/etc/ddclient.conf' }
- { src: 'ddclient' , dest: '/etc/default/ddclient' }
notify: restart ddclient
Having thins in a role possibly called 'ddclient', you would simply call it
from a playbook sitting next to the 'roles' folder.
Best,
Dan.
On Monday, 5 January 2015 01:38:34 UTC+1, Chris Short wrote:
>
> It seems like you can't have multiple copy/template operations under one
> name. I'm not sure if this is a YAML standard or an Ansible issue. I made
> these files into templates and split the template operations out under two
> names. Now it works. A little annoying but I did realize this was a
> limitation when dealing with some apache configs. Here is the
> tasks/main.yml file now:
>
> ---
> - name: Install ddclient
> apt: name={{ item }} state=latest
> with_items:
> - ddclient
>
> - name: Copy ddclient configurations to server
> template:
> src=~/ansible/roles/pi_ddclient/templates/ddclient.conf.j2
> dest=/etc/ddclient.conf owner=root group=root mode=0600 backup=yes
> - name: Copy /etc/default/ddclient to server
> template:
> src=~/ansible/roles/pi_ddclient/templates/ddclient.j2
> dest=/etc/default/ddclient owner=root group=root mode=0600 backup=yes
> notify: restart ddclient
>
> Works fine now. Thanks for the help!
>
> On Sunday, January 4, 2015 10:52:11 AM UTC-5, Greg Andrews wrote:
>>
>> I believe the primary issue is that your pi_ddclient role's task file
>> specifies the same path to the source file as your ad-hoc command. Your
>> ad-hoc command doesn't know what roles are, so it needs the path to the
>> source file to start with "roles/pi_ddclient/files/". However the role
>> already knows the path to its files start that way.
>>
>> Telling the role to find the file
>> "roles/pi_ddclient/files/etc/ddclient.conf" will make it look for the file
>> "roles/pi_ddclient/files/roles/pi_ddclient/files/etc/ddclient.conf", which
>> probably doesn't exist.
>>
>> In your pd_ddclient role's tasks/main.yml file, try these "copy:" lines:
>>
>> copy: src=etc/ddclient.conf dest=/etc/ddclient.conf owner=root
>> group=root mode=0600 backup=yes
>> copy: src=etc/default/ddclient dest=/etc/default/ddclient owner=root
>> group=root mode=0600 backup=yes
>>
>>
>>
>> On Sat, Jan 3, 2015 at 7:55 AM, Chris Short <[email protected]> wrote:
>>
>>> This ad-hoc command works for me:
>>>
>>> ansible -s -m copy -a "src=roles/pi_ddclient/files/etc/ddclient.conf
>>> dest=/etc/ddclient.conf owner=root group=root mode=0600 backup=yes" daffy
>>>
>>> However when I run the playbook containing the same command (with sudo:
>>> true specified) it does not copy the file into place (no modification to
>>> the file at all) but the play says it runs successfully!
>>>
>>> cshort-mba:ansible oaf357$ ansible-playbook pi_ddclient.yml -s
>>> sudo password:
>>>
>>> PLAY [daffy]
>>> ******************************************************************
>>>
>>> GATHERING FACTS
>>> ***************************************************************
>>> ok: [daffy]
>>>
>>> TASK: [common | apt-get update]
>>> ***********************************************
>>> ok: [daffy]
>>>
>>> TASK: [common | Installing commonly installed files]
>>> **************************
>>> ok: [daffy] => (item=curl,host,mercurial,ntpdate,vim)
>>>
>>> TASK: [common | Make Vim Default Editor]
>>> **************************************
>>> changed: [daffy]
>>>
>>> TASK: [pi_ddclient | Install ddclient]
>>> ****************************************
>>> ok: [daffy] => (item=ddclient)
>>>
>>> TASK: [pi_ddclient | Copy /etc/ddclient.conf and /etc/defaults/ddclient
>>> to server] ***
>>> ok: [daffy]
>>>
>>> PLAY RECAP
>>> ********************************************************************
>>> daffy : ok=6 changed=1 unreachable=0
>>> failed=0
>>>
>>> Here's the pi_ddclient.yml file:
>>>
>>> ---
>>> - hosts: daffy
>>> roles:
>>> - common
>>> - pi_ddclient
>>> sudo: true
>>>
>>> Here's the roles/pi_ddclient/tasks/main.yml file:
>>>
>>> ---
>>> # Do all the ddclient things
>>> - name: Install ddclient
>>> apt: name={{ item }} state=latest
>>> with_items:
>>> - ddclient
>>>
>>> - name: Copy /etc/ddclient.conf and /etc/defaults/ddclient to server
>>> copy: src=roles/pi_ddclient/files/etc/ddclient.conf
>>> dest=/etc/ddclient.conf owner=root group=root mode=0600 backup=yes
>>> copy: src=roles/pi_ddclient/files/etc/default/ddclient
>>> dest=/etc/default/ddclient owner=root group=root mode=0600 backup=yes
>>> notify: restart ddclient
>>>
>>> I should point out roles/pi_ddclient/files/etc/default/ddclient copies
>>> over just fine.
>>>
>>> How can I debug successes in Ansible? Any thoughts on what is going
>>> wrong here?
>>>
>>> Thank you 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/2d5bb1e9-8224-4afb-85f0-3536b863f980%40googlegroups.com
>>>
>>> <https://groups.google.com/d/msgid/ansible-project/2d5bb1e9-8224-4afb-85f0-3536b863f980%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/711601df-7d4f-4d1d-a450-84fa6b833697%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.