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]> 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]. > 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/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/CA%2BnsWgxeK2f%3DB0ViDrMsuRqMTUk2Snm4GTSH-oLwS_Wyeu6%3DBw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
