Динамическая отправка значений в манифест манипулятора от Дженкинса - PullRequest
0 голосов
/ 12 февраля 2020

Мы используем puppet manifest / hiera для создания mysql docker экземпляров на указанном c сервере. Каждый раз, когда появляется запрос на новую БД, мы вручную добавляем новую запись в hiera, которая выбирается манифестом, и создается экземпляр docker. Теперь нам нужно автоматизировать этот процесс через Дженкинса. Есть ли способ, которым я могу динамически отправлять значения в hiera или иметь какой-нибудь файл, расположенный в агентской системе, и агент puppet напрямую ссылается на этот файл, чтобы заполнить значения переменных, указанных в манифесте. Я думаю о следующих вариантах. 1. Добавьте новую запись в hiera от jenkins и зафиксируйте файл (мы поддерживаем файлы в git), чтобы этот файл использовался агентом puppet. Это связано с небольшим риском сбоя из-за нескольких коммитов 2. Если в агентской системе есть какой-то файл, агент puppet обращается к этому файлу для создания новых docker экземпляров. 3. Есть ли другой способ добиться этого?

Я ценю ваши мысли.

1 Ответ

1 голос
/ 12 февраля 2020

Я думаю о следующих вариантах. 1. Добавьте в hiera новую запись от jenkins и зафиксируйте файл (мы поддерживаем файлы в git), чтобы этот файл использовался агентом puppet. Это связано с небольшим риском сбоя из-за нескольких коммитов.

Оставляя в стороне путаницу в отношении того, какой компонент использует Hiera для доступа к данным, да, это жизнеспособный вариант. Вероятно, также самый простой, поскольку он представляет собой простую автоматизацию вашего текущего процесса.

Если в агентской системе есть какой-то файл, агент марионеток обращается к этому файлу для создания новых docker экземпляров.

Мне кажется возможным, но откуда этот файл? и как он получает правильное содержимое? Если ответ «Кукольный управляет этим», значит, вы ничего не решили с этим. Однако, если ответом будет что-то еще, то комбинация представляет собой крайне плохой стиль, и в какой-то момент она, скорее всего, укусит вас.

Есть ли другой способ добиться этого?

Лоты. Но среди тех, которые кажутся наиболее привлекательными, есть возможность добавить Hiera back-end , который получает данные из базы данных вместо простого файла. Затем Jenkins может хранить данные в базе данных, а Puppet может читать их оттуда через Hiera с любым уровнем изоляции транзакций и ссылочной целостности, который вам нравится. Имейте в виду, что вам не нужно переключать на это, потому что одна и та же конфигурация Hiera может извлекать данные из нескольких внутренних блоков. Существуют бэкэнды Hiera для некоторых СУБД, или, если вы предпочитаете, написать свою собственную не составит труда.

...