使用ansible安装特定的apt版本

AJP*_*AJP 15 ansible

我使用ansible playbook来安装git:

---
- hosts: "www"
  tasks:
  - name: Update apt repo
    apt: update_cache=yes
  - name: Install dependencies
    apt: name={{item}} state=installed
    with_items:
      - git
Run Code Online (Sandbox Code Playgroud)

我检查了安装的版本:

$ git --version
git version 1.9.1
Run Code Online (Sandbox Code Playgroud)

但是将这些添加到ansible剧本中:

apt: name=git=1.9.1 state=installed
Run Code Online (Sandbox Code Playgroud)

并重新运行导致以下错误:

致命:[46.101.94.110]:失败!=> {"cache_update_time":0,"cache_updated":false,"changed":false,"failed":true,"msg":"'/ usr/bin/apt-get -y -o \"Dpkg ::选项:: = - force-confdef \" - o \"Dpkg :: Options :: = - force-confold \"install'git = 1.9.1''失败:E:版本'1.9.1'代表' git'找不到\n","stderr":"E:版本'1.9.1'找不到'git'\n","stdout":"读取包列表...... \n构建依赖关系树.. .\n读取状态信息...... \n","stdout_lines":["读取包列表......","构建依赖关系树......","读取状态信息......"]}

小智 18

具有该特定版本的Git包如下:

git=1:1.9.1-1ubuntu0.2
Run Code Online (Sandbox Code Playgroud)

你的任务应该是:

apt: name=git=1:1.9.1-1ubuntu0.2 state=installed
Run Code Online (Sandbox Code Playgroud)

问候


Mil*_*eek 7

您不需要两个任务来更新缓存和安装。你的剧本应该是这样的:

---
- hosts: "www"
  tasks:
  - name: Install dependencies
    apt: name={{item}} state=installed update_cache=yes
    with_items:
      - git=1:1.9.1-1ubuntu0.2
Run Code Online (Sandbox Code Playgroud)

请注意,Ansible 支持通配符,因此您不一定需要完整版本的字符串

  • 嘿,谢谢@smiller171。缓存更新有时可能需要很长时间,所以我只是将它分开,以了解 Ansible 脚本的进展情况以及任何失败/问题可能存在的地方。关于通配符,类似于:`- git=*1.9.1*` 会起作用吗? (2认同)