我开始使用 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