如果缺少特定的 apt 软件包,我希望执行一系列任务。
例如:
如果未安装石墨碳,请执行以下操作:
- apt: name=debconf-utils state=present
- shell: echo 'graphite-carbon/postrm_remove_databases boolean false' | debconf-set-selections
- apt: name=debconf-utils state=absent
另一个例子:
如果未安装 statsd,请执行以下操作:
- file: path=/tmp/build state=directory
- shell: cd /tmp/build ; git clone https://github.com/etsy/statsd.git ; cd statsd ; dpkg-buildpackage
- shell: dpkg -i /tmp/build/statsd*.deb
我该如何开始破解这个问题呢?
我想也许我可以做一个-shell: dpkg -l|grep <package name>
并以某种方式捕获返回代码。
您可以使用包事实 https://docs.ansible.com/ansible/latest/collections/ansible/builtin/package_facts_module.html#ansible-builtin-package-facts-package-information-as-facts模块(需要 Ansible 2.5):
- name: Gather package facts
package_facts:
manager: apt
- name: Install debconf-utils if graphite-carbon is absent
apt:
name: debconf-utils
state: present
when: '"graphite-carbon" not in ansible_facts.packages'
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)