'Installing specific apt version with ansible

I used an ansible playbook to install git:

---
- hosts: "www"
  tasks:
  - name: Update apt repo
    apt: update_cache=yes
  - name: Install dependencies
    apt: name={{item}} state=installed
    with_items:
      - git

I checked the installed versions:

$ git --version
git version 1.9.1

But adding these to the ansible playbook: apt: name=git=1.9.1 state=installed

and rerunning results in the following error:

fatal: [46.101.94.110]: FAILED! => {"cache_update_time": 0, "cache_updated": false, "changed": false, "failed": true, "msg": "'/usr/bin/apt-get -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" install 'git=1.9.1'' failed: E: Version '1.9.1' for 'git' was not found\n", "stderr": "E: Version '1.9.1' for 'git' was not found\n", "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\n", "stdout_lines": ["Reading package lists...", "Building dependency tree...", "Reading state information..."]}



Solution 1:[1]

Git package with that specific version is as follows:

git=1:1.9.1-1ubuntu0.2

Your task should be:

apt: name=git=1:1.9.1-1ubuntu0.2 state=present

Regards

Solution 2:[2]

You don't need two tasks for updating cache and installing. Your playbook should look like:

---
- hosts: "www"
  tasks:
  - name: Install dependencies
    apt:
      name:
        - git=1:1.9.1-1ubuntu0.2
      state: installed
      update_cache: yes

note that Ansible supports wildcarding so you don't necessarily need the full version string

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 badbishop
Solution 2