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—