Как использовать Ansible для управления мультисервером с конфигурацией мультивеб-сайта?

Я исследовал Ansible для настройки новых серверов, и это работает отлично. Моя игра устанавливает MySQL, Nginx и все остальные. Теперь интересно, что лучший способ состоит в том, чтобы использовать его в качестве инструмента управления конфигурацией также.

Мы выполняем несколько веб-сайтов на каждом сервере. Для меня это означает установку генерала Nginx на каждом сервере и определенной конфигурации, требуемой для каждого сайта/домена. Я имею в виду это, я могу обновить и общую установку и определенную конфигурацию независимо с Ansible, когда мне нужно к (скажем, новое понимание или безопасность).

Что было бы я урожденная, чтобы сделать в этой ситуации? Это требует, чтобы я сохранил переменную, которая содержит все сайты и на котором сайте они? Или, есть ли лучшие альтернативы?

3
задан 14 October 2015 в 23:24
2 ответа

Особенностью шаблона, которая может быть очень полезна для этой цели, является его возможность создания шаблонов.

Модуль шаблон позволяет развернуть файл с уникальными значениями для каждого хоста. Имя хоста, над которым в настоящее время ведется работа, сохраняется в переменных inventory_hostname и inventory_hostname_short (последняя является первым пунктирным компонентом имени хоста).

Вы можете сохранить переменные, специфичные для хоста, в словаре в group_vars / all. Например:

www_sites: {
    host1: "www.mysite1.com",
    host2: "www.mysite2.com",
  }

Тогда шаблон для файла конфигурации nginx может включать что-то вроде следующих строк:

server {
  listen       80;
  server_name  {{ www_sites[inventory_hostname_short] }};
  access_log   logs/{{ www_sites[inventory_hostname_short] }}.access.log  main;

Документацию по языку шаблонов Jinja2, используемому Ansible, можно найти здесь .

0
ответ дан 3 December 2019 в 07:26

Я использую переменные, чтобы делать определенные вещи с этим хостом. Мой совет - сгруппируйте как можно больше хостов в группы и используйте групповые переменные. Помните, что плейбуки Ansible отлично подходят для управления версиями в git или SVN, поэтому вы можете отслеживать свои изменения.

Что-то, что может сработать для вас, - это использовать vars_prompt , особенно если вы не запускаете свой playbooks, запланированные на cron.

Надеюсь, это поможет!

1
ответ дан 3 December 2019 в 07:26

Теги

Похожие вопросы