在 Ansible 中,角色变量的管理是配置管理中一个常见且重要的任务。今天我们将探讨如何在角色中灵活地定义和使用变量,特别是针对不同操作系统的场景。
背景介绍
假设你有一个名为 my_repo
的角色仓库,其目录结构如下:
my_repo
|- defaults
| |- main.yml
| |- debian.yml
| |- redhat.yml
|- tasks
在这个结构中,defaults/main.yml
定义了通用的默认变量,而 debian.yml
和 redhat.yml
分别定义了针对 Debian 和 Red Hat 系列操作系统的变量。
问题描述
默认情况下,Ansible 不会自动根据主机的操作系统来加载这些特定于操作系统的变量文件。即使你为不同的操作系统定义了变量(如 ssh-package
),这些变量也不会自动应用到对应的操作系统主机上。
解决方案
方法一:使用 include_vars
要解决这个问题,一个有