Execution
Date 23 May 2025 11:10:15 +0100
Duration 00:00:01.23
Controller ssh-gw-4.layershift.com
User root
Versions
Ansible 2.16.11
ara 1.7.2 / 1.7.2
Python 3.10.10
Summary
1 Hosts
3 Tasks
3 Results
1 Plays
1 Files
0 Records

File: /home/ssh-gateway/ansible/kuly/generate_inventory_from_files.yml

---
- name: Generate Ansible inventory from fetched ini files
  hosts: localhost
  gather_facts: false
  vars:
    base_dir: "fetched_files"
    output_inventory_file: "generated_inventory.ini"
  tasks:
    - name: Find all ini files under each host folder
      ansible.builtin.find:
        paths: "{{ base_dir }}"
        patterns: "*.ini"
        recurse: true
      register: ini_files

    - name: Debug found files
      ansible.builtin.debug:
        msg: "Found {{ ini_files.files | length }} .ini files."

    - name: Extract hostnames from filenames and build inventory groups
      ansible.builtin.set_fact:
        inventory_data: |
          {% set data = {} %}
          {% for item in ini_files.files %}
            {% set filename = item.path | basename %}
            {% set hostname = filename | regex_replace('-panel.ini$', '') %}
            {% if 'ungrouped' not in data %}{% do data.update({'ungrouped': []}) %}{% endif %}
            {% do data['ungrouped'].append(hostname) %}
          {% endfor %}
          {{ data }}

    - name: Write inventory to file
      ansible.builtin.template:
        src: inventory_template.j2
        dest: "{{ output_inventory_file }}"
      vars:
        hosts_list: "{{ inventory_data.ungrouped }}"