Как рецепт может получить полный список тегов сервера?

Как рецепт может получить полный список тегов сервера?

или же

Как рецепт может проверить, установлен ли / присутствует определенный тег?

Кстати: отмечены? не работал для меня

2 ответа

Вы можете получить все теги узла в рецепте по node.tags или же node[:tags], Таким образом, чтобы проверить, присутствует ли определенный тег, вам необходимо:

node[:tags].include? 'mytag'

Чтобы получить полный список всех тегов на всех узлах, вы должны использовать поиск.

search( :node, '*:*' ).collect(:tags).flatten.uniq

Но tagged? 'mytag' должно работать на самом деле. Покажите свой код.

С тегами Chef следует помнить несколько вещей:

  1. Вы не можете использовать их в файлах атрибутов. Было бы здорово, если бы ты мог, но это просто не работает. Вот что вы увидите, если попытаетесь: ОШИБКА: неопределенный атрибут узла или метод tagged? на узле ".
  2. Это может быть исправлено в более поздних версиях Chef, но было время, когда при проверке тегов возникали ошибки, если узел вообще не был помечен.

Помимо этих двух вещей, я часто использую их в рецептах, и они работают очень хорошо.

if tagged?('legacy')
  do legacy things
end

или же

return if tagged?('ignore')

Эти типы использования должны работать, без проблем, по вашим рецептам.

Другие вопросы по тегам