如果已经安装则跳过包下载

Skip package download if already installed

我正在使用 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 或者,当然,只是作弊 shell 像 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: 检查文件可能已安装的几个位置,具体取决于您的情况