Installing specific apt version with ansible

2019-06-15 03:06发布

问题:

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..."]}

回答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=installed

Regards



回答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={{item}} state=installed update_cache=yes
    with_items:
      - git=1:1.9.1-1ubuntu0.2

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



标签: ansible