Size: a a a

2020 October 23

s

sam in Saltstack
Kirill Proskurin
150 на одном мастере пока что - идем к 700
650 у нас =)
источник

R

Roman in Saltstack
у меня всего 70 :)
источник

KP

Kirill Proskurin in Saltstack
везуха
источник

R

Roman in Saltstack
Сейчас принципиально новая инсталляция будет, хочется сделать лучше чем прошлую. Поэтому и задаю много вопросов :)
источник

R

Roman in Saltstack
Похоже foo/**/*yml не поддеживается
код для подгрузки файлов такой
paths = glob.glob(os.path.join(basedir, item))

а чтоб ** работало надо glob.glob(pathname, *, recursive=True)
по умолчанию recursive=False
источник

KP

Kirill Proskurin in Saltstack
закинь патч автору
источник

R

Roman in Saltstack
Если не придумаю лучшего решения по структуре с текущими возможностями.
источник

s

sam in Saltstack
чот туплю, как заинклюдить файл с джижа переменными в пиллар?
источник

s

sam in Saltstack
а,бля, я дурак)))
источник

R

Roman in Saltstack
Kirill Proskurin
$ cat salt/stack/stack.cfg
{# This file trying to load each string as a path so no comments are allowed #}

{# Secrets #}
secrets.yaml

{# default settings #}
defaults/*.yaml

{# OS specific overrides settings #}
os/{{ __grains__['os'] }}.yaml

{# Formulas specific settings #}
formula/*.yaml

{# env_type [dev, pre, prod] settings #}
{{ stack.common.env_type }}/defaults/*.yaml

{# Custom settings per customer #}
{{ stack.common.env_type }}/{{ stack.common.customer_name }}/defaults/*.yaml

{# Custom settings per cluster #}
{{ stack.common.env_type }}/{{ stack.common.customer_name }}/{{ stack.common.cluster_name }}/*.yaml

{# Customizations per minion #}
{{ stack.common.env_type }}/{{ stack.common.customer_name }}/{{ stack.common.cluster_name }}/minions/{{ minion_id }}.yaml

{# Everything else that needs to be done when all configuration are in place #}
post.yaml
Многократно пересмотрел ваш конфиг, но  все еще не понимаю как вы общие пиллары применяете на несколько миньонов без создания нескольких копий под разными именами.

Допустим у  есть кластер БД из 3-х хостов db1, db2, db3 для него есть общий конфиг (пиллары), который нужно применить ко всем этим хостам. С обычным top.sls все понятно, что-то вроде
base:
 'db*':
   - db.common
 # опционально, если нужны разные параметры для разных миньонов
 'db1':
   - db.db1
 'db2':
   - db.db
 'db3':
   - db.db3

С вашим конфигом, как я его понимаю, придется создать 3 файла в любом случае и общие параметры скопировать в каждый из них.
dev/customerA/clusertX/minions/db1.yaml
dev/customerA/clusertX/minions/db2.yaml
dev/customerA/clusertX/minions/db3.yaml
Т.е. некую общую часть придется в 3-х файлах поправить при необходимости.

Я что-то неправильно понимаю или есть еще какие-то нюансы?
источник

KP

Kirill Proskurin in Saltstack
>  все еще не понимаю как вы общие пиллары применяете на несколько миньонов без создания нескольких копий под разными именами.

А мы так не делаем в 99% случаев.

У нас есть только один кейс пиларов которые надо разносить per minion - это секреты. Остальное шарится между всеми миньенами и у нас это не проблема.

Секреты тоже инклудятся всем миньенам НО там каждый секрет это вызов в волт с дефолтом в None. То есть если у миньена есть доступ к этому секрету то там будет секрет - если нет то None

и никакой магии
источник

R

Roman in Saltstack
Понятно. Я хочу все же иметь group / role  based mapping. Надо еще подумать.
источник

KP

Kirill Proskurin in Saltstack
ну если эти группы как-то задефайнены то прорблемы нет

А если это какие-то рандомные списки - то будет сложно
источник

KP

Kirill Proskurin in Saltstack
у нас роли вешаются на миньены грейнами
источник

VS

Vladimir Skubriev in Saltstack
Около 27 пока. Не все машины под солтом. Но будет полтинник примерно с облачными ВМ
источник

KP

Kirill Proskurin in Saltstack
и если бы у нас были пиллары пер роль то это было бы просто

{{ grains.roles.ROLE_NAME }}.yaml
источник

R

Roman in Saltstack
Kirill Proskurin
ну если эти группы как-то задефайнены то прорблемы нет

А если это какие-то рандомные списки - то будет сложно
Ну да, в конечно счете все сводится к тому, что где-то надо задавать соответствие minion:role
источник

R

Roman in Saltstack
Kirill Proskurin
у нас роли вешаются на миньены грейнами
я начал последнее время вешать роль через грейны как часть применения формулы, т.е. применил формулу postgresql -  получил
grains:
 roles:
   - postgresql

удобно потом выборку делать, но как-то это не декларативно...
источник

KP

Kirill Proskurin in Saltstack
мы роли навешиваем сразу что бы состояние были известно уже при первом запуске
источник

KP

Kirill Proskurin in Saltstack
ну то есть роли навешиваются провиженингом
источник