LINUX.ORG.RU
ФорумAdmin

Puppet. Вызвать module из-за пределов environments

 environments,


0

2

На каждой площадке свою окружение (хосты и модули):

root@puppet:/etc/puppet# tree environments -L 1
environments
├── area1
├── area2
├── area3
└── area4
А есть, к примеру zabbixagent и bacula-fd он одинаков для всех площадок:
root@puppet:/etc/puppet# tree modules -L 1
modules
├── apt
├── bacula-fd
├── chocolatey
├── stdlib
└── zabbixagent
Задача: В окружениях areaX использовать модуль из /etc/puppet/modules (так сказать «Общий»). Возможно. Что конфигурировать? Как вызывать в манифестах?

★★★★★

Когда-то можно было выставить глобальный modulepath для таких модулей вне окружений, теперь пишут, что глобально нельзя, но можно добавить кастомный путь для каждого из окружений https://docs.puppet.com/puppet/5.0/configuration.html#modulepath

Идеологически видится правильнее пользоваться r10k и деплоить одинаковые модули в каждое окружение.

zfree
()
Ответ на: комментарий от zfree

Идеологически видится правильнее пользоваться r10k и деплоить одинаковые модули в каждое окружение.

Оoo, не задумывался. А к r10k по другим причинам присматриваюсь.

petav ★★★★★
() автор топика
Ответ на: комментарий от petav

А если быть точнее Git Workflow and Puppet Environments сомтрел, но пока не понял как это в руках держать. Каждое окружение это git репозиторий. Как только в ветке master появляется обновление это сразу отражается в puppet окружении. Идея нравится.

Пока не понял, можно ли как-то использовать это для описанной мной задачи не прибегая к r10k. И пока не понял какие преимущества у того и другого. Повторяют ли они функц, может их вместе использовать. На свои вопросы найду ответы, но если кто-то даст пару коммментариев буду благодарен.

petav ★★★★★
() автор топика
Ответ на: комментарий от petav

При использовании r10k обычный подход - репозиторий для Puppetfile (каждая ветка - окружение) + по репозиторию на каждый модуль (они как раз и описываются в Puppetfile с указанием версий) + часть модулей можно ставить из Puppetforge или github. Соответственно при выполнении r10k deploy будут создаваться окружения в соответствии с тем, какие модули описаны в Puppetfile каждой ветки основного репозитория. Так достаточно просто тестировать разные версии модулей в разных окружениях. В целом никто не запрещает рядом с Puppetfile положить environment.conf, в котором через modulepath указать где еще искать модули.

Статья по ссылке выше достаточно старая, вот как минимум апдейт к ней https://puppet.com/blog/git-workflows-puppet-and-r10k Неплохие статьи можно почитать здесь http://garylarizza.com/

zfree
()
Ответ на: комментарий от zfree

zfree, не писал долго, размышлял. Да! Удобный подход.

А как быть сейчас? Есть старый вариант (класический) и этот r10k+git. Развернуть вторую исталяцию puppet или как-то совместить?

petav ★★★★★
() автор топика
Последнее исправление: petav (всего исправлений: 1)
Ответ на: комментарий от petav

Если версия ниже 4.0, то можно modulepath добавить в глобальный конфиг и будет как в изначальной задаче. С версиями новее надо в каждом окружении environment.conf для этого создавать (его можно положить рядом с Puppetfile и будет совмещение при использовании r10k).

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

zfree
()
7 ноября 2017 г.
Ответ на: комментарий от zfree

Итак:

  • Поднимаем puppet
  • Прикручиваем r10k

В результате получается:

  • Git репозиторий с именем «Puppetfile» где кажадя ветка окружение
  • Создаем изолированные Git репозитории для модулей: репозиторий для модуля 1,2,2
  • При работе над модулями в Git используем маркерs версии
  • В Puppetfile указываем какие модули и каких версий и где они лежат в Git (если ткнете на синтаксис буду благодарен)

Получается красиво и удобно. Сазда новую ветку в Puppetfile полчил новое окружение. В это окружение подключил нужные модули нужных версий.

Задача №2. Отделить данные от манифеста. Хочется из манифестов вывести данные, для этих целей предлагется использовать hiera, как ее правильно внедрить в описанное выше?

petav ★★★★★
() автор топика
Ответ на: комментарий от petav

По поводу синтаксиса Puppetfile, можно посомтреть тут https://github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd

С hiera скорее дело вкуса и проектирования. Можно, например, хранить что-то в репозитории с Puppetfile - фактически это корень окружения, тогда в конфиге можно пользоваться конструкциями вида :datadir: «<path_to_environments_dir>/%{::environment}/hieradata»

Собственно никто не запрещает использовать и какой-либо модуль в качестве хранилища, равно как и хранить hiera абсолютно независимо.

zfree
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.