- name: show python version debug: var=ansible_python_version - name: use python-apt set_fact: python_apt: python-apt when: ansible_python_version | version_compare('3', '<') - name: use python3-apt set_fact: python_apt: python3-apt when: ansible_python_version | version_compare('3', '>=') # UNINSTALL 'python-apt' # The `apt` module has the smarts to auto-install `python-apt`. To test, we # will first uninstall `python-apt`. - name: check {{ python_apt }} with dpkg shell: dpkg -s {{ python_apt }} register: dpkg_result ignore_errors: true - name: uninstall {{ python_apt }} with apt apt: pkg={{ python_apt }} state=absent purge=yes register: apt_result when: dpkg_result|success # UNINSTALL 'hello' # With 'python-apt' uninstalled, the first call to 'apt' should install # python-apt. - name: uninstall hello with apt apt: pkg=hello state=absent purge=yes register: apt_result - name: check hello with dpkg shell: dpkg-query -l hello failed_when: False register: dpkg_result - name: verify uninstallation of hello assert: that: - "'changed' in apt_result" - "dpkg_result.rc == 1" # UNINSTALL AGAIN - name: uninstall hello with apt apt: pkg=hello state=absent purge=yes register: apt_result - name: verify no change on re-uninstall assert: that: - "not apt_result.changed" # INSTALL - name: install hello with apt apt: name=hello state=present register: apt_result - name: check hello with dpkg shell: dpkg-query -l hello failed_when: False register: dpkg_result - debug: var=apt_result - debug: var=dpkg_result - name: verify installation of hello assert: that: - "apt_result.changed" - "dpkg_result.rc == 0" - name: verify apt module outputs assert: that: - "'changed' in apt_result" - "'stderr' in apt_result" - "'stdout' in apt_result" - "'stdout_lines' in apt_result" # INSTALL AGAIN - name: install hello with apt apt: name=hello state=present register: apt_result - name: verify no change on re-install assert: that: - "not apt_result.changed" # UNINSTALL AGAIN - name: uninstall hello with apt apt: pkg=hello state=absent purge=yes register: apt_result # INSTALL WITH VERSION WILDCARD - name: install hello with apt apt: name=hello=2.* state=present register: apt_result - name: check hello with wildcard with dpkg shell: dpkg-query -l hello failed_when: False register: dpkg_result - debug: var=apt_result - debug: var=dpkg_result - name: verify installation of hello assert: that: - "apt_result.changed" - "dpkg_result.rc == 0" - name: check hello version shell: dpkg -s hello | grep Version | awk '{print $2}' register: hello_version - name: check hello architecture shell: dpkg -s hello | grep Architecture | awk '{print $2}' register: hello_architecture - name: uninstall hello with apt apt: pkg=hello state=absent purge=yes - name: install deb file apt: deb="/var/cache/apt/archives/hello_{{ hello_version.stdout }}_{{ hello_architecture.stdout }}.deb" register: apt_initial - name: install deb file again apt: deb="/var/cache/apt/archives/hello_{{ hello_version.stdout }}_{{ hello_architecture.stdout }}.deb" register: apt_secondary - name: verify installation of hello assert: that: - "apt_initial.changed" - "not apt_secondary.changed" - name: uninstall hello with apt apt: pkg=hello state=absent purge=yes - name: force install of deb apt: deb="/var/cache/apt/archives/hello_{{ hello_version.stdout }}_{{ hello_architecture.stdout }}.deb" force=true register: dpkg_force - name: verify installation of hello assert: that: - "dpkg_force.changed" # NEGATIVE: upgrade all packages while providing additional packages to install - name: provide additional packages to install while upgrading all installed packages apt: pkg=*,test state=latest ignore_errors: True register: apt_result - name: verify failure of upgrade packages and install assert: that: - "not apt_result.changed" - "apt_result.failed" - name: autoclean during install apt: pkg=hello state=present autoclean=yes - name: autoclean apt: autoclean=yes - name: autoremove apt: autoremove=yes