From f523cb444a3c6001599e940e91996eec1627b700 Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Mon, 15 May 2023 20:27:27 +0300 Subject: [PATCH] Implement install_kafka role --- .../roles/install_kafka/defaults/main.yaml | 5 +++ .../roles/install_kafka/tasks/main.yaml | 44 +++++++++++++++++++ .../install_kafka/templates/kafka.service.j2 | 13 ++++++ .../templates/zookeeper.service.j2 | 14 ++++++ 4 files changed, 76 insertions(+) create mode 100644 data/ansible/roles/install_kafka/defaults/main.yaml create mode 100644 data/ansible/roles/install_kafka/tasks/main.yaml create mode 100644 data/ansible/roles/install_kafka/templates/kafka.service.j2 create mode 100644 data/ansible/roles/install_kafka/templates/zookeeper.service.j2 diff --git a/data/ansible/roles/install_kafka/defaults/main.yaml b/data/ansible/roles/install_kafka/defaults/main.yaml new file mode 100644 index 000000000..76b4d24fb --- /dev/null +++ b/data/ansible/roles/install_kafka/defaults/main.yaml @@ -0,0 +1,5 @@ +--- +kafka_version: 3.4.0 +scala_version: 2.13 +kafka_service_state: started +kafka_service_enabled: true \ No newline at end of file diff --git a/data/ansible/roles/install_kafka/tasks/main.yaml b/data/ansible/roles/install_kafka/tasks/main.yaml new file mode 100644 index 000000000..da1af525c --- /dev/null +++ b/data/ansible/roles/install_kafka/tasks/main.yaml @@ -0,0 +1,44 @@ +--- +- name: Install Java + become: yes + apt: + name: default-jdk + state: present + update_cache: yes + +- name: Download Apache Kafka + get_url: + url: "https://dlcdn.apache.org/kafka/{{ kafka_version }}/kafka_{{ scala_version }}-{{ kafka_version }}.tgz" + dest: "/tmp/kafka_{{ scala_version }}-{{ kafka_version }}.tgz" + mode: '0755' + +- name: Extract Apache Kafka + become: yes + unarchive: + src: "/tmp/kafka_{{ scala_version }}-{{ kafka_version }}.tgz" + dest: "/usr/local" + remote_src: yes + creates: "/usr/local/kafka_{{ scala_version }}-{{ kafka_version }}" + +- name: Ensure Kafka and Zookeeper services are created + become: yes + template: + src: "{{ item.service_file }}" + dest: "/etc/systemd/system/{{ item.service_name }}" + owner: root + group: root + mode: '0644' + loop: + - { service_file: 'zookeeper.service.j2', service_name: 'zookeeper.service' } + - { service_file: 'kafka.service.j2', service_name: 'kafka.service' } + +- name: Enable Kafka and Zookeeper services + become: yes + systemd: + name: "{{ item }}" + state: "{{ kafka_service_state }}" + enabled: "{{ kafka_service_enabled }}" + daemon_reload: yes + loop: + - zookeeper + - kafka diff --git a/data/ansible/roles/install_kafka/templates/kafka.service.j2 b/data/ansible/roles/install_kafka/templates/kafka.service.j2 new file mode 100644 index 000000000..7301b9897 --- /dev/null +++ b/data/ansible/roles/install_kafka/templates/kafka.service.j2 @@ -0,0 +1,13 @@ +[Unit] +Description=Apache Kafka Server +Documentation=http://kafka.apache.org/documentation.html +Requires=zookeeper.service + +[Service] +Type=simple +Environment="JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64" +ExecStart=/usr/local/kafka_{{ scala_version }}-{{ kafka_version }}/bin/kafka-server-start.sh /usr/local/kafka_{{ scala_version }}-{{ kafka_version }}/config/server.properties +ExecStop=/usr/local/kafka_{{ scala_version }}-{{ kafka_version }}/bin/kafka-server-stop.sh + +[Install] +WantedBy=multi-user.target diff --git a/data/ansible/roles/install_kafka/templates/zookeeper.service.j2 b/data/ansible/roles/install_kafka/templates/zookeeper.service.j2 new file mode 100644 index 000000000..384fba117 --- /dev/null +++ b/data/ansible/roles/install_kafka/templates/zookeeper.service.j2 @@ -0,0 +1,14 @@ +[Unit] +Description=Apache Zookeeper server +Documentation=http://zookeeper.apache.org +Requires=network.target remote-fs.target +After=network.target remote-fs.target + +[Service] +Type=simple +ExecStart=/usr/local/kafka_{{ scala_version }}-{{ kafka_version }}/bin/zookeeper-server-start.sh /usr/local/kafka_{{ scala_version }}-{{ kafka_version }}/config/zookeeper.properties +ExecStop=/usr/local/kafka_{{ scala_version }}-{{ kafka_version }}/bin/zookeeper-server-stop.sh +Restart=on-abnormal + +[Install] +WantedBy=multi-user.target