Analysis sounds correct to me, but would like to clarify the expected
result:

For a system with /etc/os-release of:

  NAME="Arch Linux"
  PRETTY_NAME="Arch Linux"
  ID=arch
  ID_LIKE=archlinux
  ANSI_COLOR="0;36"
  HOME_URL="https://www.archlinux.org/";
  SUPPORT_URL="https://bbs.archlinux.org/";
  BUG_REPORT_URL="https://bugs.archlinux.org/";

The desired value for 'ansible_os_family' is 'Archlinux' ?

And for the other distro facts:

        "ansible_distribution": "Archlinux",
        "ansible_distribution_file_parsed": true,
        "ansible_distribution_file_path": "/etc/os-release",
        "ansible_distribution_file_variety": "Archlinux",
        "ansible_distribution_major_version": "NA",
        "ansible_distribution_release": "NA",
        "ansible_distribution_version": "NA",


What is the background for the values in /etc/os-release being different
than the desired values ('Arch Linux' vs 'Archlinux') ?


The description at
https://github.com/ansible/ansible/pull/15675#issue-151988680 claims:

       "systemd is a first class citizen in Arch Linux variants and thus
/etc/os-release will always have the right info [1]. We don't need to rely
on /etc/arch-release and allowempty workaround."

Is that correct?


If so, sounds like just need to rebase
https://github.com/ansible/ansible/pull/15675 or
https://github.com/ansible/ansible/pull/22949 again.

On Mon, Jul 24, 2017 at 10:54 AM, Mathias Ettinger <
[email protected]> wrote:

