It is a bug.  However, I think there have been several fixes to the
file/copy module regarding check mode recently.  For instance:
https://github.com/ansible/ansible/issues/8639

I've just tested a very simple copy module playbook and it incorrectly
changed the mode with ansible-1.7.2 but did not set the mode with the
code in the ansible devel branch.  So I believe this has been fixed.
If you want to confirm with your more complex case you could check out
the repository from https://github.com/ansible/ansible and give it a
try.

-Toshio

On Tue, Nov 11, 2014 at 12:27 PM, Sean McGowan <[email protected]> wrote:
> following up on this... is this a bug or an expected behaviour?
>
>
> On Friday, November 7, 2014 9:43:45 AM UTC-5, Sean McGowan wrote:
>>
>>
>>
>> On Friday, November 7, 2014 9:25:43 AM UTC-5, Michael DeHaan wrote:
>>>
>>> Can you please be explicit about what the "not a very cool behavior" is ?
>>
>>
>> no problem.  what the example below shows is that when using the copy
>> module with file parameters (e.g. mode, owner, group) that the --check flag
>> works if and only if the src and dest checksums do not match.  When they are
>> equal, ansible happily makes the file parameter changes, regardless of
>> --check usage.  I updated to 1.7.2 from 1.5 and this behavior did not exist
>> before.  In 1.5, if the files were the same and the mode was different (for
>> example), ansible would flag it as changed, but not make the change when
>> using the --check flag.  This, in my opinion, is the correct and expected
>> behavior.
>>
>> Thanks!
>>>
>>>
>>> I'm having trouble parsing your intent from the above.
>>>
>>> Thanks!
>>>
>>> On Thu, Nov 6, 2014 at 4:46 PM, Sean McGowan <[email protected]> wrote:
>>>>
>>>> I am using ansible 1.7.2 on RedHat
>>>>
>>>> Note that I am super happy that I was doing something somewhat
>>>> innocuous; however, this did just make a large number of changes across 
>>>> 600+
>>>> hosts...  not a very cool behavior...  this did not exist in 1.5, which is
>>>> the version from which i upgraded.
>>>>
>>>> thanks in advance...
>>>>
>>>> relevant play:
>>>> #  roles/common/tasks/main.yml
>>>> ---
>>>> - name: Read hosts table variables
>>>>   include_vars:  "hosts_{{ ansible_distribution }}.yml"
>>>>   tags: hosts
>>>>
>>>> - name: debug test
>>>>   debug: msg="Here is my hosts {{ hosts }}"
>>>>   tags: hosts
>>>>
>>>> - name: Copy hosts table
>>>>   copy: src={{ hosts }} dest={{ hosts_target }}
>>>>           owner=root group={{ hosts_group }} mode=0644
>>>>   tags: hosts
>>>>
>>>>
>>>> ## roles/common/vars/hosts_Redhat.yml
>>>> ---
>>>> hosts_target: /etc/hosts
>>>> hosts_group: root
>>>>
>>>> ## roles/common/vars/hosts_Solaris.yml
>>>> ---
>>>> hosts_target: /etc/inet/hosts
>>>> hosts_group: sys
>>>>
>>>>
>>>> ###  Correct configuration ( this is a solaris host )
>>>> [root@padishah1 ansible]# ssh swdw43.scs.iwcs.net "ls -ltr
>>>> /etc/inet/hosts"
>>>> -rw-r--r--   1 root     sys          444 Nov  6 21:22 /etc/inet/hosts
>>>>
>>>> [root@padishah1 ansible]# ssh swdw43.scs.iwcs.net "digest -a md5
>>>> /etc/inet/hosts"
>>>> 93049f5cbfe5c796b82ff256e4cd5639
>>>> [root@padishah1 ansible]# md5sum
>>>> roles/common/files/hosts/hosts.swdw43.scs.iwcs.net
>>>> 93049f5cbfe5c796b82ff256e4cd5639
>>>> roles/common/files/hosts/hosts.swdw43.scs.iwcs.net
>>>>
>>>> ansible-playbook sdlw_block1.yml -i west --tags=hosts --limit="swdw43*"
>>>> --check
>>>>
>>>>  ____________________
>>>> < PLAY [sdlw_block1] >
>>>>  --------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>>  _________________
>>>> < GATHERING FACTS >
>>>>  -----------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> ok: [swdw43.scs.iwcs.net]
>>>>  ___________________________________________
>>>> < TASK: common | Read hosts table variables >
>>>>  -------------------------------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> ok: [swdw43.scs.iwcs.net]
>>>>  ___________________________
>>>> < TASK: common | debug test >
>>>>  ---------------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> ok: [swdw43.scs.iwcs.net] => {
>>>>     "msg": "Here is my hosts hosts/hosts.swdw43.scs.iwcs.net"
>>>> }
>>>>  _________________________________
>>>> < TASK: common | Copy hosts table >
>>>>  ---------------------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> ok: [swdw43.scs.iwcs.net]
>>>>  ____________
>>>> < PLAY RECAP >
>>>>  ------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> swdw43.scs.iwcs.net        : ok=4    changed=0    unreachable=0
>>>> failed=0
>>>>
>>>>
>>>> ## Change the group to root
>>>> [root@padishah1 ansible]# ssh swdw43.scs.iwcs.net "chown :root
>>>> /etc/inet/hosts && ls -l /etc/inet/hosts"
>>>> -rw-r--r--   1 root     root         444 Nov  6 21:22 /etc/inet/hosts
>>>>
>>>> ## Run the same play again -- note check is set!!!
>>>> [root@padishah1 ansible]# ansible-playbook sdlw_block1.yml -i west
>>>> --tags=hosts --limit="swdw43*" --check
>>>>
>>>>  ____________________
>>>> < PLAY [sdlw_block1] >
>>>>  --------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>>  _________________
>>>> < GATHERING FACTS >
>>>>  -----------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> ok: [swdw43.scs.iwcs.net]
>>>>  ___________________________________________
>>>> < TASK: common | Read hosts table variables >
>>>>  -------------------------------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> ok: [swdw43.scs.iwcs.net]
>>>>  ___________________________
>>>> < TASK: common | debug test >
>>>>  ---------------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> ok: [swdw43.scs.iwcs.net] => {
>>>>     "msg": "Here is my hosts hosts/hosts.swdw43.scs.iwcs.net"
>>>> }
>>>>  _________________________________
>>>> < TASK: common | Copy hosts table >
>>>>  ---------------------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> changed: [swdw43.scs.iwcs.net]
>>>>  ____________
>>>> < PLAY RECAP >
>>>>  ------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> swdw43.scs.iwcs.net        : ok=4    changed=1    unreachable=0
>>>> failed=0
>>>>
>>>> ##  Yikes!!!!  This can be shown with changing perms too, not just
>>>> group; however,
>>>> ##  I can leave that exercise out of the thread.
>>>> [root@padishah1 ansible]# ssh swdw43.scs.iwcs.net "ls -ltr
>>>> /etc/inet/hosts"
>>>> -rw-r--r--   1 root     sys          444 Nov  6 21:22 /etc/inet/hosts
>>>>
>>>> ##  Now, modify the hosts so hosts is different AND change group
>>>> [root@padishah1 ansible]# ssh swdw43.scs.iwcs.net "echo '# just a
>>>> comment line' >> /etc/inet/hosts && ls -l /etc/inet/hosts"
>>>> -rw-r--r--   1 root     sys          466 Nov  6 21:34 /etc/inet/hosts
>>>> [root@padishah1 ansible]# ssh swdw43.scs.iwcs.net "chown :root
>>>> /etc/inet/hosts && ls -l /etc/inet/hosts"
>>>> -rw-r--r--   1 root     root         466 Nov  6 21:34 /etc/inet/hosts
>>>>
>>>>
>>>> ## Run the play again w/ check still set
>>>> [root@padishah1 ansible]# ansible-playbook sdlw_block1.yml -i west
>>>> --tags=hosts --limit="swdw43*" --check
>>>>  ____________________
>>>> < PLAY [sdlw_block1] >
>>>>  --------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>>  _________________
>>>> < GATHERING FACTS >
>>>>  -----------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> ok: [swdw43.scs.iwcs.net]
>>>>  ___________________________________________
>>>> < TASK: common | Read hosts table variables >
>>>>  -------------------------------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> ok: [swdw43.scs.iwcs.net]
>>>>  ___________________________
>>>> < TASK: common | debug test >
>>>>  ---------------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> ok: [swdw43.scs.iwcs.net] => {
>>>>     "msg": "Here is my hosts hosts/hosts.swdw43.scs.iwcs.net"
>>>> }
>>>>  _________________________________
>>>> < TASK: common | Copy hosts table >
>>>>  ---------------------------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> changed: [swdw43.scs.iwcs.net]
>>>>  ____________
>>>> < PLAY RECAP >
>>>>  ------------
>>>>         \   ^__^
>>>>          \  (oo)\_______
>>>>             (__)\       )\/\
>>>>                 ||----w |
>>>>                 ||     ||
>>>>
>>>>
>>>> swdw43.scs.iwcs.net        : ok=4    changed=1    unreachable=0
>>>> failed=0
>>>>
>>>> ## Here the check flag works!!!
>>>> [root@padishah1 ansible]# ssh swdw43.scs.iwcs.net "ls -l
>>>> /etc/inet/hosts"
>>>> -rw-r--r--   1 root     root         466 Nov  6 21:34 /etc/inet/hosts
>>>>
>>>>
>>>>
>>>> --
>>>> 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/b8789577-91d1-4475-86a9-7adaba5c4aef%40googlegroups.com.
>>>> 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/5c921077-4d82-42bd-8219-30785f01f60f%40googlegroups.com.
>
> 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/CAG9juEqqm5dHx4UBS7XuqdFmm8UGq9NErQkGoEQpHKA5Mh%2BxaQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to