Size: a a a

2020 February 14

KN

Konstantin Nikolaev in Saltstack
Omega M
Комрады нид хелп. Как можно заимпортить yaml  файл как raw в пилларах ? Есть yaml который написан с использованием го темплейта соответственно если я делаю {%- import_yaml 'prometheus-container/alerts.yaml' as alerts -%}  и так как таме есть {{ var }} солт пытается отрендерить еги перед импортом и соответствеено вылетает с ошибкой. Кто либо сталкивался с такой проблемой ?
Странно почему salt пытается при выполнении import_yaml ещё и джинжа код там отрендерить, но видимо это фича такая.

Как вариант, сделай свой Custom execution module: https://docs.saltstack.com/en/latest/ref/modules/index.html#writing-execution-modules

В который запихай вот этот код: https://stackoverflow.com/a/9769454 и вызывай потом в салте {{ salt.include_file('path_to/file.txt') }}
Плюс код который определяет корень pillar'ов, чтобы путь до path_to/file.txt искалься от него
источник

KN

Konstantin Nikolaev in Saltstack
Либо быстрый костыльный вариант:
1. В pillar файле куда хочешь заимпортить yaml добавляешь {{ salt.file.read('/srv/pillar/minions/test.yaml') }}
2. и получаешь:
root@master:/srv/pillar# salt test-minion pillar.items test
test-minion:
   ----------
   test:
       ----------
       test_dic:
           ----------
           var1:
               1
           var2:
               2
       test_list:
           - one
           - two

root@devops-ci-master:/srv/pillar# cat minions/test.yaml
test:
 test_dic:
   var1: 1
   var2: 2
 
 test_list:
   - one
   - two
источник

KN

Konstantin Nikolaev in Saltstack
Konstantin Nikolaev
Странно почему salt пытается при выполнении import_yaml ещё и джинжа код там отрендерить, но видимо это фича такая.

Как вариант, сделай свой Custom execution module: https://docs.saltstack.com/en/latest/ref/modules/index.html#writing-execution-modules

В который запихай вот этот код: https://stackoverflow.com/a/9769454 и вызывай потом в салте {{ salt.include_file('path_to/file.txt') }}
Плюс код который определяет корень pillar'ов, чтобы путь до path_to/file.txt искалься от него
ВО! А можно не заморачиваться с Execution модулем и написать Jinja Macros который будет это выполнять
Тогда и не нужно будет с путями разбираться
источник

KN

Konstantin Nikolaev in Saltstack
Блин позже дошло до меня, что это всё работаеть не будет т.к. у тебя в test.yaml такой же как у Джинжи код GO темплейта который, нужно лишь только там в raw/endraw запихивать :(
источник

MK

Maksim Kavpush in Saltstack
Кто-нибудь использует winrepo? Столкнулся с тем, что перенос кастомной репы с помощью winrepo_dir_ng в каталог отличный от дефолтного приводит к отвалу репы на винде во всех saltenv. Даже указание каталога в file_root по окружениям не помогает. Если делать симлинк на папку win в окружение, то работает... Но костыль. Хотелось сделать общий /srv/win_repo и синхрон с git. Однако перестает видеть /srv/win_repo/win/repo_ng
источник

KN

Konstantin Nikolaev in Saltstack
Maksim Kavpush
Кто-нибудь использует winrepo? Столкнулся с тем, что перенос кастомной репы с помощью winrepo_dir_ng в каталог отличный от дефолтного приводит к отвалу репы на винде во всех saltenv. Даже указание каталога в file_root по окружениям не помогает. Если делать симлинк на папку win в окружение, то работает... Но костыль. Хотелось сделать общий /srv/win_repo и синхрон с git. Однако перестает видеть /srv/win_repo/win/repo_ng
не совсем понял что ты хочешь.
1. Ты хочешь с https://github.com/saltstack/salt-winrepo-ng.git синхронить win/repo-ng/salt-winrepo-ng
2. И параллельно ещё тедаже подкладывать свои кастомные стейты или же переопределять те что в Git репе.
?
источник

MK

Maksim Kavpush in Saltstack
Сеть закрытая. Репа своя. Sls составили и работают. В saltenv=base работает... В test pkg.install не видит репы. Задача сделать общую репу по окружениям.
источник

MK

Maksim Kavpush in Saltstack
Гит тоже свой
источник

KN

Konstantin Nikolaev in Saltstack
Так у вас весь salt код лежит в Git ?
источник

MK

Maksim Kavpush in Saltstack
Сценарии в одном проекте git, репа в другом.
источник

KN

Konstantin Nikolaev in Saltstack
Maksim Kavpush
Сценарии в одном проекте git, репа в другом.
в salt/top.sls и pillar/top.sls вместо base: указано {{saltenv}}: ?
источник

KN

Konstantin Nikolaev in Saltstack
и какая версия мастера ?
источник

MK

Maksim Kavpush in Saltstack
Konstantin Nikolaev
и какая версия мастера ?
2019.2.3
источник

MK

Maksim Kavpush in Saltstack
Konstantin Nikolaev
в salt/top.sls и pillar/top.sls вместо base: указано {{saltenv}}: ?
окружения разделены по проектам гит. в .gitignore прописано исключение каталога win. top.sls для base окружения прописан как base: ... За идею {{saltenv}}: спасибо.
источник

MK

Maksim Kavpush in Saltstack
salt-winrepo-ng - отдельный проект GIT.
источник

KN

Konstantin Nikolaev in Saltstack
Если вы всё храните в GIT, то там ИМЯ_ВЕТКИ=окружение, соответственно в данный момент когда вы юзаете base, который равен master ветеке, то у вас всё отрабатывает, т.к. во всех Гит репах есть такая ветка, а как только вы указываете другую ветку(выбрали другое окружение), то такой ветки уже не находится в  salt-winrepo-ng и соответственно ничего не работает.

Решение:
- нужно салту принудительно сказать, что бы для salt-winrepo-ng он ВСЕГДА брал данные только из master ветки. Добавив в блок gitfs_remotes для salt-winrepo-ng репо параметр:
- all_saltenvs: master
источник

MK

Maksim Kavpush in Saltstack
winrepo_remotes_ng:
 - 'https://gitlab/salt/salt-winrepo-ng.git'
   - all_saltenvs: master

так?
источник

MK

Maksim Kavpush in Saltstack
gitfs параметры в salt/master не используем
источник

KN

Konstantin Nikolaev in Saltstack
Maksim Kavpush
winrepo_remotes_ng:
 - 'https://gitlab/salt/salt-winrepo-ng.git'
   - all_saltenvs: master

так?
Хм я таким образом не подключаю Git репы. Всё делается через стандартный gitfs_remotes.
1. Попбробуй как ты написал, вдруг заработает.
2. Либо переделай на gitfs_remotes примерно так:
gitfs_provider: pygit2
gitfs_pubkey: /opt/PublicReader.pub
gitfs_privkey: /opt/PublicReader
gitfs_base: master
gitfs_ref_types: branch
top_file_merging_strategy: same
gitfs_remotes:
 - my_custom_repo.git
   - name: my_custom_repo
   - root: formulas
   - all_saltenvs: master
 - https://github.com/saltstack/salt-winrepo-ng.git:
   - name: Off_salt-winrepo-ng
   - all_saltenvs: master
источник

KN

Konstantin Nikolaev in Saltstack
источник