Saltstack лучшие практики разъяснение документации

чтобы быть ясным, я не прошу "лучший способ" использовать 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

что мне не нравится в этой установке

  1. дублировать файлы

если у меня есть проекты, которые имеют общие пакеты, например, все три проекта имеют apache, то у меня должен быть каталог apache для каждого проекта внутри их папки. Это не ужасно, так как apache не настроен одинаково, но я не думаю, что использую организацию, которую позволяет saltstack.

  1. не легко читаемый

как вы можете видеть, Эта настройка довольно сложна для чтения. Я должен отредактировать свой group-projectx в nodegroups в /etc/salt/master файл каждый раз, когда я хочу добавить миньона, связанного с конкретным проектом.

Saltstack лучшие практики

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

любая помощь приветствуется.

изменить 1

пара предложений, которые я получил, что не через superuser.com были избавиться от nodegroups все вместе, и просто укажите в верхней.sls-файл, который миньоны идут с каким состоянием,используя тот же формат,который я использовал в файле /etc/salt/master (L@dev-project1, qa-project1, prod-project1).

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

14
задан trueCamelType
29.03.2023 12:49 Количество просмотров материала 3285
Распечатать страницу

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

тогда я делаю то же самое для моих данных столба, что позволяет мне назначать различные столбы для некоторых хостов, так что это единственный дубликат данных, которые у меня есть в соли, с теми же ключами столба, но разные значения для настройки моей среды, как мне нужно. Я тогда скажем, одно состояние apache, и все, что зависит от среды в нем, отображается со значением в моем столбе.

в вашей колонне, вы могли бы, например:

/top.sls
/apache /
        | init.sls
        | project1.sls
        | project2.sls
        | project3.sls
2
отвечен Val F. 2023-03-30 20:37

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх