Я начинаю использовать ansible для управления конфигурацией и задаюсь вопросом, как структурировать свой каталог ansible. Например, web1
это хост, которому необходимо внести изменения в конфигурацию Apache и / и т.д. / SSH / sshd_config. jira1
это хост, который не использует Apache, но нужно внести те же изменения в / и т. д. / 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
files и ansible, похоже, не возражают против символических ссылок. Заглянув в подкаталог, я могу точно сказать, какие плейбуки необходимы / используются для настройки данного хоста. Это кажется хорошей схемой, но есть ли способ лучше?
Единственное, что я могу придумать, - это снабдить каждую пьесу vars/facts
которые включают / исключают каждый отдельный хост из конфигурации. Хотя это кажется долгим путем; редактировать каждую книгу воспроизведения каждый раз, когда я добавляю или удаляю хост из локальной сети.
Как писал Константин, у вас должны быть роли для этих стандартных строительных блоков, группы для каждого типа сервера и сценарии для применения этих ролей. Итак, ваша структура будет примерно такой:
ansible
|
|
+-roles
| |
| +-sshd
| +-apache
| +-nginx
|
+-playbook_for_group_web.yml
|
+-playbook_for_group_jira.yml