Ansible Simple IT Automation

Kafka Topics with Ansible

These are some snippets on how you can manage some Topics basic operations on your Apache Kafka with Ansible and command module.

Create Topics

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
---
- name: Create topics
  hosts: localhost
  vars:
    kafka_topics: /opt/kafka_2.11-1.1.0/bin/kafka-topics.sh 
    kafka_server: 172.16.107.21
    kafka_port: 9093
    kafka: "{{ kafka_server }}:{ { kafka_port }}"
    zookeeper_server: 172.16.107.21
    zookeeper_port: 2182
    zookeeper: "{{ zookeeper_server }}:{ { zookeeper_port }}"
    replication_factor: 3
    partitions: 3

  tasks:

    - name: Load CERT topics to create
      include_vars:
        file: ../vars/create_topics.yml

    - name: Create Topics
      command:
        argv: 
          - "{{ kafka_topics }}"
          - --create
          - --zookeeper
          - "{{ zookeeper }}"
          - --replication-factor 
          - "{{ replication_factor }}"
          - --partitions 
          - "{{ partitions }}"
          - --topic
          - "{{ item }}"
      loop: "{{ topics }}"

create_topics.yml

1
2
3
4
5
---
topics: 
  - ansible-topic-1
  - ansible-topic-2
  - ansible-topic-3

List Topics

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
---
- name: List topics
  hosts: localhost
  vars:
    kafka_topics: /opt/kafka_2.11-1.1.0/bin/kafka-topics.sh 
    kafka_server: 172.16.107.21
    kafka_port: 9093
    kafka: "{{ kafka_server }}:{{ kafka_port }}"
    zookeeper_server: 172.16.107.21
    zookeeper_port: 2182
    zookeeper: "{{ zookeeper_server }}:{{ zookeeper_port }}"

  tasks:
    - name: List Topics
      command: 
        argv: 
          - "{{ kafka_topics }}"
          - --list
          - --zookeeper 
          - "{{ zookeeper }}"

Delete Topics

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
---
- name: Delete topics
  hosts: localhost
  vars:
    kafka_topics: /opt/kafka_2.11-1.1.0/bin/kafka-topics.sh 
    kafka_server: 172.16.107.21
    kafka_port: 9093
    kafka: "{{ kafka_server }}:{{ kafka_port }}"
    zookeeper_server: 172.16.107.21
    zookeeper_port: 2182
    zookeeper: "{{ zookeeper_server }}:{{ zookeeper_port }}"

  tasks:
    - name: Load CERT topics to create
      include_vars:
        file: ../vars/delete_topics.yml

    - name: Delete Topics
      command:
        argv: 
          - "{{ kafka_topics }}"
          - --delete
          - --zookeeper
          - "{{ zookeeper }}"
          - --topic
          - "{{ item }}"
      loop: "{{ topics }}"
      register: topics

delete_topics.yml

1
2
3
4
5
---
topics: 
  - ansible-topic-1
  - ansible-topic-2
  - ansible-topic-3