Всем привет.
Пытаюсь написать свой первый state module. В стейт модуле надо и нужно использовать execution модули чтобы не изобретать велосипед.
Захотел заюзать в своём стейт модуле функцию управления файлом (file.get_managed или подобное). Начал погружаться в тему того как и застрял.
Чует моё сердце что не так то уж и просто заюзать другой execution module. И уж тем более свой стейт написать.
О задаче в целом. Во первых решил разобраться с стейт модулями. Во вторых захотел написать стейт управления конфигами nginx. Т.е. подаешь на вход данные вида
some_id:
nginxconfig.desired:
- name: somename
- sites:
- staticsite
- othersite:
names: othersite.example.com othersite
proxy_pass: 192.168.1.2:8080
Получаешь на выходе конфиги. Если коли-во конфигов в sites уменшилось со временем - стейт за собой подчистит.
Если у сайта нет раширенного конфига - то стейт просто берёт шаблон по имени сайта с сервера прогоняет через jinja и кладёт в conf.d
Если у сайта конфиг расширенный то сайт генерируется из определённого шаблона на сервере и также попадает в conf.d
Попытался в виде:
f = __salt__['file.get_managed'](
name=f'/tmp/{site}.conf',
template='jinja',
source='salt://{site}',
user='root',
group='root',
mode='755',
**kwargs
)
file.get_managed
я так понимаю это первый шаг, потом нужно вызвать
file.manage_file
. Но я
file.get_managed
не могу дать всего что он хочет.
TypeError: get_managed() missing 6 required positional arguments: 'source_hash', 'source_hash_name', 'attrs', 'saltenv', 'context', and 'defaults'
Не говоря уже о дальнешем. В общем для меня сейчас всё это выглядит архисложным. Вроде казалось бы простое действие а рутины море.
Может быть я иду не тем путём ?