Background: I am using Ansible 1.5 on RedHat. Apparently
system-config-network creates a hard link to /etc/hosts and
/etc/resolve.conf. I want to be able to copy the correct hosts file in
place if is not there, whether or not the file links is > 1.
What happens: If the source file is already the same as the destination, I
get FAILED with a message "absolute paths are required".
I can find this message in the code of the file module, not the copy
module. Also, if the source file is different, the copy works fine. I am
assuming that it gets to the file module somehow after the atomic copy call
in the copy module.
Anyhow, can someone please tell me if this should be expected and/or if
there is a good work around?
Below is an example... Thanks in advance!
### /etc/hosts has > 1 links
[root@padishah1 ansible]# ls -l /etc/hosts
-rw-r--r--. 2 root root 13888 May 16 17:21 /etc/hosts
[root@padishah1 ansible]# find /etc -xdev -samefile /etc/hosts
/etc/sysconfig/networking/profiles/default/hosts
/etc/hosts
### hosts.bkp = hosts && hosts.different != hosts
[root@padishah1 ansible]# md5sum /etc/hosts /etc/hosts.{bkp,different}
0f7cc9afcb0f17a9864b45391027a6ad /etc/hosts
0f7cc9afcb0f17a9864b45391027a6ad /etc/hosts.bkp
9c5799def96f6f2e7309a3914075589b /etc/hosts.different
### Trying to use the copy module with an identical file fails
[root@padishah1 ansible]# ansible all -i <(echo -e "localhost
ansible_connection=local") -m copy -a "src=/etc/hosts.bkp dest=/etc/hosts
mode=0644 owner=root group=root" --check
localhost | FAILED >> {
"failed": true,
"md5sum": "0f7cc9afcb0f17a9864b45391027a6ad",
"msg": "absolute paths are required"
}
### Trying to copy with a new file is sucessful
[root@padishah1 ansible]# ansible all -i <(echo -e "localhost
ansible_connection=local") -m copy -a "src=/etc/hosts.different
dest=/etc/hosts mode=0644 owner=root group=root" --check
--- before: /etc/hosts
+++ after: /etc/hosts.different
---diff redacted---
+
localhost | success >> {
"changed": true
}
### This is not the case when links = 1
[root@padishah1 ansible]# cp -p --remove-destination /etc/hosts.bkp
/etc/hosts
cp: overwrite `/etc/hosts'? yes
[root@padishah1 ansible]# ls -l /etc/hosts
-rw-r--r--. 1 root root 13888 May 16 17:21 /etc/hosts
### Identical file is now successful (changed: false is expected)
[root@padishah1 ansible]# ansible all -i <(echo -e "localhost
ansible_connection=local") -m copy -a "src=/etc/hosts.bkp dest=/etc/hosts
mode=0644 owner=root group=root" --check
localhost | success >> {
"changed": false,
"dest": "/etc/hosts",
"gid": 0,
"group": "root",
"md5sum": "0f7cc9afcb0f17a9864b45391027a6ad",
"mode": "0644",
"owner": "root",
"path": "/etc/hosts",
"secontext": "unconfined_u:object_r:etc_t:s0",
"size": 13888,
"state": "file",
"uid": 0
}
[root@padishah1 ansible]# ansible all -i <(echo -e "localhost
ansible_connection=local") -m copy -a "src=/etc/hosts.different
dest=/etc/hosts mode=0644 owner=root group=root" --check
--- before: /etc/hosts
+++ after: /etc/hosts.different
---diff redacted---
+
localhost | success >> {
"changed": true
}
--
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/40c40d20-daec-400c-8db4-23bef72f7c9d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.