@puppet_ru

Страница 99 из 112
Protos
19.09.2018
17:21:41
class test { $name_1 = hiera('') $name_2 = hiera('') } class test2 inherits test { $filename = $name_1 $line = $name_2 file { "": content => template('test.erb'), mode => '0775', owner => $, group => $, } -> exec { "1": command => "python $test", user => $, group => $, path => $, timeout => 0, require => File["test"], } }

Если грубо то такое дерьмо

И там дальше class test3 inherits test

Google
Protos
19.09.2018
17:22:38
Внутри тот же состав только $filename = $name_3 например

Xeniya MTS
19.09.2018
17:23:01
сорри, я пойду работать, потом продолжим :)

ptchol
19.09.2018
17:23:47
Переменная $test что содержит ?

name1 name2 ?

Protos
19.09.2018
17:24:13
Вот эта?

ptchol
19.09.2018
17:24:25
Да

Protos
19.09.2018
17:24:28
Да просто указание на имя питон файла

name1 name2 ? что то типа такого 'JAVA_OPTIONS="${JAVA_OPTIONS}"'

ptchol
19.09.2018
17:25:09
Оно так не будет работать

Protos
19.09.2018
17:25:20
ptchol
19.09.2018
17:26:02
У тебя вариант тока в качестве аргументов в exec передавать переменные

Если я правильно понял ты типа хочешь сгенерить файлик с параметрами, запустить потом перегенер ть его опять запустить и так цать раз

Google
Protos
19.09.2018
17:27:15
С разным наполнением каждый раз

Protos
19.09.2018
17:28:00
А что бы не ебать голову себе манифестами просто кривое переопределение запилить

ptchol
19.09.2018
17:28:16
Не, так с паппетом не выйдет. Либо параметризировать скрипт либо разные скрипты чкладывать

ptchol
19.09.2018
17:29:05
Дело же не в манифестах

Смотри, паппет описывает конечное состояние, а ты пытаешься определить 5 состояний

ptchol
19.09.2018
17:31:27
Тоесть какбы можно сделать так чтобы у файла было одно состояние, отрендереного скрипта. А вот экзеков насоздавать вагон

Protos
19.09.2018
17:31:36
Но по факту я просто хочу определить 5 состояний одного файла

Последовательно

ptchol
19.09.2018
17:32:06
Невозможно

Даже не трать время

Protos
19.09.2018
17:32:45
Ну в экзек мне параметр не передать

ptchol
19.09.2018
17:33:20
Почему ?

Xeniya MTS
19.09.2018
17:35:20
Невозможно
динамик фактс?

Protos
19.09.2018
17:35:32
Почему ?
А как ты предлагаешь мне темплейт генерить? Или передать сразу в питон скрипт параметр?

Google
Protos
19.09.2018
17:36:50
факты же
Ну какие факты могут быть тут если у меня например один файл и надо в нем поменять 4 строчки на параметр из хиеры?

ptchol
19.09.2018
17:37:03
динамик фактс?
и чем они помогут ?

Protos
19.09.2018
17:37:09
Что я в факт буду сувать?

Строчку из хиеры?

Xeniya MTS
19.09.2018
17:37:25
а в exec уже факт

Protos
19.09.2018
17:38:01
а в exec уже факт
Так и куда я его туда определю?

ptchol
19.09.2018
17:38:13
А как ты предлагаешь мне темплейт генерить? Или передать сразу в питон скрипт параметр?
я предлагаю скрипт научить принимать filename как параметр. чтобы в exec в command указат "python my_sweet_script --filename" lookup(::filename_var)

Xeniya MTS
19.09.2018
17:38:58
Так и куда я его туда определю?
много работы :) Напомни плиз завтра, ОК? :) Но вообще для exec'а факт это просто переменная. А динамик факт, это просто скрипт, он может твой yaml читать

ptchol
19.09.2018
17:39:52
Хм интересно а множественные параметры он сьест?
тут уже питончик воспомнить нада и как из командной строки передать **kwargs если мы об одном и том же

Xeniya MTS
19.09.2018
17:40:04
Факты тут совершенно бессмысленны
они как раз позволят в одной компиляции каталога много раз много что переопределить

