即使包已经安装,每次调用命令apt install https://github.com/jgraph/drawio-desktop/releases/download/v12.9.3/draw.io-amd64-12.9.3.deb
也可能需要很长时间。它实际上是每次下载软件包。
是的,ansible是幂等性,状态改变:否。
- name: Install a drawio-desktop .deb package
apt:
deb: https://github.com/jgraph/drawio-desktop/releases/download/v12.9.3/draw.io-amd64-12.9.3.deb
when: ansible_facts['lsb']['id'] == "Ubuntu"
tags:
- debug
- not-macos
如果安装了软件包,有没有跳过下载的捷径?
理想情况下是在name
中说,如果不是从deb: url
安装,我想安装draw.io
,否则考虑安装。
- name: Install a drawio-desktop .deb package
apt:
name: draw.io
deb: https://github.com/jgraph/drawio-desktop/releases/download/v12.9.3/draw.io-amd64-12.9.3.deb
但不是像那样工作
TASK [desktop : Install a drawio-desktop .deb package] *********
fatal: [tuxedo]: FAILED! => {"changed": false, "msg": "parameters are mutually exclusive: deb|package|upgrade"}
有没有建议用一个更轻松的解决方案来加快任务?
行为似乎是根据参数deb
Ansible将在安装之前尝试下载deb。
和apt.py.的当前来源
因此,您可以查看模块package_facts
- name: Gather Package Facts
package_facts:
manager: apt # default ["auto"]
以及的条件示例
when: "ansible_facts['lsb']['id'] == 'Ubuntu' and 'draw.io' not in ansible_facts.packages"
的积分
- 如何使用Ansible获取已安装的apt包
进一步的问答;A
- Ansible:如果缺少apt包,则执行任务
另一种方法可能是让最新的包始终在内部(缓存(可用,并为本机包管理器提供指向内部存储库URL(文件共享(的.list
文件。
通过这样做,你就可以使用
- name: Install a drawio-desktop .deb package
apt:
name: draw.io
state: latest
而无需进一步检查。这也将解决所需的更新。