如果已安装,请跳过软件包下载



我正在使用ansible来安装deb软件包,如果软件包已经安装,我不想下载远程文件。目前我这样做:

- name: Check if elasticsearch installed
become: true
stat: path=/etc/elasticsearch/elasticsearch.yml
register: st
- name: Install elasticsearch
become: yes
apt:
deb: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.12.deb
update_cache: true
state: present
when: not st.stat.exists

如果已经安装了 deb 包,有没有更好的方法来跳过它的下载?

你会想要package_facts,或者,当然,只是作弊并掏出类似command: dpkg --search elasticsearch

- name: gather installed packages
package_facts:
- name: Install elasticsearch
when: elasticsearch not in ansible_facts.packages

除非您的问题是关于如何做到这一点,当 elasticsearch 可能是手动安装的,而不是通过dpkg安装时,在这种情况下,您的stat:register:方法是明智的。您甚至可能希望使用with_items:来检查文件可能已安装的几个位置,具体取决于您的情况

最新更新