我開始使用 ansible 進行設定管理,並想知道如何建立我的 ansible 目錄。例如,web1
是需要進行設定編輯的主機阿帕契和/etc/ssh/sshd_config。jira1
是一個不使用的主機阿帕契,但確實需要進行相同的編輯/etc/ssh/sshd_config。
我的想法是在我的目錄下建立一個庫目錄,並在劇本下方ansible
放置一個。sshd.yml
我可以使用庫的符號連結建立主機目錄:
ansible
|
|
+ library
| |
| +- sshd.yml
| +- apache.yml
| +- nginx.yml
+ web1
| |
| + playbooks
| |
| +- symlink_to_../../library/sshd.yml
| +- symlink_to_../../library/apache.yml
+ jira1
|
+ playbooks
|
+- symlink_to_../../library/sshd.yml
+- symlink_to_../../library/nginx.yml
這消除了重複的.yml
文件,並且 ansible 似乎不介意符號連結。看一眼子目錄,我就可以準確地知道配置給定主機需要/使用哪些劇本。這似乎是一個不錯的方案,但是有更好的方法嗎?
我唯一能想到的另一件事是配備每個劇本,vars/facts
其中包括/排除配置中的每個主機。不過,這似乎還有很長的路要走。每當我從 LAN 新增或刪除主機時,都會編輯每個劇本。
答案1
正如 Konstantin 所寫,您應該擁有這些標準構建塊的角色、每個伺服器類型的群組以及應用這些角色的劇本。所以你的結構會是這樣的:
ansible
|
|
+-roles
| |
| +-sshd
| +-apache
| +-nginx
|
+-playbook_for_group_web.yml
|
+-playbook_for_group_jira.yml