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: allbecome: yestasks:
- name: create log dirs specifics to zookeeper,server and
schema-registryfile:path: "{{ item }}"state: directoryloop:-
/var/log/zookeeper- /var/log/kafka- /var/log/schema-registry
- name: copy service files to
/usr/lib/systemd/systemtemplate: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 reloadsystemd:daemon_reload: true
- name: check who is existing zokeeper leadershell: 'echo stat |
nc localhost 2181 | grep Mode'register: zkmode
- name: get broker idshell: |export brkid=$(ps -ef | grep -i
server.properties | grep -v grep| awk '{print $NF}')grep
broker.id <http://broker.id> ${brkid} | awk -F'=' '{print
$2}'register: brokerid
- name: get controller idshell: "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 serverstemplate:src: check.j2dest: '/tmp/check{{ item
}}.sh'mode: 551loop:- 'zookeeper'- 'schema-registry'- 'kafka'
- name: Kill running unmanaged java processes for zookeeper and
schma-registry thenstart newly configured systemd
processessthrottle: 1 #ignore_errors: yesany_errors_fatal:
trueshell: "/bin/bash /tmp/check{{ item }}.sh"register:
followerstatfailed_when: followerstat.rc != 0when: 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 leaderany_errors_fatal: trueshell:
"/bin/bash /tmp/check{{ item }}.sh"register:
leadeprocstatfailed_when: leadeprocstat.rc != 0when:
zkmode.stdout_lines is search('leader')loop:- 'zookeeper'-
'schema-registry'
- name: Kill running unmanaged java processes for broker and
start broker from systemd for followersthrottle:
1any_errors_fatal: trueshell: "/bin/bash
/tmp/checkkafka.sh"register: broprocstatfailed_when:
broprocstat.rc != 0when: (brokerid.stdout_lines[0] | int) !=
(controllerid.stdout_lines[0] | int)
- name: Kill running unmanaged java processes for broker and
start broker from systemd for leaderthrottle: 1any_errors_fatal:
trueshell: "/bin/bash /tmp/checkkafka.sh"register:
broprocstatfailed_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>.