我想安装我的dotfiles /机器bootstrap东西与可靠,我想安装一堆GUI工具,但只有当我在一台支持它的机器上。我正在使用ansible_os_family == 'Debian'
来检测apt-get会起作用。不知道如何检查,例如,是否安装了gtk或类似的东西。Ansible - 如何检测到您在装有GUI系统的Linux机器上?
1
A
回答
4
Ansible有很多support for package managers,并且很乐意与apt合作。不幸的是,目前还没有一种方法可以检查使用此模块是否安装了软件包。但是,这可以通过注册命令的结果来完成。像这样的东西应该工作:
- name: Check if gtk is installed
command: dpkg-query -l gtk
register: gtk_check
- name: Install GTK application
apt: name=gtk-program state=present
when: gtk_check.stdout.find('no packages found') != -1
1
我建议在看由该服务上运行Ansible,看看是否有您可以检查特定的事实,报道事实。从Ansible FAQ只需运行此看到所有的事实:
ansible -m setup hostname
如果没有提供任何有用的东西,则下一个选项是要运行的任务,并将结果保存到您可以测试一个变量。该任务可能会调用命令,检查是否安装了软件包等。
前一段时间,我不得不编写一本可能最终在redhat或debian系统上运行的操作手册,因此我需要检查是否yum已安装,并且基于此确保安装了python-apt或其他一些redhat软件包。以下是我最后做它:
- name: Check if yum exists
stat: path=/usr/bin/yum
register: yum
# The python-apt package must be installed before the apt module below
# can be invoked...
- name: Check if python-apt is installed
shell: dpkg -l python-apt | grep python-apt
register: apt_status
when: yum.stat.exists == False
- name: Install python-apt
command: apt-get install -y python-apt
when: yum.stat.exists == False and apt_status.stdout.find('un') == 0
# procmail & postfix are needed for the lockfile command & ability to
# send e-mail
- name: Install required packages
yum: pkg={{ item }} state=present
with_items:
- procmail
- postfix
when: yum.stat.exists == True
的第一个任务只是检查是否在/ usr/bin中/ yum的存在,在一个名为“荫”变量存储结果。第二个任务将检查python-apt是否仅在yum不存在的情况下安装(所以假设缺少yum表示这实际上是一个debian系统)。第三个任务强制python-apt只在不存在的情况下安装(它是一个debian系统)。只有当yum存在时,最后一项任务才会通过yum安装一些软件包。
这有点冗长,但使用上述一种或两种方法应该可以帮助您找出确定GUI是否安装的最佳方法。您可以通过shell或命令模块(运行级别5通常表示X11正在运行)调用/ sbin/runlevel,或者像上面那样调用dpkg来测试是否安装了特定软件包。或者您可以简单地使用stat模块来查看是否存在像/ etc/X11/xinit/xinitrc这样的路径或文件。然后,只需要将任务结果注册到变量并在后续任务中使用适当的“when”子句。
相关问题
- 1. 如何检测Linux上挂起的系统关机?
- 2. 如何检测安装在系统中的所有浏览器?
- 3. 如何检测安装在系统上的Windows媒体包
- 4. Javascript:操作系统检测...如果在Linux上
- 5. linux - 检测系统时间的变化
- 6. 如何检测是否在linux机器上安装了tomcat和ant
- 7. 在Linux系统上安装Opencv
- 8. 如何在linux机器上安装“Gerrit”没有任何错误?
- 9. 系统检测(Windows,Mac OS X或Linux)
- 10. 如何在Linux系统上运行liquibase
- 11. 如何在脱机Linux机器上安装nltk的english.pickle
- 12. NSIS - 在x64系统上检测java安装的问题
- 13. 如何在Windows上安装pytorch Linux子系统
- 14. 准系统Linux服务器安装
- 15. 如何在AIX机器上找到系统日志
- 16. 如何在基于Yocto的系统上安装主机命令
- 17. 在远程Linux机器上重新加载操作系统
- 18. 在Linux机器上调用系统调用
- 19. 如何正确检测Windows,Linux和Mac操作系统
- 20. 在Linux系统上找不到图像
- 21. 如何检测我在运行Unity的系统上的时间?
- 22. 如何检查Java是否安装在我的Windows系统上?
- 23. 安装在机器上的操作系统列表
- 24. 检测系统用户关机
- 25. 使用Powershell检测系统关机
- 26. 如何检测字节序的系统
- 27. 检测在linux机器上运行的java程序
- 28. 如何检测在Linux中通过GUI登录的用户
- 29. 如何在windows系统上安装geckodriver
- 30. Clickonce - 引用的程序集未安装在您的系统上