чтобы быть ясным, я не прошу "лучший способ" использовать saltstack. Я понимаю, что есть куча способов использовать saltstack, и то, что работает для вас, работает. Мой вопрос конкретно о странице документации лучших практик, найденной здесь.
сначала я покажу вам, как выглядит мое текущее окружение
(это не относится к моему окружению. Я видел этот вопрос раньше, но никогда stackexchange.com, обычно на saltstack irc)
после прочтения документации saltstack в первый раз, я попытался реализовать свою собственную среду, но я был смущен тем, как сделать то, что я хотел с несколькими проектами, которые все развертываются с разными пакетами. Вот как выглядит моя первая попытка.
у меня есть три различных проекта, которые должны быть развернуты под названием
project1,project2, и project3.
/ etc / salt / master
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
/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 не настроен одинаково, но я не думаю, что использую организацию, которую позволяет saltstack.
- не легко читаемый
как вы можете видеть, Эта настройка довольно сложна для чтения. Я должен отредактировать свой group-projectx в nodegroups в /etc/salt/master
файл каждый раз, когда я хочу добавить миньона, связанного с конкретным проектом.
Saltstack лучшие практики
мой вопрос, как мне реализовать лучший политик упомянул здесь в условиях, указанных выше. Я знаю, что есть много способов сделать это, но я действительно хочу сделать это таким образом, чтобы это было легче понять и не заставляло меня создавать новый каталог apache каждый раз, когда у меня есть сервер с apache на нем.
любая помощь приветствуется.
изменить 1
пара предложений, которые я получил, что не через superuser.com были избавиться от nodegroups все вместе, и просто укажите в верхней.sls-файл, который миньоны идут с каким состоянием,используя тот же формат,который я использовал в файле /etc/salt/master (L@dev-project1, qa-project1, prod-project1).
кроме того, мне было предложено, что, возможно, я должен просто использовать другой солевой мастер для каждого проекта. Это имеет смысл, и мне нравится этот ответ, но я думаю для людей, у которых нет много места для виртуальных машин или физических машин, это может быть сложно.