Skip to content

Unable to parse smb.conf with idmap line #11506

@gurubert

Description

@gurubert

Summary

I am trying to parse a smb.conf (Samba configuration) file that contains these two lines:

[global]
	idmap config * : backend = tdb
	idmap config * : range = 2000-9999

It looks like from_ini stumbles across the : and uses it as a separator instead of the = in the same line.

Issue Type

Bug Report

Component Name

from_ini

Ansible Version

$ ansible --version
ansible [core 2.20.2]
  config file = /home/media/anarchy/gurubert/git/kunden/bbaw/ceph-deployment/ansible.cfg
  configured module search path = ['/home/gurubert/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/anarchy/gurubert/venv-ansible/lib/python3.13/site-packages/ansible
  ansible collection location = /home/gurubert/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/anarchy/gurubert/venv-ansible/bin/ansible
  python version = 3.13.5 (main, Jun 25 2025, 18:55:22) [GCC 14.2.0] (/home/anarchy/gurubert/venv-ansible/bin/python3)
  jinja version = 3.1.6
  pyyaml version = 6.0.3 (with libyaml v0.2.5)

Community.general Version

$ ansible-galaxy collection list community.general

# /home/anarchy/gurubert/venv-ansible/lib/python3.13/site-packages/ansible_collections
Collection        Version
----------------- -------
community.general 12.3.0 

Configuration

$ ansible-config dump --only-changed

OS / Environment

No response

Steps to Reproduce

Example comes from a CTDB cluster, the first task could also slurp the contents of /etc/samba/smb.conf

- name: Get SMB config
  ansible.builtin.shell:
    cmd: "net conf list"
  register: smbconfigraw

- name: Put SMB config into var
  delegate_to: "{{ groups[current_ctdb_group][0] }}"
  ansible.builtin.set_fact:
    current_samba_config: "{{ smbconfigraw.stdout | community.general.from_ini(allow_no_value=true, ) }}"

Expected Results

I expect a nice dictionary like this:

        "global": {
            "idmap config * : backend": "tdb",
            "idmap config * : range": "2000-9999",
         }

Actual Results

[ERROR]: Task failed: Finalization of task args for 'ansible.builtin.set_fact' failed: Error while resolving value for 'current_samba_config': The filter plugin 'community.general.from_ini' failed: from_ini failed to parse given string: While reading from '<???>' [line 10]: option 'idmap config *' in section 'global' already exists

Task failed.
Origin: includes/subtask-update-samba-net-conf.yaml:18:3

16   register: smbconfigraw
17
18 - name: Put SMB config into var
     ^ column 3

<<< caused by >>>

Finalization of task args for 'ansible.builtin.set_fact' failed.
Origin: includes/subtask-update-samba-net-conf.yaml:20:3

18 - name: Put SMB config into var
19   delegate_to: "{{ groups[current_ctdb_group][0] }}"
20   ansible.builtin.set_fact:
     ^ column 3

<<< caused by >>>

Error while resolving value for 'current_samba_config': The filter plugin 'community.general.from_ini' failed: from_ini failed to parse given string: While reading from '<???>' [line 10]: option 'idmap config *' in section 'global' already exists
Origin: includes/subtask-update-samba-net-conf.yaml:21:27

19   delegate_to: "{{ groups[current_ctdb_group][0] }}"
20   ansible.builtin.set_fact:
21     current_samba_config: "{{ smbconfigraw.stdout | community.general.from_ini }}"
                             ^ column 27

fatal: [bbaw-mds01]: FAILED! => {"changed": false, "msg": "Task failed: Finalization of task args for 'ansible.builtin.set_fact' failed: Error while resolving value for 'current_samba_config': The filter plugin 'community.general.from_ini' failed: from_ini failed to parse given string: While reading from '<???>' [line 10]: option 'idmap config *' in section 'global' already exists"}

Code of Conduct

  • I agree to follow the Ansible Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugThis issue/PR relates to a bugfeatureThis issue/PR relates to a feature requestfilterfilter pluginpluginsplugin (any type)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions