@puppet_ru

Страница 80 из 112
Максималист
28.08.2018
12:23:52
перепроверю

Andor
28.08.2018
12:24:38
unless vs onlyif

Максималист
28.08.2018
12:25:55
ааа

сек

Google
Максималист
28.08.2018
12:26:37
тест

dk
28.08.2018
12:29:27
В каком?

Максималист
28.08.2018
12:30:03
Executing 'echo balallaika' ? понял

cat all_networks.txt | grep network_1 а что мешает сделать это в один grep?
Error: Syntax error at ' ординарные кавычки экранируются в папет? Если хотим сделать эллегантно и затолквать в unless 1 команду то кавычки все портят unless => 'grep -w '12.cisco_1' networks.txt'

Andor
28.08.2018
12:44:19
srsly?

Максималист
28.08.2018
12:47:33
srsly?
перепроверю

?

Andor
28.08.2018
12:47:56
умеешь на каком-нибудь языке программирования программировать?

если да, то на каком

Максималист
28.08.2018
12:48:25
вопрос религиозынй смолчу

Andor
28.08.2018
12:48:31
что?

это я спрашиваю на каком языке тебе аналогию про экранирование показывать

Google
Максималист
28.08.2018
12:48:57
\'

? :D

bash

Andor
28.08.2018
12:49:21
не, я D не знаю, но там вроде стандартные кавычки "

в баше особо внутри одинарных не поэкранируешь

но внутри двойных правила подстановки и экранирования почти такие же как в puppet

Максималист
28.08.2018
12:53:38
но внутри двойных правила подстановки и экранирования почти такие же как в puppet
стормозил - экранирование такое же как и везде. Просто придумаю значение папету как невесть чему

Andor
28.08.2018
12:54:17
что?

не понял вторую часть фразы

Максималист
28.08.2018
12:54:50
работает unless => 'grep -w \'127.0.0.1\' network.txt'

вторая часть - порой кажется что паппет устроен по другому и простые вещи там работаю иначе. по другой логике

уточнение - двойные проверки в рамках одной execue могут быть ? к примеру require => Exec['create stream inventory'], unless => 'grep -w \'192.168.0.1\' network_in.txt'

Andor
28.08.2018
14:12:52
У тебя в примере нет двойной проверки

https://puppet.com/docs/puppet/5.3/types/exec.html#exec-attribute-unless

Максималист
28.08.2018
14:19:58
разве - первая 1) require => Exec['create stream inventory'], вторая 2) unless => 'grep -w \'192.168.0.1\' network_in.txt'

Andor
28.08.2018
14:31:10
Это совершенно разные параметры

dk
28.08.2018
14:59:08
разве - первая 1) require => Exec['create stream inventory'], вторая 2) unless => 'grep -w \'192.168.0.1\' network_in.txt'
Первое - это гарантия того, что ресурс будет применен только после успеха ресурса Exec[create..], это все рисуется на графе конфигурации на этапе сборки каталога на мастере Второе - выполняется местно на агенте, где абстрактно процесс применения ресурса можно представить как: resource Exec[main_cmd] ( if run(unless) succeeded ( return ok ) else ( return ok if run(main_cmd) succeeded ) )

Andor
28.08.2018
15:03:30
хм, а ведь метапараметры вычисляются на стороне мастера и учавствуют в компиляции каталога, а обычные парамеры - только на стороне клиента

только щас об этом подумал

Максималист
28.08.2018
15:04:36
Откуда такие познания? Пупет есеншнл?)

Google
Максималист
28.08.2018
15:04:46
Они между собой не конфликтуют?

Andor
28.08.2018
15:04:50
нет

метапараметры это параметры типа require/before/after/tag/ и ещё некоторые

https://puppet.com/docs/puppet/5.5/metaparameter.html вот

Максималист
28.08.2018
15:06:25
Значит проблема в чем то другом. Собираю в отдельных классах действия и проверки. Складываю в один вылет.

Лан посмотрю вечеро

Andor
28.08.2018
15:06:43
что?

в какой вылет складываешь?

что вообще значит эта фраза?

Максималист
28.08.2018
15:14:01
Вечерком нариссую и скину. Либо завтра. Идея такая: в 1 классе последовательно выполняется патчи сетевой карты. Во 2 классе считывание патчей запись в файл. Из этого всего складываю 1 файл что бы установка только если патча нет. Следовательно проверки делаю о котлрых выше писал. И тут ошибки.

Буду у консоли снова покажу конкретно. Пока отбоц

Отбой

Максималист
28.08.2018
15:37:08
Та не в файл все складываю. Буду у консоли будет конкретика.

Andor
28.08.2018
15:38:01
какой файл? зачем?

