Hi Todd, I tried to run script with shell module but it fails with below error,
[kafka-3: FAILED! => {"changed": true, "cmd": "if pkill --signal 9 -f zookeeper.properties ; then\nsystemctl start confluent-zookeeper510\nelse\nexit 1\nfi\nsystemctl status confluent-zookeeper510\n", "delta": "0:00:00.034111", "end": "2023-07-12 10:31:58.344951", "failed_when_result": true, "msg": "non-zero return code", "rc": -9, "start": "2023-07-12 10:31:58.310840", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []} fatal: [kafka-4]: FAILED! => {"changed": true, "cmd": "if pkill --signal 9 -f zookeeper.properties ; then\nsystemctl start confluent-zookeeper510\nelse\nexit 1\nfi\nsystemctl status confluent-zookeeper510\n", "delta": "0:00:00.032830", "end": "2023-07-12 10:31:59.744091", "failed_when_result": true, "msg": "non-zero return code", "rc": -9, "start": "2023-07-12 10:31:59.711261", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []} =========================================================================== code: - name: Kill running java processes and start newly configured systemd throttle: 1 # ignore_errors: yes any_errors_fatal: true shell: | if [ pkill --signal 9 -f zookeeper.properties ] ; then systemctl start confluent-zookeeper510; sleep 2; echo "stat" | nc localhost 2181;st="$?" systemctl status confluent-zookeeper510 -l | grep -v ERRROR;et="$?" [[ $st -eq 0 && $et -eq 0 ]] && exit 0 || exit 1 else exit 1 fi register: zkstart failed_when: zkstart.rc != 0 when: not zkmode.stdout_lines is search('leader') On Wednesday, July 12, 2023 at 1:29:58 PM UTC+5:30 Sameer Modak wrote: > First of all Thanks a lot for introducing me pkill way otherwise i would > have written one more task to register the process id. > > Many thanks Todd. > > Secondly, as its impossible to explore entire tool like ansible hence just > asking you the question, Does it even possible to do above things using > ansible module in single task??? > like find process id of process and kill if it doesnt exist do not proceed > with other hosts as well. > > > > On Tuesday, July 11, 2023 at 9:59:59 PM UTC+5:30 Todd Lewis wrote: > >> Regrettably, pgrep and pkill seem widely unknown. >> >> - name: Kill zookeeper processes and restart service >> ansible.builtin.shell: | >> if pkill --signal 9 -f zookeeper.properties ; then >> sleep 6 >> systemctl start confluent-zookeeper510 >> fi >> systemctl status confluent-zookeeper510 >> register: zkstart >> >> >> On 7/11/23 10:26 AM, Sameer Modak wrote: >> >> I have used shell module and failed when combination to achieve this. >> >> - name: Get running processes list from remote host >> >> shell: "ps -efw | grep -e zookeeper.properties | grep -v grep |awk >> '{print $2}'" >> >> register: runningzkprc >> >> - name: Kill running processes >> >> throttle: 1 >> >> # ignore_errors: yes >> >> shell: | >> >> kill -9 "{{ runningzkprc.stdout_lines[0] }}" >> >> sleep 3 >> >> sleep 3 >> >> systemctl start confluent-zookeeper510 >> >> systemctl status confluent-zookeeper510 -l| grep -i error >> >> register: zkstart >> >> failed_when: zkstart.rc != 0 >> >> when: not zkmode.stdout_lines is search('leader') >> >> On Tuesday, July 11, 2023 at 12:47:04 AM UTC+5:30 Sameer Modak wrote: >> >>> Hello team, >>> >>> I am trying to restart zookeeper service on all 3 nodes sequentially , >>> we want restart zookeeper service one by one but it will be only run on 2nd >>> server if 1st server zookeeper service was successful. How do i achieve >>> this in 1 task . >>> >>> task should fail if service is not properly restarted. >>> >>> - name: restart zookeeper one by one on follower first and ensure all >>> is good >>> >>> throttle: 1 >>> >>> service: >>> >>> name: 'confluent-zookeeper' >>> >>> state: restarted >>> >>> when: not zkmode.stdout_lines is search('leader') >>> >>> >>> - name: check follower zookeeper are up and running >>> >>> shell: 'systemctl status confluent-zookeeper -l| grep -i error || >>> systemctl status confluent-zookeeper | grep failed' >>> >>> register: zkstatus >>> >>> failed_when: zkstatus.rc == 0 >>> >>> >>> Now in this case , 1 task is getting executed on all hosts despite >>> having error in logs . I want it to be failed as soon as it has error and >>> should not continue on next server. >>> >>> >>> >>> -- >> 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 ansible-proje...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/ansible-project/7b8e12de-8c99-4f85-ba9a-618f7308cdc9n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/ansible-project/7b8e12de-8c99-4f85-ba9a-618f7308cdc9n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> >> -- >> Todd >> >> -- 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 ansible-project+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/8d8739ec-e134-44b4-80ed-70f3883d8a4dn%40googlegroups.com.