ptchol
19.09.2018
17:41:15
у тебя факты после компиляции статичны всё равно

Xeniya MTS
19.09.2018
17:41:25
ptchol
19.09.2018
17:41:31
да.

Protos
19.09.2018
17:41:33
Мне просто надо передать в один питон скрипт РАЗЛИЧНЫЕ параметры с одним именем

Xeniya MTS
19.09.2018
17:41:46
да.
ты проверял? С теми, что в lib?

Protos
19.09.2018
17:41:47
Куда я сюда факты суну и зачем я хз

Google
Protos
19.09.2018
17:42:47
Можно конечно забирать в питон темплтейт параметр который предварительно класть в факт

Но это надо заполнить факт

Собрать его

И в дальнейшем положить и каждый раз переопределять для каждого екзека

Звучит весьма банально

Xeniya MTS
19.09.2018
17:43:33
я всё-таки работать, завтра по-идее будет больше времени

Xeniya MTS
19.09.2018
17:45:12
Не, так с паппетом не выйдет. Либо параметризировать скрипт либо разные скрипты чкладывать
вообще я похожие задачи конечно решала через параметры скрипта

но для этой задачи имхо скорее факты просятся

ptchol
19.09.2018
17:48:13
Короче спасибо за идею
я бы вобще по дурному сделал еси честно. define run_tests ( $testname ) { filename = fqdn_rand_string(10) file { "/tmp{$filename}": content => tepmplate(my.erb) } exec { "/tmp{$filename}": } } в шаблоне бы сказал open (@testname) ну и обственно вызывал бы run_test (['test1', 'test2'])

Protos
19.09.2018
17:48:16
Легче сделать рекурсивный манифест который после выполнения будет сам себя править и запускать

Чем факты тут заюзать

ptchol
19.09.2018
17:48:57
но у тебя в /tmp хлама накопится )))

я б крон впихнул на очистку и не парился )))

Protos
19.09.2018
17:49:26
но у тебя в /tmp хлама накопится )))
Пофиг оно все там генерится и после везде кусок для очистки

ptchol
19.09.2018
17:50:38
а списки эти из хиеры тянуть, руками указать, из фактов притащить, пофигу. суть в том что define у тебя сможет принимать как единичное значение так и array и в данном кейсе создаст поидее разные файлы и ресурсы конфликтовать не будут

ptchol
19.09.2018
17:51:18
define же это типа такой итератор для бедных ))

это конечно очень неправильно, но использовался как костыль раньше постоянно.

Google
ptchol
19.09.2018
17:52:16
Во. Может если не понятно, если ты передашь в define array то он выполнится для каждого значения

ptchol
19.09.2018
17:52:37
open это всмысле что мы используем эту переменную в шаблоне

ты там пример кидал шаблона

Protos
19.09.2018
17:52:58
А ну понял

Не щас все не осознаю уже мозги не оч варят

ptchol
19.09.2018
17:55:17
у тебя всё сложится, ты попробуй написать define custom_alert ($a) { notify {$a} } а потом вызвать custom_alert { "ALERT": } custom_alert { ["ALERT_10", "ALERT_20"]: }

Тест1 тест 2 эт чо? Классы?
нет, это значения которые уедут внутрь твоего шаблона

Protos
19.09.2018
17:56:06
А примерно понял

Короче да завтра так попробую спасибо

ptchol
19.09.2018
17:56:28
суть в том что при передаче массива, define выполнится для каждого из этого значения целиком

тоесть как бы итерирует его

Protos
19.09.2018
17:56:46
Типа дефайним в массив значения

Точнее наоборот

Дефайним массив значений

И тянем их внутрь

ptchol
19.09.2018
17:57:44
суть в том что define как бы обернет тебе кусок кода, который тебе нада повторять много где, и позволит вызывать его, и итерировать по набору значений который ты в него передашь

ptchol
19.09.2018
17:58:09
аха )

Protos
19.09.2018
17:58:29
Ладно спасибо попробую

ptchol
19.09.2018
17:59:48
но ты же понимаешь, если бы у тебя был докер, то не было бы такого гемороя

Страница 99 из 112