Ansible 库策略?

Ansible 库策略?

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

相关内容