'How can I manage groups in inventory?

I have a common playbook (task) but in my last task I want to do an action on a group of hosts and when it is finished, do the same action on another group (for my test I simply empty a folder):

- name: test clean folder on hosts
  ansible.builtin.file:
    path: /testJO
  when: inventory_hostname in groups['c_hosts']

- name: test clean folder on master
  ansible.builtin.file:
    path: /testJO
  when: inventory_hostname in groups['master’]

I have issue with my inventory file : /root/ansible_Folder/inventories/inventories.yml :

all:
  hosts:
    children:
      master:
        hosts:
          dem-master:
      c_hosts:
        hosts:
          dem-host:

Who knows how I can manage my inventories file please?

EDIT : I tried your solution which seems to me coherent but i have this error message :

ERROR! conflicting action statements: hosts, tasks

The error appears to be in '/root/ansible-cortex-lab/playbooks/roles/cortex/tasks/main.yml': line 1, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- hosts: c_hosts
  ^ here

I just copy past both config file you gave to me. Do you know why I have this behaviour please ?



Solution 1:[1]

Separate the plays, e.g.

  - hosts: c_hosts
    tasks:
      - name: test remove folder
        ansible.builtin.file:
          path: /testJO
          state: absent
      - name: test create folder
        ansible.builtin.file:
          path: /testJO
          state: directory

  - hosts: master
    tasks:
      - name: test remove folder
        ansible.builtin.file:
          path: /testJO
          state: absent
      - name: test create folder
        ansible.builtin.file:
          path: /testJO
          state: directory

The module file can't simply clean a folder. Instead, remove a folder and create it again.


To fix the inventory, remove the 2nd line hosts:. See Inventory basics: formats, hosts, and groups

all:
  children:
    master:
      hosts:
        dem-master:
    c_hosts:
      hosts:
        dem-host:

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1