dk
28.08.2018
15:39:58
concat { '/dir/my-network-card.patch': ensure => present, } exec { 'apply-patch': unless => 'check patch /dir/my-network-card.patch', command => 'apply patch /dir/my-network-card.patch', subscribe => '/dir/my-network-card.patch', } concat::fragment { 'patch-part1': target => '/dir/my-network-card.patch', content => 'test contents', order => '01' } ...

Если я все правильно понял

Max
28.08.2018
20:12:28
Ступид вопрос, но как правильно создать парент папку для сервиса? Ситуация - 2 модуля (которые должны были жить по отдельности на разных серверах) имеют одну точку входа: /opt/some_home/ . Если врубить 2 сервиса - папет выругается на дупликейт локации /opt/some_home для сервис1 и сервис2 (ре-декларирование). Есть вариант все сделать exec, но полагаю есть более правильное решение. Пожно подсказку) ?

ptchol
28.08.2018
20:21:52
или заюзать ensure_resource а не писать првоерку самому

Google
Andor
28.08.2018
20:21:53
вынеси директорию в класс

у нас было profiles::dirs с кучей подклассов

Max
28.08.2018
20:22:11
Я склоняюсь больше к if !defined Но по ходу file {} не создаст внутреннюю директорию без паретна - тоесть надо еще логику для парента придумать

Холм
28.08.2018
20:22:17
вынеси директорию в класс
разве это спасет от редекларирования?

Andor
28.08.2018
20:22:25
конечно

просто делаешь include profiles::dirs::opt::some_home

ptchol
28.08.2018
20:22:44
конечно
ну типа не круто же. ты зависимость модуля вытащил из модуля

Andor
28.08.2018
20:23:16
у тебя всё равно будут зависимости между модулей

как не крутись

Холм
28.08.2018
20:23:21
просто делаешь include profiles::dirs::opt::some_home
ну и если в profiles::dirs::opt::some_home определен ресурс file то все упадет из-за редекларирования.

Max
28.08.2018
20:23:22
ну вот и холивар наметился …

Andor
28.08.2018
20:23:26
можешь эти зависимости в профиле себе вписать

Andor
28.08.2018
20:24:21
можешь в профиле делать include dirclass; include your-module и подключать уже этот профиль

а там зависимости между директориями сами расставятся

с чего б ?
ну так или иначе какой-нибудь модуль постгреса будет зависеть например от модуля apt который приносит репозиторий

Холм
28.08.2018
20:25:39
ну так или иначе какой-нибудь модуль постгреса будет зависеть например от модуля apt который приносит репозиторий
разве для этого не делают так, чтоб каждый модуль приносил свой нобор реп в /etc/apt/list.d/ ?

ptchol
28.08.2018
20:25:51
ну вобще как бы объявлять плейсмент директорий как "модуль".. такое се.

Холм
28.08.2018
20:25:52
или как там дира называется.

Google
Andor
28.08.2018
20:26:24
ну вобще как бы объявлять плейсмент директорий как "модуль".. такое се.
согласен, много классов, но никакого гемора с депендесами

довольно удобно получалось

ptchol
28.08.2018
20:26:47
А может посмотрет ьв сторону hiera ?

Andor
28.08.2018
20:27:00
при чём тут хиера?

ptchol
28.08.2018
20:27:02
ensure_resources по ресурсам из хиеры

Холм
28.08.2018
20:27:08
а если ты зеркало юзаешь?
а при чем тут это? ну зеркало да зеркало. для системы то это просто еще одна репа.

Andor
28.08.2018
20:27:10
можно конечно

ptchol
28.08.2018
20:27:52
типа у тебя как бы останется логика создания в модулях и пофигу на их компоновку. главное чтобы данные для этих модулей правильные приехали, а esure_resources обеспечить отсуствие дупликейтов

Холм
28.08.2018
20:27:56
сорри, я потерял нить обсуждения. мы же решали пробьлему редеклейра директории.

Andor
28.08.2018
20:28:41
ну вот я бы вынес создание директории в специальный класс и просто делал ему include

Холм
28.08.2018
20:29:18
ну вот я бы вынес создание директории в специальный класс и просто делал ему include
судя по описанной проблеме в двух разных классах содается одна и та же дира. тут тебя не спасут разные классы.

или я не так понял задачу?

Andor
28.08.2018
20:29:33
задачу - так

то, что я написал - не так

Max
28.08.2018
20:29:39
@Andorka ну эта логика у меня будет вынесена в моунт … но для теста хотел просто дир создать. А по факту обламался с редекларейтом

Andor
28.08.2018
20:30:00
ну вот маунт у тебя же будет в отдельном классе?

Max
28.08.2018
20:30:08
с юзером и гроппой разобрался - стандартный чек иф дефайнед

Холм
28.08.2018
20:30:15
ну вот я бы вынес создание директории в специальный класс и просто делал ему include
типа один класс для создания диры, а в каждом классе нуждающемся в дире делать его инклюд?

Andor
28.08.2018
20:30:31
да

Холм
28.08.2018
20:30:32
+

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