我想安裝我的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. 如何檢測系統上現有的「已暫停」安裝?
- 4. 如何檢測安裝在系統上的Windows媒體包
- 5. 如何檢測Linux上的慢速文件系統?
- 6. Javascript:操作系統檢測...如果在Linux上
- 7. 如何在Windows 10上的Linux子系統上安裝RVM
- 8. 如何在Linux系統中安裝tcl
- 9. linux - 檢測系統時間的變化
- 10. 在Linux系統上的Apache 2.2服務器上安裝PHP
- 11. 如何檢測是否在linux機器上安裝了tomcat和ant
- 12. 在Linux系統上安裝Opencv
- 13. 如何檢查mysql是否安裝在linux機器上?
- 14. Linux操作系統:如何檢查驅動器是否被安裝到NFS
- 15. 系統檢測(Windows,Mac OS X或Linux)
- 16. 如何在linux機器上安裝「Gerrit」沒有任何錯誤?
- 17. 在Windows和Linux上檢測操作系統和Java
- 18. 系統覆蓋檢測器
- 19. 如何檢測SUSE Linux系統中的音頻可用性
- 20. 如何在Linux系統上運行liquibase
- 21. 在64位系統上檢測32位程序的安裝
- 22. NSIS - 在x64系統上檢測java安裝的問題
- 23. 如何在脫機Linux機器上安裝nltk的english.pickle
- 24. 如何在類Linux操作系統上自動安裝過程?
- 25. 如何在Windows上安裝pytorch Linux子系統
- 26. 如何清除Linux CentOS系統上主系統驅動器上的空間?
- 27. 如何在Linux/Windows機器上運行Android操作系統中的C++程序
- 28. 準系統Linux服務器安裝
- 29. 如何在AIX機器上找到系統日誌
- 30. 如何在基於Yocto的系統上安裝主機命令