gpt4 book ai didi

conditional-statements - 如果 Apt 包丢失,则 Ansible 执行任务

转载 作者:行者123 更新时间:2023-12-03 14:59:53 26 4
gpt4 key购买 nike

如果缺少特定的 apt 包,我希望执行一系列任务。

例如:

如果未安装 Graphite 碳,请执行以下操作:

- 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>并以某种方式捕获返回码。

最佳答案

看起来我的解决方案有效。

这是我如何让它工作的一个例子:

- shell: dpkg-query -W 'statsd'
ignore_errors: True
register: is_statd

- name: create build dir
file: path=/tmp/build state=directory
when: is_statd|failed

- name: install dev packages for statd build
apt: name={{ item }}
with_items:
- git
- devscripts
- debhelper
when: is_statd|failed

- shell: cd /tmp/build ; git clone https://github.com/etsy/statsd.git ; cd statsd ; dpkg-buildpackage
when: is_statd|failed

....

这是另一个例子:
 - name: test if create_superuser.sh exists
stat: path=/tmp/create_superuser.sh
ignore_errors: True
register: f

- name: create graphite superuser
command: /tmp/create_superuser.sh
when: f.stat.exists == True

……还有一个
- stat: path=/tmp/build
ignore_errors: True
register: build_dir

- name: destroy build dir
shell: rm -fvR /tmp/build
when: build_dir.stat.isdir is defined and build_dir.stat.isdir

关于conditional-statements - 如果 Apt 包丢失,则 Ansible 执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28754155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com