> I compared the source codes between 2.3 and 2.4, it seems to me that the
> check at https://github.com/ansible/ansible/blob/stable-2.3/lib/
> ansible/module_utils/facts.py#L729-L731 is not present something like
> here https://github.com/ansible/ansible/blob/devel/lib/
> ansible/module_utils/facts/system/distribution.py#L171 and since no
> "parse_distribution_file_Archlinux" method is present, it goes all the
> way down to "parse_distribution_file_NA" which just plain reads
> /etc/os-release.
>
> Maybe it's time to implement such method for custom logic, or stick to the
> 'allowempty' trick.
>
> I also tryed manually applying the fix provided in #15675 and got the
> desired output:
>         "ansible_distribution": "Archlinux",
>         "ansible_distribution_file_parsed": true,
>         "ansible_distribution_file_path": "/etc/os-release",
>         "ansible_distribution_file_variety": "Archlinux",
>         "ansible_distribution_major_version": "NA",
>         "ansible_distribution_release": "NA",
>         "ansible_distribution_version": "NA",
>
> so maybe just update this PR instead (or #22949) to modify the right file?
>
>
>
> Le lundi 24 juillet 2017 16:28:00 UTC+2, mdl a écrit :
>>
>> I saw this <https://github.com/ansible/ansible/pull/15675> issue at
>> GitHub where people requested to get Archlinux detection from
>> /etc/os-release. It seems to be related to this. What's the best way to
>> address this with the Ansible team? It's not a big issue but having no
>> spaces in distribution or family name is a good practice.
>>
>> Thanks for your help, it's nice to know the root of the 'problem'.
>>
>> El lunes, 24 de julio de 2017, 11:07:14 (UTC-3), Mathias Ettinger
>> escribió:
>>>
>>> Got the same output using ansible 2.4:
>>>             "ansible_distribution": "Arch Linux",
>>>             "ansible_distribution_file_parsed": true,
>>>             "ansible_distribution_file_path": "/etc/os-release",
>>>             "ansible_distribution_file_variety": "NA",
>>>             "ansible_distribution_major_version": "NA",
>>>             "ansible_distribution_release": "NA",
>>>             "ansible_distribution_version": "NA",
>>>
>>> the "ansible_distribution_file_path" is new from 2.3 and may be the
>>> source of the infos instead of hardcoded ones, hence "Arch Linux"
>>>
>>>
>>>
>>> Le lundi 24 juillet 2017 15:37:34 UTC+2, mdl a écrit :
>>>>
>>>> Thank you so much for your reply Mathias.
>>>>
>>>> Version:
>>>> me@host ~> ansible --version
>>>>        2
>>>> ansible 2.4.0
>>>>   config file = /etc/ansible/ansible.cfg
>>>>   configured module search path = [u'/home/me/.ansible/plugins/modules'
>>>> , u'/usr/share/ansible/plugins/modules']
>>>>   ansible python module location = /usr/lib/python2.7/site-packages/
>>>> ansible
>>>>   executable location = /usr/bin/ansible
>>>>   python version = 2.7.13 (default, Feb 11 2017, 12:22:40) [GCC 6.3.1
>>>> 20170109]
>>>>
>>>> I just tried your example playbook in my computer and got:
>>>> me@host ~/Ansible> cat /etc/os-release
>>>> NAME="Arch Linux"
>>>> PRETTY_NAME="Arch Linux"
>>>> ID=arch
>>>> ID_LIKE=archlinux
>>>> ANSI_COLOR="0;36"
>>>> HOME_URL="https://www.archlinux.org/";
>>>> SUPPORT_URL="https://bbs.archlinux.org/";
>>>> BUG_REPORT_URL="https://bugs.archlinux.org/";
>>>>
>>>> me@host ~/Ansible> ansible-playbook arch-test.yml | grep ansible_os
>>>>             "ansible_os_family": "Arch Linux",
>>>>         "ansible_os_family": "Arch Linux",
>>>>                     "ansible_os_family": "Arch Linux",
>>>>                 "ansible_os_family": "Arch Linux",
>>>>
>>>> Is version 2.4.0 to blame here?
>>>>
>>>> El lunes, 24 de julio de 2017, 10:18:13 (UTC-3), Mathias Ettinger
>>>> escribió:
>>>>>
>>>>> Using ansible 2.3.1.0 and the following playbook:
>>>>>
>>>>> - hosts: localhost
>>>>>   tasks:
>>>>>     - debug: msg={{ vars }}
>>>>>
>>>>> I get, amongst others:         "ansible_os_family": "Archlinux",  and
>>>>>         "ansible_distribution": "Archlinux",
>>>>>
>>>>> What version are you using?
>>>>>
>>>>>
>>>>> Le vendredi 21 juillet 2017 18:32:16 UTC+2, mdl a écrit :
>>>>>>
>>>>>> I'm testing Ansible roles with Archlinux and one of them uses
>>>>>> ansible_os_family to include variables or tasks. So I have:
>>>>>> - name: include OS vars
>>>>>>   include_vars: "{{ ansible_os_family }}.yml"
>>>>>>   when: ansible_os_family == 'Archlinux'
>>>>>>
>>>>>> Problem is that ansible_os_family gets 'Arch Linux' as value, so
>>>>>> ansible looks for 'Arch Linux.yml' but filename is actually
>>>>>> 'Archlinux.yml', just capital A and no spaces. I know this is not a fancy
>>>>>> bug or anything, I've been looking at ansible code and GitHub issues but
>>>>>> only found OS_FAMILY_MAP (Code here
>>>>>> <https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts/system/distribution.py>)
>>>>>> and Arch seems to be defined as 'Archlinux' but never 'Arch Linux'.
>>>>>>
>>>>>> Could anyone guide me because I do not know if something changed with
>>>>>> /etc/os-release in Archlinux or maybe a bug needs to be reported to 
>>>>>> update
>>>>>> variables like OS_FAMILY_MAP.
>>>>>>
>>>>>> Thanks in advance.
>>>>>>
>>>>> --
> 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 [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/ansible-project/1d2a2890-2141-4514-a088-aaac97ef26fc%40googlegroups.
> com
> <https://groups.google.com/d/msgid/ansible-project/1d2a2890-2141-4514-a088-aaac97ef26fc%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAOJNLf8frn7t0E0Dksabo_1ti1y5_u3N_o894UyA7RoUi8NqYQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to