You can use package facts for that:
https://docs.ansible.com/ansible/latest/modules/package_facts_module.html
On Wednesday, February 5, 2020 at 10:27:01 AM UTC+1, Stefan Hornburg
(Racke) wrote:
>
> On 2/5/20 9:48 AM, Adrian Sebastian Dutu wrote:
> > Why are you using the command module?
> >
> > Use the package module. Then it will not matter what package manager the
> distro is running.
> > If you have ansible module available for what you want to do, never use
> command. I would rewrite the entire play.
> >
>
> You can use the package module, but it will not be able to list packages
> and the names of packages might
> differ between different distros etc.
>
> Regards
> Racke
>
> >
> >
> > On Wednesday, February 5, 2020 at 2:08:01 AM UTC+1, Work-Hard wrote:
> >
> > Hello,
> > Do you recommend Migrating playbook from ubuntu to amazon Linux 2
> (as it uses *yum instead of apt*). If so, how can
> > I check if missing add a package to a new instance to make sure it
> installs python-apt*?*
> > *Ansible-Playbook*
> > ---
> > - hosts: amazonlinux2
> > become: true
> > any_errors_fatal: true
> > serial: 1
> > max_fail_percentage: 0
> > vars:
> > ansible_user: ec2-user
> > tasks:
> > # do an "apt-get update", to ensure latest package lists
> > - name: apt-get update
> > apt:
> > update-cache: yes
> > changed_when: 0
> >
> > # get a list of packages that have updates
> > - name: get list of pending upgrades
> > command: apt-get --simulate dist-upgrade
> > args:
> > warn: false # don't warn us about apt having its own plugin
> > register: apt_simulate
> > changed_when: 0
> >
> > - name: Update cache
> > apt:
> > update-cache: yes
> > changed_when: false
> >
> > - name: Fetch package list of updates
> > command: apt list --upgradable
> > register: aptlist
> >
> > - set_fact:
> > updates: "{{ aptlist.stdout_lines |
> difference(['Listing...'])
> > | map('regex_replace', '^(.*?)/(.*)', '\\1') | list }}"
> >
> > - debug: var=updates
> >
> > # tell user about packages being updated
> > - name: show pending updates
> > debug:
> > var: updates
> > when: updates.0 is defined
> >
> > # comment this part in if you want to manually ack each server
> update
> > - pause:
> > when: updates.0 is defined
> >
> > # if a new kernel is incoming, remove old ones to avoid full
> /boot
> > - name: apt-get autoremove
> > command: apt-get -y autoremove
> > args:
> > warn: false
> > when: '"Inst linux-image-" in apt_simulate.stdout'
> > changed_when: 0
> >
> > # do the actual apt-get dist-upgrade
> > - name: apt-get dist-upgrade
> > apt:
> > upgrade: dist # upgrade all packages to latest version
> > register: upgrade_output
> >
> > # check if we need a reboot
> > - name: check if reboot needed
> > stat: path=/var/run/reboot-required
> > register: file_reboot_required
> >
> > # "meta: end_play" aborts the rest of the tasks in the current
> «tasks:»
> > # section, for the current webserver
> > # "when:" clause ensures that the "meta: end_play" only triggers
> if the
> > # current server does _not_ need a reboot
> > - meta: end_play
> > when: not file_reboot_required.stat.exists
> >
> > # because of the above meta/when we at this point know that the
> current
> > # host needs a reboot
> >
> > # prompt for manual input before doing the actual reboot
> > - name: Confirm reboot of ec2-user
> > pause:
> >
> > - name: reboot node
> > shell: sleep 2 && shutdown -r now "Reboot triggered by
> ansible"
> > async: 1
> > poll: 0
> > ignore_errors: true
> >
> > # poll ssh port until we get a tcp connect
> > - name: wait for node to finish booting
> > become: false
> > local_action: wait_for host=ec2-user
> > port=22
> > state=started
> > delay=5
> > timeout=600
> >
> > # give sshd time to start fully
> > - name: wait for ssh to start fully
> > pause:
> > seconds: 15
> >
> > # wait a few minutes between hosts, unless we're on the last
> > - name: waiting between hosts
> > pause:
> > minutes: 10
> > when: inventory_hostname != ansible_play_hosts[-1]
> >
> > *
> > *
> > *Ansible-Output*
> > PLAY [amazonlinux2]
> >
> ******************************************************************************************************************************************
>
>
> >
> > TASK [Gathering Facts]
> >
> ***************************************************************************************************************************************
>
>
> > [WARNING]: Platform linux on host 10.11.12.13 is using the
> discovered Python interpreter at /usr/bin/python, but
> > future installation of another Python
> > interpreter could change this. See
> >
> https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html
>
> > <
> https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html>
>
> for more information.
> >
> > ok: [10.11.12.13]
> >
> > TASK [apt-get update]
> >
> ****************************************************************************************************************************************
>
>
> > [WARNING]: Updating cache and auto-installing *missing dependency:
> python-apt*
> >
> > fatal: [10.11.12.13]: FAILED! => {"changed": false, "cmd": "apt-get
> update", "msg": "[Errno 2] No such file or
> > directory", "rc": 2}
> >
> > NO MORE HOSTS LEFT
> >
> *******************************************************************************************************************************************
>
>
> >
> > NO MORE HOSTS LEFT
> >
> *******************************************************************************************************************************************
>
>
> >
> > PLAY RECAP
> >
> ***************************************************************************************************************************************************
>
>
> > 10.11.12.13 : ok=1 changed=0 unreachable=0
> failed=1 skipped=0 rescued=0 ignored=0
> >
> >
> > --
> > 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:> <mailto:
> [email protected] <javascript:>>.
> > To view this discussion on the web visit
> >
> https://groups.google.com/d/msgid/ansible-project/21203f8f-5383-47e9-ad8e-feb8cf8cb34f%40googlegroups.com
>
> > <
> https://groups.google.com/d/msgid/ansible-project/21203f8f-5383-47e9-ad8e-feb8cf8cb34f%40googlegroups.com?utm_medium=email&utm_source=footer>.
>
>
>
>
> --
> Ecommerce and Linux consulting + Perl and web application programming.
> Debian and Sympa administration. Provisioning with Ansible.
>
>
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/cd5f05b9-fc16-4599-b2c8-56b8bc825ab3%40googlegroups.com.