Чтобы было ясно, я не прошу «лучший способ» использовать солончак. Я понимаю, что есть множество способов использовать солончак, и то, что работает для вас, работает. Мой вопрос конкретно о странице документации по передовому опыту, найденной здесь .
Сначала я покажу вам, как выглядит моя текущая среда
(Это не относится к моей среде. Я видел этот вопрос раньше, но никогда не на 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).
Кроме того, мне было предложено, что, возможно, я должен просто использовать разные соли-мастера для каждого проекта. Это имеет смысл, и мне нравится этот ответ, но я думаю, что для людей, у которых нет места для виртуальных машин или физических машин, это может быть сложно.