The error using 1.6.10 was as below (see original post);
TASK: [ntp | Ensure NTP is Installed]
*****************************************
<XX.XX.XX.XX> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO XX.XX.XX.XX
<XX.XX.XX.XX> REMOTE_MODULE {{ ansible_pkg_mgr }} name=ntp state=present
fatal: [XX.XX.XX.XX] => module {{ not found in
/usr/share/ansible/system:/usr/share/ansible/commands:/usr/share/ansible/messaging:/usr/share/ansible/cloud:/usr/share/ansible/notification:/usr/share/ansible/net_infrastructure:/usr/share/ansible/inventory:/usr/share/ansible/utilities:/usr/share/ansible/internal:/usr/share/ansible/files:/usr/share/ansible/packaging:/usr/share/ansible/database:/usr/share/ansible/source_control:/usr/share/ansible/network:/usr/share/ansible/web_infrastructure:/usr/share/ansible/monitoring:/usr/share/ansible
FATAL: all hosts have already failed -- aborting
----------------
It works as expected on 1.7.
But going back to the original question, it seems as though I'll have to
just use 'when: ansible_os_family == "*Whatever*"' and suppress the
skipping messages. It's a shame there isn't, and I get the vibe, isn't
likely to be a unified package module for at least install/remove of
packages (I realize there are differences in package names and location of
config files between distros but most of the time these can easily be
handled using OS specific var files). As an example, I do like the approach
taken with this https://github.com/mantiz/ansible-library-pkgmgr and it
would be good to have something like that. It seems the need for this has
come up a few times before but maybe not enough to warrant a module or
method to do this in a single task (when group_by can't be used).
On Tuesday, 19 August 2014 16:24:16 UTC+1, Michael DeHaan wrote:
>
> Yep, using {{ ansible_pkg_manager }} also won't take advantage of
> with_items optimizations in yum or apt, and will make things run much
> slower.
>
> I am interested in what error you saw though.
>
>
>
> On Tue, Aug 19, 2014 at 10:23 AM, KSS <[email protected] <javascript:>>
> wrote:
>
>> Hi,
>>
>> >> - action: "{{ ansible_pkg_mgr }} name={{ nrpe_package }}
>> state=installed"
>>
>> This doesn't work for me, see original post, it results in an error
>> (using ansible version 1.6.10). And from previous posts, it seems it's not
>> recommended to use this method.
>>
>> EDIT: just tried this using 1.7 and it does work again. Just a bit
>> cautious of using this approach against the advice from Michael regarding
>> using {{ ansible_pkg_mgr }} in this way
>>
>>
>> On Tuesday, 19 August 2014 09:22:34 UTC+1, KSS wrote:
>>
>>> Hi, I need to install some packages across different Linux distros
>>> (mainly CentOS/Redhat and Ubuntu right now). However, since there isn't a
>>> unified package manager (at least not bundled with core), I'm trying to
>>> find the best way to do this.
>>>
>>> I understand that we can use something like 'when: ansible_os_family ==
>>> "RedHat"' or the like, but when we have 400 CentOS hosts and 200 Ubuntu
>>> hosts, that's a lot of "skipping" messages (I'm aware these can also be
>>> suppressed in the main config file). We have playbooks that run against
>>> certain groups of hosts (these groups can contain multiple distros), so I'm
>>> not sure that using group_by is the best option either as, from my
>>> understanding, I'd have to have a 'group_by' in each of those playbooks and
>>> for each distro.
>>>
>>> For example, we have an 'ntp' role which basically just installs the ntp
>>> package, drops in the ntp config using template and ensures it's started
>>> (we have similar roles for snmp, ssmtp etc.).
>>>
>>> I came across a previous post with an answer from Michael DeHaan
>>> suggesting using the following action (although Michael does state that
>>> it's a bad idea), however, this no longer appears to work;
>>>
>>> Using task;
>>>
>>> ---
>>> ##
>>> # Install and configure NTPD
>>>
>>> - name: Gather OS Specific Variables
>>> include_vars: "{{ item }}"
>>> with_first_found:
>>> - "../vars/{{ ansible_distribution }}-{{
>>> ansible_distribution_version }}.yml"
>>> - "../vars/{{ ansible_distribution }}.yml"
>>> - "../vars/{{ ansible_os_family }}.yml"
>>> - "../vars/defaults.yml"
>>>
>>> - name: Ensure NTP is Installed
>>> action: "{{ ansible_pkg_mgr }} name=ntp state=present"
>>> tags: ntp
>>>
>>> - name: Copy NTP Configuration File
>>> template: src=../templates/ntp.conf.j2 dest=/etc/ntp.conf
>>> notify:
>>> - restart ntpd
>>> tags: ntp
>>>
>>> - name: Start NTPD
>>> service: name="{{ ntp_service }}" state=started enabled=true
>>> tags: ntp
>>>
>>> Results in;
>>>
>>> TASK: [ntp | Ensure NTP is Installed] ******************************
>>> ***********
>>> <XX.XX.XX.XX> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO
>>> XX.XX.XX.XX
>>> <XX.XX.XX.XX> REMOTE_MODULE {{ ansible_pkg_mgr }} name=ntp state=present
>>> fatal: [XX.XX.XX.XX] => module {{ not found in
>>> /usr/share/ansible/system:/usr/share/ansible/commands:/
>>> usr/share/ansible/messaging:/usr/share/ansible/cloud:/usr/
>>> share/ansible/notification:/usr/share/ansible/net_
>>> infrastructure:/usr/share/ansible/inventory:/usr/share/
>>> ansible/utilities:/usr/share/ansible/internal:/usr/share/
>>> ansible/files:/usr/share/ansible/packaging:/usr/share/
>>> ansible/database:/usr/share/ansible/source_control:/usr/
>>> share/ansible/network:/usr/share/ansible/web_infrastructure:/usr/share/
>>> ansible/monitoring:/usr/share/ansible
>>>
>>> FATAL: all hosts have already failed -- aborting
>>> ----------------
>>>
>>> Ansible Version: 1.6.10
>>> OS: CentOS6.5
>>>
>>> We have a few hundred servers for which puppet is used for config
>>> management and a hundred or so being managed using Salt (different
>>> departments hence the different tools), and the unified package managers
>>> seem to work well in those tools. Are there any plans to have a module in
>>> Ansible, even if it's just a simple wrapper to call the appropriate module,
>>> yum or apt or whatever, so these kind of playbooks look a bit better and
>>> make it easier where multiple distros are used. So, for example, in this
>>> case I'd just need something like;
>>>
>>> - name: Ensure NTP is Installed
>>> pkg: name=ntp state=present
>>> tags: ntp
>>>
>>> ...and the 'pkg' module works out the correct package module to call. I
>>> know the individual package modules do more than just install and remove
>>> packages but I feel, and maybe I'm the only one, that something like this
>>> would make things simpler and cleaner looking.
>>>
>>> Anyway, does anyone have any recommendations to achieve this in the mean
>>> time?
>>>
>>> Thanks.
>>>
>> --
>> 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] <javascript:>.
>> To post to this group, send email to [email protected]
>> <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/ansible-project/0c1efc13-0f17-48ea-88a2-b1b557a73eec%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/ansible-project/0c1efc13-0f17-48ea-88a2-b1b557a73eec%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/338784ba-4a31-4b86-a426-2fc662a70d31%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.