Чтобы было ясно, я не прошу "лучший способ" использовать солончак. Я понимаю, что есть множество способов использовать солончак, и то, что работает для вас, работает. Мой вопрос конкретно о странице документации по передовому опыту, найденной здесь.
Сначала я покажу вам, как выглядит моя текущая среда
(Это не относится к моей среде. Я видел этот вопрос раньше, но никогда не на stackexchange.com, обычно на солтаке irc)
После того, как я впервые прочитал документацию по подсолке, я попытался реализовать свою собственную среду, но я был озадачен тем, как сделать то, что я хотел, с несколькими проектами, развернутыми с разными пакетами. Вот как выглядит моя первая попытка.
У меня есть три разных проекта, которые нужно развернуть, которые называются
project1, project2 и project3.
/ И т.д. / соль / мастер
file_roots:
base:
- /srv/salt
project1:
- /srv/salt/project1
project2:
- /srv/salt/project2
project3:
- /srv/salt/project3
#I have three projects that I need to deploy to, and each has a dev, qa, and prod machine.
nodegroups:
group-project1: 'L@dev-project1,qa-project1,prod-project1'
group-project2: 'L@dev-project2,qa-project2,prod-project2'
group-project3: 'L@dev-project3,qa-project3,prod-project3'
/srv/salt/top.sls
project1:
'group-project1':
- match: nodegroup
- oraclejava
- tomcat
- iptables-persistent
- postgresql
- apache
project2:
'group-project2':
- snort
- pulledpork
- barnyard
- snorby
- apache
- mysql
project3:
'group-project3':
- match: nodegroup
- oraclejava
- tomcat
- iptables-persistent
- postgresql
- apache
Файловая структура внутри /srv /salt
содержание / срв / соль
/srv/salt/project1, project2, project3, top.sls
содержимое /srv /salt /project1
/srv/salt/project1/oraclejava, tomcat, iptables-persistent, postgresql, ges, apache
содержимое /srv /salt /project2
/srv/salt/project2/snort, pulledpork, barnyard, snorby, apache, mysql
содержимое /srv /salt /project3
/srv/salt/project3/oraclejava, tomcat, iptables-persistent, postgresql, ges, apache
Что мне не нравится в этой настройке
- дубликаты файлов
Если у меня есть проекты, у которых есть общие пакеты, например, у всех трех проектов есть apache, то у меня должен быть каталог apache для каждого проекта внутри их папки. Это не страшно, так как apache не настроен одинаково, но я не думаю, что я пользуюсь организацией, которая позволяет солончак.
- не легко читается
Как вы видите, эта установка довольно сложна для чтения. Мне нужно редактировать свой group-projectx в группах узлов в /etc/salt/master
каждый раз, когда я хочу добавить миньона, связанного с конкретным проектом.
Saltstack лучшие практики
Мой вопрос заключается в том, как бы я реализовал политики передового опыта, упомянутые здесь, в среде, указанной выше. Я знаю, что есть много способов сделать это, но я действительно хочу сделать это так, чтобы это было проще для понимания и не требовало от меня создания нового каталога Apache каждый раз, когда у меня есть сервер с Apache.
Любая помощь приветствуется.
РЕДАКТИРОВАТЬ 1
Несколько предложений, которые я получил, которые не были сделаны через superuser.com, заключались в том, чтобы полностью избавиться от групп узлов и просто указать в файле top.sls, с какими миньонами идти в каком состоянии, используя тот же формат, который я использовал в файл /etc /salt /master (L @ dev-project1, qa-project1, prod-project1).
Кроме того, мне было предложено, что, возможно, я должен просто использовать разные соли-мастера для каждого проекта. Это имеет смысл, и мне нравится этот ответ, но я думаю, что для людей, у которых нет места для виртуальных машин или физических машин, это может быть сложно.