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动态包含多个文件,包含内容的标签仅在运行时生效,适用于动态条件、灵活调整内容的场景。