Run task based on value in register

19 views
Skip to first unread message

dudu.c...@gmail.com

unread,
Nov 12, 2020, 7:12:31 AM11/12/20
to Ansible Project

I have created a playbook that should run the following scenario – I’m having a problem with the second tasks

1.       Query the source Kafka for a topic list and save the output in register

2.       Run topics creation as a loop on destination kafka

a.       Topics list is taken from the input file

b.       The topic will be created only if the topic exists in the source kafka

 

Playbook tasks explanation – It seems that task 6 is been skipped

Host: source Kafka

1.       Task 1 : connect to source Kafka and get a list of topic à update register

2.       Task 2: print topic list – debug

3.       Task 3 : Copy register output to a file

Host: destination  kafka

4.       Task 4 : upload topic list from the file to a register

5.       Task 5: print register

6.       Task 6: create topic per input list, only if topic name exists in register *  If this can be done as a search in file it will be much better (will save task 4)

 

## Verification
- hosts:
      - kafka_source_master_server[0]
  become: true
  any_errors_fatal: true
  gather_facts: False
  vars:
    zookeeper_port: 2999
  tasks:

    - name: list topic from source kafka
      command:
        argv:
          - kafka-topics
          - --list
          - --zookeeper
          - localhost
          - "{{ zookeeper_port }}"
      register: kafka_topic_list

    - name: Debug - print list of Topics
      debug:
        msg: "{{kafka_topic_list.stdout_lines}}"



   
- name: write results to a file
      local_action: copy content={{ kafka_topic_list.stdout_lines }} dest=/tmp/topic-list.txt

- hosts:
      - bigdata_kafka_master[0]
  become: true
  any_errors_fatal: true
  gather_facts: False
  vars_files:
    - ./environment.yml
    - ./kafka_enviroment.yml
  vars:
    zookeeper_port: 2999
    srm_bin_path: /opt/cloudera/parcels/STREAMS_REPLICATION_MANAGER/bin/srm-control
  tasks:

    - name: Update register with topic list
      shell: cat /tmp/topic-list.txt
      register: topic_list
      delegate_to: localhost


    - name: print topics
      debug:
        msg: "{{ topic_list.stdout_lines }}"

    - name: Create duplication per topic
      command:
        argv:
          - "{{ srm_bin_path }}"
          - topics
          - --source
          - "{{ kafka_source }}"
          - --target
          - "{{ kafka_destination }}"
          - --add
          - "{{ item }}"
      with_items: "{{ kafka_topics_to_be_mirrored }}"
      when: '"{{ kafka_topics_to_be_mirrored }}" in topic_list'

 

Stefan Hornburg (Racke)

unread,
Nov 12, 2020, 7:34:00 AM11/12/20
to ansible...@googlegroups.com
On 11/12/20 1:12 PM, dudu.c...@gmail.com wrote:
> I have created a playbook that should run the following scenario – I’m having a problem with the second tasks
>
> 1.       Query the source Kafka for a topic list and save the output in register
>
> 2.       Run topics creation as a loop on destination kafka
>
> a.       Topics list is taken from the input file
>
> b.       The topic will be created only if the topic exists in the source kafka
>
>  
>
> Playbook tasks explanation – It seems that task 6 is been skipped
>
> Host: source Kafka
>
> 1.       Task 1 : connect to source Kafka and get a list of topic à update register
>
> 2.       Task 2: print topic list – debug
>
> 3.       Task 3 : Copy register output to a file
>
> Host: destination  kafka
>
> 4.       Task 4 : upload topic list from the file to a register
>
> 5.       Task 5: print register
>
> 6.       Task 6: create topic per input list, only if topic name exists in register *  If this can be done as a search
> in file it will be much better (will save task 4)
>
>  
>
> /## Verification
> /- hosts:
>       - kafka_source_master_server[0]
>   become: true
>   any_errors_fatal: true
>   gather_facts: False
>   vars:
>     zookeeper_port: 2999
>   tasks:
>
>     - name: list topic from source kafka
>       command:
>         argv:
>           - kafka-topics
>           - --list
>           - --zookeeper
>           - localhost
>           - "{{ zookeeper_port }}"
>       register: kafka_topic_list
>
>     - name: Debug - print list of Topics
>       debug:
>         msg: "{{kafka_topic_list.stdout_lines}}"
> /
>
>
>     /- name: write results to a file
In a loop when is evaluated for *every* item, so I think that might solve your problem:

when: item in topic_list

Regards
Racke

>  
>
> --
> 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
> ansible-proje...@googlegroups.com <mailto:ansible-proje...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/b4d981e0-8d1e-43ea-aa17-a7c35afd4d42n%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/b4d981e0-8d1e-43ea-aa17-a7c35afd4d42n%40googlegroups.com?utm_medium=email&utm_source=footer>.


--
Ecommerce and Linux consulting + Perl and web application programming.
Debian and Sympa administration. Provisioning with Ansible.
OpenPGP_0x5B93015BFA2720F8.asc
OpenPGP_signature

dudu.c...@gmail.com

unread,
Nov 12, 2020, 8:41:28 AM11/12/20
to Ansible Project
It looks that the item is not been searched in teh register - Maybe I need to implement a a regex search? if so how? 

Stefan Hornburg (Racke)

unread,
Nov 12, 2020, 8:55:16 AM11/12/20
to ansible...@googlegroups.com
On 11/12/20 2:41 PM, dudu.c...@gmail.com wrote:
> It looks that the item is not been searched in teh register - Maybe I need to implement a a regex search? if so how?

Well you didn't show what is in the register and what is in kafka_topics_to_be_mirrored.

Regards
Racke
> <https://groups.google.com/d/msgid/ansible-project/b4d981e0-8d1e-43ea-aa17-a7c35afd4d42n%40googlegroups.com?utm_medium=email&utm_source=footer
> <https://groups.google.com/d/msgid/ansible-project/b4d981e0-8d1e-43ea-aa17-a7c35afd4d42n%40googlegroups.com?utm_medium=email&utm_source=footer>>.
>
>
>
> --
> Ecommerce and Linux consulting + Perl and web application programming.
> Debian and Sympa administration. Provisioning with Ansible.
>
> --
> 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
> ansible-proje...@googlegroups.com <mailto:ansible-proje...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/c7de7fde-2b82-457f-bea3-f37bc710b06fn%40googlegroups.com
> <https://groups.google.com/d/msgid/ansible-project/c7de7fde-2b82-457f-bea3-f37bc710b06fn%40googlegroups.com?utm_medium=email&utm_source=footer>.
OpenPGP_0x5B93015BFA2720F8.asc
OpenPGP_signature
Reply all
Reply to author
Forward
0 new messages