Có lẽ có nhiều cách tốt hơn để làm điều này và tôi rất mong được nhìn thấy chúng, nhưng những gì tôi đang làm trông rất giống thế này. Lấy từ vai trò fail2ban tùy chỉnh mà tôi đang sử dụng:
Các vars trông như thế này. Tôi có các tệp vars cho mỗi {{ansible_os_family}}
và sau đó ghi đè cho bất kỳ {{ansible_distribution}}_{{ansible_distribution_major_version}}
mà có thể cần chúng.
$ ls -l
lrwxrwxrwx. 1 lỗi lỗi 24 ngày 7 tháng 5 07:51 fail2ban_os_CentOS_6.yml -> fail2ban_os_RedHat_6.yml
lrwxrwxrwx. 1 lỗi lỗi 22 ngày 7 tháng 5 07:51 fail2ban_os_CentOS.yml -> fail2ban_os_RedHat.yml
-rw-rw-r--. 1 lỗi lỗi 64 ngày 7 tháng 5 07:51 fail2ban_os_Debian.yml
-rw-rw-r--. 1 lỗi lỗi 64 ngày 7 tháng 5 07:51 fail2ban_os_Fedora.yml
-rw-rw-r--. 1 lỗi error 62 May 7 07:51 fail2ban_os_RedHat_6.yml
-rw-rw-r--. 1 lỗi lỗi 64 ngày 7 tháng 5 07:51 fail2ban_os_RedHat.yml
-rw-rw-r--. 1 lỗi lỗi 62 Ngày 7 tháng 5 07:51 fail2ban_os_Ubuntu_14.yml
-rw-rw-r--. 1 lỗi lỗi 65 ngày 7 tháng 5 07:51 fail2ban_os_Ubuntu.yml
$ mèo fail2ban_os_Ubuntu.yml
fail2ban_backend: systemd
fail2ban_banaction: iptables-multiport
$ mèo fail2ban_os_Fedora.yml
fail2ban_backend: systemd
fail2ban_banaction: tường lửacmd-ipset
Để tải các tệp này, vai trò/fail2ban/nhiệm vụ/main.yml
bắt đầu như thế này:
---
- include_vars: fail2ban_os_{{ansible_os_family}}.yml
bỏ qua_lỗi: Đúng
- include_vars: fail2ban_os_{{ansible_distribution}}_{{ansible_distribution_major_version}}.yml
bỏ qua_lỗi: Đúng
Điều đó có nghĩa là các tệp biến không cần tồn tại. Tất nhiên, nếu các biến cần thiết không được xác định ở đâu đó, các tác vụ sau này sẽ không thành công và sau đó bạn có thể xác định bất cứ điều gì bạn đã bỏ lỡ.
Để giữ cho mọi thứ nhất quán và có thể bảo trì, các tệp vars của họ hệ điều hành chung chứa các vars đại diện cho các bản phân phối được hỗ trợ gần đây nhất và các phần ghi đè cho các phiên bản bản phân phối cụ thể dành cho các bản phân phối cũ hơn.