Как рецепт может получить полный список тегов сервера?
Как рецепт может получить полный список тегов сервера?
или же
Как рецепт может проверить, установлен ли / присутствует определенный тег?
Кстати: отмечены? не работал для меня
2 ответа
Вы можете получить все теги узла в рецепте по node.tags
или же node[:tags]
, Таким образом, чтобы проверить, присутствует ли определенный тег, вам необходимо:
node[:tags].include? 'mytag'
Чтобы получить полный список всех тегов на всех узлах, вы должны использовать поиск.
search( :node, '*:*' ).collect(:tags).flatten.uniq
Но tagged? 'mytag'
должно работать на самом деле. Покажите свой код.
С тегами Chef следует помнить несколько вещей:
- Вы не можете использовать их в файлах атрибутов. Было бы здорово, если бы ты мог, но это просто не работает. Вот что вы увидите, если попытаетесь: ОШИБКА: неопределенный атрибут узла или метод tagged? на узле ".
- Это может быть исправлено в более поздних версиях Chef, но было время, когда при проверке тегов возникали ошибки, если узел вообще не был помечен.
Помимо этих двух вещей, я часто использую их в рецептах, и они работают очень хорошо.
if tagged?('legacy')
do legacy things
end
или же
return if tagged?('ignore')
Эти типы использования должны работать, без проблем, по вашим рецептам.