Hi Todd, Morning!!!
Reason i didn't follow confluent playbook is because i had to develop by our own for customized services. Obviously i can take hind out of it. Second thing why i did nt use systemd is because playbook is getting bigger but yeah u made good point i forgot to enable the serivce(by the way its there in that shell script i m running to check services its all in one) I would like to appreciate you on suggesting ansible-lint i knew but never thaught of using but seems now its the time. Last thing how do I appreciate your replies/time please let me know. Your responses encourages people to use ansible more and more. Obviously its hard to remember syntax some shorthand tricks when u dont use that tool for 3 months but your replies made it easy. On Friday, July 14, 2023 at 1:05:55 AM UTC+5:30 Todd Lewis wrote: > Any reason you don't want to follow > https://docs.confluent.io/ansible/current/overview.html ("Ansible > Playbooks for Confluent Platform")? > > It's not clear how you got zookeeper and friends installed on these hosts > without the benefit of a service manager. In any case, I'm surprised you're > putting the systemd unit files elsewhere from /etc/systemd/system. And I > don't see you enabling or starting those services. > > Be sure to run ansible-lint and consider taking its recommendations. > > Otherwise, without spinning up unmanaged instances myself, I don't have > anything else to comment on. > -- > Todd > > > On 7/13/23 2:51 PM, Sameer Modak wrote: > > Hello Todd/Dick/Stephan, > > This is how i did, do u thnink any of below tasks can still be handled > otherwise (more accurately) or this is the best way. > > --- > - hosts: all > become: yes > tasks: > > - name: create log dirs specifics to zookeeper,server and schema-registry > file: > path: "{{ item }}" > state: directory > loop: > - /var/log/zookeeper > - /var/log/kafka > - /var/log/schema-registry > > - name: copy service files to /usr/lib/systemd/system > template: > src: "{{ item.src }}" > dest: "{{ item.dest }}" > loop: > - {src: 'confluent-zookeeper.service.j2', dest: > '/usr/lib/systemd/system/confluent-zookeeper.service'} > - {src: 'confluent-kafka.service.j2', dest: > '/usr/lib/systemd/system/confluent-kafka.service'} > - {src: 'confluent-schema-registry.service.j2', dest: > '/usr/lib/systemd/system/confluent-schema-registry.service'} > > - name: systemd reload > systemd: > daemon_reload: true > > - name: check who is existing zokeeper leader > shell: 'echo stat | nc localhost 2181 | grep Mode' > register: zkmode > > - name: get broker id > shell: | > export brkid=$(ps -ef | grep -i server.properties | grep -v grep | awk > '{print $NF}') > grep broker.id ${brkid} | awk -F'=' '{print $2}' > register: brokerid > > - name: get controller id > shell: "echo dump | nc localhost 2181 | grep -A 2 -i controller | grep -i > brokers | awk -F '/' '{print $NF}'" > register: controllerid > > - name: copy zookeeper,schema-registry and kafka service check files on > servers > template: > src: check.j2 > dest: '/tmp/check{{ item }}.sh' > mode: 551 > loop: > - 'zookeeper' > - 'schema-registry' > - 'kafka' > > - name: Kill running unmanaged java processes for zookeeper and > schma-registry then start newly configured systemd processess > throttle: 1 > # ignore_errors: yes > any_errors_fatal: true > shell: "/bin/bash /tmp/check{{ item }}.sh" > register: followerstat > failed_when: followerstat.rc != 0 > when: not zkmode.stdout_lines is search('leader') > loop: > - 'zookeeper' > - 'schema-registry' > > - name: As all followers are up now repeat to kill running java cp and > start systemd for leader > any_errors_fatal: true > shell: "/bin/bash /tmp/check{{ item }}.sh" > register: leadeprocstat > failed_when: leadeprocstat.rc != 0 > when: zkmode.stdout_lines is search('leader') > loop: > - 'zookeeper' > - 'schema-registry' > > - name: Kill running unmanaged java processes for broker and start broker > from systemd for followers > throttle: 1 > any_errors_fatal: true > shell: "/bin/bash /tmp/checkkafka.sh" > register: broprocstat > failed_when: broprocstat.rc != 0 > when: (brokerid.stdout_lines[0] | int) != (controllerid.stdout_lines[0] | > int) > > - name: Kill running unmanaged java processes for broker and start broker > from systemd for leader > throttle: 1 > any_errors_fatal: true > shell: "/bin/bash /tmp/checkkafka.sh" > register: broprocstat > failed_when: broprocstat.rc != 0 > > If this is most accurate way then i think guys who are looking for > similar solution can use this for reference. > > On Wednesday, July 12, 2023 at 8:17:09 PM UTC+5:30 Sameer Modak wrote: > >> I get it . But this is specific case where my current process is not >> managed by systemd so i had to use pkill anyways. >> >> Now issue is shell module with if else is not working for me correctly. >> Like its giving rc -9. if i copy same shell script and rung using shell >> module like bash /tmp/zkproc.sh it works. >> >> Reason to post here is due to shell module multiple command not working >> as expected. Below is shell script. Now i had to use grep -v >> "ERROR;et="$?" because sometime process does says its running but log has >> some errors which cant be ignored. >> >> >> if pkill --signal 9 -f zookeeper.properties ; then >> >> sleep 2;systemctl start confluent-zookeeper510; sleep 2; echo >> "stat" | nc localhost 2181;st="$?" >> >> systemctl status confluent-zookeeper5910 -l | grep -v ERROR;et="$?" >> >> [[ $st -eq 0 && $et -eq 0 ]] && exit 0 || exit 1 >> >> else >> >> exit 1 >> >> fi >> >> >> >> >> On Wednesday, July 12, 2023 at 5:01:27 PM UTC+5:30 Dick Visser wrote: >> >>> Hii, >>> >>> >>> On Wed, 12 Jul 2023 at 12:53, Sameer Modak <[email protected]> >>> wrote: >>> >>>> 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="$?" >>>> >>>> >>> I feel we're going down a rabbit hole trying to fight ill designed >>> systemd units with shell hacks (which include typos? ERRROR instead of >>> ERROR). >>> My approach would be to make sure the systemd unit is doing what it >>> should do, and then rely on that to do its job.... >>> >>> >>> >> -- > > 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 view this discussion on the web visit > https://groups.google.com/d/msgid/ansible-project/f38bfb8a-ddf1-448c-a1f5-74bb8193ff64n%40googlegroups.com > > <https://groups.google.com/d/msgid/ansible-project/f38bfb8a-ddf1-448c-a1f5-74bb8193ff64n%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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/d39a758c-1599-433b-85d2-ef13a7dfe9e2n%40googlegroups.com.
