
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
С разным наполнением каждый раз

ptchol
19.09.2018
17:27:32

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

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

Protos
19.09.2018
17:28:45

ptchol
19.09.2018
17:29:05
Дело же не в манифестах
Смотри, паппет описывает конечное состояние, а ты пытаешься определить 5 состояний

Protos
19.09.2018
17:31:10

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
Почему ?
А как ты предлагаешь мне темплейт генерить? Или передать сразу в питон скрипт параметр?

Xeniya MTS
19.09.2018
17:35:38
которые в lib/facter/

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

ptchol
19.09.2018
17:38:13

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

Protos
19.09.2018
17:39:12

ptchol
19.09.2018
17:39:52

Xeniya MTS
19.09.2018
17:40:04

Protos
19.09.2018
17:41:00

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
я всё-таки работать, завтра по-идее будет больше времени

Protos
19.09.2018
17:43:59
Щас обмозгую

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

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

Protos
19.09.2018
17:50:45

ptchol
19.09.2018
17:51:18
define же это типа такой итератор для бедных ))
это конечно очень неправильно, но использовался как костыль раньше постоянно.

Google

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

Protos
19.09.2018
17:52:17

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"]: }

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

Protos
19.09.2018
17:58:04

ptchol
19.09.2018
17:58:09
аха )

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

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