1.什么是主機模式?
答:主機模式是Ansible中用于從Inventory中篩選目標主機的規則,通過靈活的模式定義可精準定位需要執行任務的主機。
2.主機模式的作用
答:篩選目標:從主機清單中選擇一個或多個主機/組,作為Play的hosts參數值(如hosts:lab表示對lab組的主機執行任務)。
簡化操作:通過模式規則替代逐個列舉主機,適用于大規模主機集群。
3.常見主機模式類型及示例
答:通配符模式:用*匹配任意字符,且要放到單引號中如‘*’;
列表模式:精確指定多個主機/組,用逗號分隔,如web01,web02,db01
邏輯運算符:&運算符,如webservers,&prod匹配同時屬于webservers組和prod組的主機
!運算符,如webservers,!dev匹配webservers組中不屬于 dev 組的主機
4.如何管理大型 Playbook
答:當Playbook包含大量任務或Play時,可以將其分成較小的文件以便于管理。比如將多個playbook組合到一個主playbook中,或者將文件中的任務列表插入play。
Ansible支持通過兩種操作將內容放入playbook。您可以包含內容,也可以導入內容。
5.解釋包含和導入及語法
答:導入內容是一個靜態操作。在Playbook解析階段(執行前)處理,被導入的內容會直接合并到主Playbook中。導入外部Playbook用import_playbook,導入任務文件用import_tasks。
???????包含內容是一個動態操作。在Playbook運行階段(執行中)處理,被包含的內容會根據運行時條件動態加載。動態包含任務文件:include_task。
6. 包含和導入的區別
答:靜態導入(Import):解析階段(執行前)處理,不支持loop循環語句,導入內容的標簽可被主 Playbook 識別,適用于固定流程、結構穩定的內容的場景。
???????動態包含(Include):運行階段(執行中)處理,支持loop動態包含多個文件,包含內容的標簽僅在運行時生效,適用于動態條件、靈活調整內容的場景。