如果已经安装则跳过包下载
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:
检查文件可能已安装的几个位置,具体取决于您的情况
我正在使用 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:
检查文件可能已安装的几个位置,具体取决于您的情况