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
when: (brokerid.stdout_lines[0] | int) == (controllerid.stdout_lines[0]
| int)
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.