2

Чтобы было ясно, я не прошу "лучший способ" использовать солончак. Я понимаю, что есть множество способов использовать солончак, и то, что работает для вас, работает. Мой вопрос конкретно о странице документации по передовому опыту, найденной здесь.

Сначала я покажу вам, как выглядит моя текущая среда

(Это не относится к моей среде. Я видел этот вопрос раньше, но никогда не на 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

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

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

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

  1. не легко читается

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

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

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

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

РЕДАКТИРОВАТЬ 1

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

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

1 ответ1

2

Я имею дело с различной конфигурацией приложения для каждого типа сервера непосредственно в верхнем файле.

# 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .