看起来,即使已经安装了包,每次调用命令apt install https://github.com/jgraph/drawio-desktop/releases/download/v12.9.3/draw.io-amd64-12.9.3.deb也要花费很长的时间。它实际上是下载包的每一次。
是的,使用ansible是幂等的,状态改变了: no。
- 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"}有什么更简单的解决办法来加速这项工作吗?
发布于 2022-03-10 14:46:18
根据参数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"贷给
进一步Q&A
另一种方法可能是让最新版本包始终在内部可用(缓存),并为本机包管理器提供一个.list文件,指向内部存储库URL (文件共享)。
通过这样做,你就可以用
- name: Install a drawio-desktop .deb package
apt:
name: draw.io
state: latest没有进一步的检查。这将解决所需的更新。
https://stackoverflow.com/questions/71424494
复制相似问题