LINUX.ORG.RU
ФорумAdmin

Ansible argument_specs.yml, значение аргумента из default не присваивается

 


0

1

Привет, ЛОР.

Может, кто-нибудь пользуется в ansible описанием аргументов роли, которое в rolename/meta/argument_specs.yml? Там вроде есть возможность задавать значение через default:, но оно почему-то не присваивается аргументу.

Оно точно читается: как минимум, проверяется соответствие указанного значения заявленному в type: типу. Но при попытке обращения к аргументу внутри роли получаем ошибку про undefined.

В общем, наверняка этим пользуются люди, но поиск по багам ничего не дает. ЧЯДНТ?

Ansible 2.16.5, python 3.11.10.

★★★★★

Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от Harliff
  1. А у тебя есть история успеха? Мне бы понять, как вообще дела обстоят.

  2. Хотелось объявить обязательные для роли аргументы. Выяснилось, что если есть спека, то необязательные тоже должны быть описаны в ней, иначе ругается. Ну а раз уже пришлось всё вписать в спеку, хотелось бы выбросить defaults.yml вообще.

thesis ★★★★★
() автор топика
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от thesis

Насколько я понимаю, meta - это интерфейс роли

Ну грубо говоря, документация. То, что ты в описании интерфейса написал слово «default», никак не меняет его реализацию

Ну да, неудобно менять в двух местах сразу. Но это принципиально разные вещи

смотри: https://docs.ansible.com/ansible/latest/playbook_guide/playbooks_reuse_roles.html

Ensure that the default value in the docs matches the default value in the code. The actual default for the role variable will always come from the role defaults

router ★★★★★
()
Ответ на: комментарий от router

Да, этот абзац - причина того, что я не побежал сразу в багтрекер с криком «сломано, чините».

Но это же идиотизм. Я надеялся, что там как-то логичнее сделано, что ли.

Тем более, что в модулях одноименная конструкция обрабатывается интуитивно понятным образом.

А еще я продолбал тот факт, что вот этот баг закрыт не потому, что «сделано», а потому, что «хрен с ним, переживем». Увидел «closed» и обрадовался, а зря.

thesis ★★★★★
() автор топика