Brian said what to do, but left /how to do it/ as a (very worthwhile) exercise for the reader.
It could look something like

    when: group_names | select('search', '_broker' ) | length > 0  # matches 
all the broker groups
    when: group_names | select('search', kenv ~ '_app_zoo') | length > 0 # 
app_zoo hosts in {{ kenv }} environment
    when: "'kafka_dev' in group_names"  # matches all your dev environment hosts
    when: "'kafka_dev_app_zoo' in group_names"  # matches all your dev app zoo 
hosts

In jinja templates, those become if conditionals:

    {% if group_names | select('search', '_broker' ) | length > 0 %}
    {% if group_names | select('search', kenv ~ '_app_zoo') | length > 0 %}
    {% if 'kafka_dev' in group_names" %}
    {% if 'kafka_dev_app_zoo' in group_names" %}

Sorry to be slow to respond. It's been crazy busy at work.
—
Todd

On 4/22/24 2:12 PM, Sameer Modak wrote:
That was useful. But  i still  did not quite get how do we pass *kafka_dev* in j2 or during runtime like we dont know before hand what group we will be running against.*
*
*
*so in when condition can we pass something like this when group is **kafka_dev***
*
On Friday, April 19, 2024 at 8:37:51 PM UTC+5:30 Todd Lewis wrote:

    Oops. That second "children:" under "kafka:" shouldn't be there.
    Otherwise, it's pretty close.

    On Friday, April 19, 2024 at 10:58:32 AM UTC-4 Todd Lewis wrote:

        It appears you are trying to define two different "*broker*"
        groups: one as a child of the "*dev_kafka_cluster*" and
        another as a child of "*qa_kafka_cluster*".

        That isn't how groups work. There is only one "*broker*"
        group. You have added hosts to the "*broker*" group in two places.

        (Also, "*App*" as a group name should be lower-case letters.)

        Let me suggest an alternative inventory/group arrangement that
        implements this naming scheme:
        *kafka[_{$env}[_{app,web,db}[_{zoo,broker,schema}]]]
        *In this scheme, there isn't a "*broker*" group. Instead there
        are groups named "*kafka_dev_app_broker*" and
        "*kafka_qa_app_broker*" (and eventually a "*kafka_prd**" set I
        imagine).

        I call this type of group naming scheme "fully articulated" —
        any group you care to specify is completely unambiguous. It's
        a set of strict hierarchies (in this case there's only one
        hierarchy: "*kafka*"), and hosts appear in a particular
        hierarchy exactly once. (If you find yourself trying to inject
        a host in two different places, you either need to rethink
        your hierarchy's structure, or maybe you need two hierarchies.)

        We have on occasion included an "*all*" environment (like
        "*dev*" and "*qa*"). If you did that, there would be a
        corresponding "*kafka_all**" group for any "*kafka_dev**" or
        "*kafka_qa**" groups. Then you could target all the brokers
        with "*kafka_all_app_broker*" instead of
        "*kafka_dev_app_broker**,**kafka_qa_app_broker*". You would
        have to decide if the benefit is worth the extra text you have
        to maintain in your inventory.

        Your inventory would look like this:

        kafka:
           children:
             kafka_dev:
               children:
                 kafka_dev_app:
                   children:
                     kafka_dev_app_zoo:
                       hosts:
                         dev1-main-zookpr[01:05].dev
                     kafka_dev_app_broker:
                       hosts:
                         dev1-main-kafka[01:06].dev
                     kafka_dev_app_schema:
                       hosts:
                         dev1-main-kafka[01:06].dev
                 kafka_dev_web: […] # omitted for brevity,
                 kafka_dev_db: […]  # but you get the idea.
           children:
             kafka_qa:
               children:
                 kafka_qa_app:
                   children:
                     kafka_qa_app_zoo:
                       hosts:
                         qa1-main-zookpr[01:03].qa
                     kafka_qa_app_broker:
                       hosts:
                         qa1-main-kafka[01:06].qa
                     kafka_qa_app_schema:
                       hosts:
                         qa1-main-kafka[04:06].qa
                 kafka_qa_web: […] # omitted for brevity,
                 kafka_qa_db: […]  # but you get the idea.


        On 4/19/24 8:40 AM, Sameer Modak wrote:
        I have an inventory something like this , each main cluster
        has children like broker.
        Now how do i run any tasks against perticular group.broker.
        When we pass the group with --limit it does not work it runs
        on all broker.  Also  main playbook has hosts:all in it

        annsible/grafana-agent-play.yaml -i kafka_inventory.yaml
        --limit qa_kafka_cluster -u sam -k -b

        dev_kafka:

              children:

                App:

                  children:

                    dev_kafka_cluster:

                       children:

                         zookeeper:

                           hosts:

        dev1-main-zookpr[01:05].dev

                         broker:

                           hosts:

                             dev1-main-kafka[01:06].dev

                         schema_registry:

                           hosts:

                             dev1-main-kafka[01:06].dev

                uc:

                  children:


            qa_kafka:

              children:

                App:

                  children:

                    qa_kafka_cluster:

                       children:

                         zookeeper:

                           hosts:

                             qa1-main-zookpr[01:03].qa

                         broker:

                           hosts:

                             qa1-main-kafka[01:06].qa

                         schema_registry:

                           hosts:

                             qa1-main-kafka[04:06].qa



        ========



-- 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.
        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/ansible-project/0e0e0032-661b-4d2e-9fe4-347c08157d7bn%40googlegroups.com
        
<https://groups.google.com/d/msgid/ansible-project/0e0e0032-661b-4d2e-9fe4-347c08157d7bn%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- Todd

--
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-project+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/d1c3f22c-7378-4430-8b8d-1ce2733ebb50n%40googlegroups.com <https://groups.google.com/d/msgid/ansible-project/d1c3f22c-7378-4430-8b8d-1ce2733ebb50n%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
Todd

--
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-project+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/7158f8f1-f357-4b0b-b74d-df63fcfc8d86%40gmail.com.

Reply via email to