Both end_host and end_play seem to both cause the job to skip all hosts. I know that only one host meets the condition so it should execute on 1 but exits for both. Am I missing something? I thought end_host would only end the play for the host that meets the when condition.
Thank you Kai, I ran in debug noticed it was a string. I updated the command but end_host still kills the entire run for all hosts. I have 2 for testing.
“stdout”: “1”,
“stdout”: “0”,
Above is the output. From that I’d expect the first host to be skipped and the 2nd host to continue to execute. At least that is how I’m reading end_host should work. end_play sounds like what is being used I’ve tried both, both behave the same.
I think its working now. I think part of my issue was that one of the host had python 2.4 and all the error messages from that was throwing me off. Changed that test node out for a diff one and the logic appears to be working now after changing > 0 to int > 0.
This was also throwing me off, it would be nice if there was a way around it as well.
Even though the logic is working and node1 stops after the check, the block output displays the same msg for all hosts. I would have thought that this would only show the msg for node1 as thats the node thta meets the end_host check. Node2 continues to run all other checks but the message is confusing as it first looks like its skipping both hosts but its really not.
`
TASK [end play for host host if nothing to upgrade] ****************************
ok: [node1.test.com] => {
“msg”: “Nothing to upgrade, ending play for host”
}
ok: [node2.test.com] => {
“msg”: “Nothing to upgrade, ending play for host”
}
This was also throwing me off, it would be nice if there was a way around
it as well.
Even though the logic is working and node1 stops after the check, the block
output displays the same msg for all hosts. I would have thought that this
would only show the msg for node1 as thats the node thta meets the end_host
check. Node2 continues to run all other checks but the message is confusing
as it first looks like its skipping both hosts but its really not.
TASK [end play for host host if nothing to upgrade]
****************************
ok: [node1.test.com] => {
"msg": "Nothing to upgrade, ending play for host"
}
ok: [node2.test.com] => {
"msg": "Nothing to upgrade, ending play for host"
}
That's because your when: is indented to fare.
It need to be on the same level as the block.
- block:
- name: "end play for host host if nothing to upgrade"
debug:
msg: "nothing to upgrade, ending play for host"