Разъяснение документации по передовым методам Saltstack
Чтобы было ясно, я не прошу "лучший способ" использовать солончак. Я понимаю, что есть множество способов использовать солончак, и то, что работает для вас, работает. Мой вопрос конкретно о странице документации по передовому опыту, найденной здесь.
Сначала я покажу вам, как выглядит моя текущая среда
(Это не относится к моей среде. Я уже видел этот вопрос раньше, но никогда не на stackexchange.com, обычно на солтаке irc)
После того, как я впервые прочитал документацию по подсолке, я попытался реализовать свою собственную среду, но я был озадачен тем, как добиться того, чего я хотел, с несколькими проектами, развернутыми с разными пакетами. Вот как выглядит моя первая попытка.
У меня есть три разных проекта, которые нужно развернуть, которые называются
проект1, проект2 и проект3.
/ И т.д. / соль / мастер
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
Несколько предложений, которые я получил, которые не были сделаны через usersuper.ru, заключались в том, чтобы полностью избавиться от групп узлов и просто указать в файле top.sls, с какими миньонами и в каком состоянии идти, используя тот же формат, который я использовал в файл / etc / salt / master (L@dev-project1,qa-project1,prod-project1).
Кроме того, мне было предложено, что, возможно, я должен просто использовать разные соли мастера для каждого проекта. Это имеет смысл, и мне нравится этот ответ, но я думаю, что для людей, у которых нет места для виртуальных машин или физических машин, это может быть сложно.
1 ответ
Я имею дело с различной конфигурацией приложения для каждого типа сервера непосредственно в верхнем файле.
# per server hostname : ie.
base:
'websrv*':
- oraclejava
- tomcat
- iptables-persistent
- postgresql
- apache
'monsrv*':
- snort
- pulledpork
- barnyard
- snorby
- apache
- mysql
Если ваши имена миньонов не позволяют вам классифицировать их на основе регулярных выражений, вы можете сделать то же самое с зернами.
# per server grains : ie.
base:
'G@role:websrv': # or even a custom grain like 'G@project:1'
- oraclejava
- tomcat
- iptables-persistent
- postgresql
- apache
'G@role:monitoring': # or even a custom grain like 'G@project:1'
- snort
- pulledpork
- barnyard
- snorby
- apache
- mysql
Затем я делаю то же самое для своих данных столпа, позволяя мне назначать разные столбы некоторым хостам, чтобы это были единственные дубликаты данных, которые у меня есть в Salt, с теми же ключами столба, но с разными значениями для настройки среды, в которой я нуждаюсь. Затем я скажу одно состояние Apache, и все, что является специфическим для него окружением, будет отображаться со значением в моем столбе.
В вашем столбе вы могли бы иметь, например:
/top.sls
/apache /
| init.sls
| project1.sls
| project2.sls
| project3.sls