# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) # Copyright: Contributors to the Ansible project - name: Prep package_fact tests - Debian Family block: - name: install python apt bindings - python2 package: name="python-apt" state=present when: ansible_python.version.major|int == 2 - name: install python apt bindings - python3 package: name="python3-apt" state=present when: ansible_python.version.major|int == 3 - name: Gather package facts package_facts: manager: apt - name: check for ansible_facts.packages exists assert: that: ansible_facts.packages is defined - name: Now try again but installing misleading rpm block: - name: install misleading rpm api package: name="python3-rpm" state=present - name: prep outputdir tempfile: path=~ state=directory register: tempdir - name: install misleading rpm 'binary' file file: dest="{{tempdir['path']}}/rpm" state=touch mode='0700' - name: Gather package facts, finding 'rpm' on debian fam (needed for latest version) package_facts: environment: PATH: "${PATH}:{{tempdir['path']}}" - name: check we got packages assert: that: - (ansible_facts.packages | length ) > 0 - name: Same again but this time forcing rpm first package_facts: manager: ['rpm', 'apt'] environment: PATH: "${PATH}:{{tempdir['path']}}" - name: check we got packages assert: that: - (ansible_facts.packages | length ) > 0 always: - package: name="python3-rpm" state=absent - file: path="{{tempdir['path']}}/rpm" state=absent - file: path="{{tempdir['path']}}" state=absent when: ansible_os_family == "Debian" - name: Run package_fact tests - Red Hat Family block: - name: Gather package facts package_facts: manager: rpm - name: check for ansible_facts.packages exists assert: that: ansible_facts.packages is defined when: (ansible_os_family == "RedHat") - name: Run package_fact tests - SUSE/OpenSUSE Family block: - name: install python rpm bindings - python2 package: name="rpm-python" state=present when: ansible_python.version.major|int == 2 - name: install python rpm bindings - python3 package: name="python3-rpm" state=present when: ansible_python.version.major|int == 3 - name: Gather package facts package_facts: manager: rpm - name: check for ansible_facts.packages exists assert: that: ansible_facts.packages is defined when: (ansible_os_family == "openSUSE Leap") or (ansible_os_family == "Suse") - name: Same as those above, but based on pkg_mgr, tests aliases block: - name: Gather package facts package_facts: manager: '{{ ansible_facts["pkg_mgr"] }}' - name: check for ansible_facts.packages exists assert: that: - ansible_facts.packages is defined - ansible_facts.packages | length > 1 when: ansible_facts['os_family'] in ["openSUSE Leap", "Suse", "RedHat", "Debian"] # Check that auto detection works also - name: Gather package facts package_facts: manager: auto - name: check for ansible_facts.packages exists assert: that: ansible_facts.packages is defined - name: Run package_fact tests - FreeBSD block: - name: Gather package facts package_facts: manager: pkg - name: check for ansible_facts.packages exists assert: that: ansible_facts.packages is defined - name: check there is at least one package not flagged vital nor automatic command: pkg query -e "%a = 0 && %V = 0" %n register: not_vital_nor_automatic failed_when: not not_vital_nor_automatic.stdout - vars: pkg_name: "{{ not_vital_nor_automatic.stdout_lines[0].strip() }}" block: - name: check the selected package is not vital assert: that: - 'not ansible_facts.packages[pkg_name][0].vital' - 'not ansible_facts.packages[pkg_name][0].automatic' - name: flag the selected package as vital and automatic command: 'pkg set --yes -v 1 -A 1 {{ pkg_name }}' - name: Gather package facts (again) package_facts: - name: check the selected package is flagged vital and automatic assert: that: - 'ansible_facts.packages[pkg_name][0].vital|bool' - 'ansible_facts.packages[pkg_name][0].automatic|bool' always: - name: restore previous flags for the selected package command: 'pkg set --yes -v 0 -A 0 {{ pkg_name }}' when: ansible_os_family == "FreeBSD"