Windows Серверная среда. У нас есть серверы с ролью Puppet, которые устанавливают пакет c Choco. Было решено, что пакет не следует устанавливать на новые серверы. Простейшим способом было бы просто удалить выражение пакета из манифеста. Проблема в том, что пакет создает локального пользователя во время установки, и этому пользователю должны быть дополнительно предоставлены права в локальной ОС через Puppet.
Если пакет никогда не устанавливался, этого пользователя не существует в ОС и утверждение, назначающее права для этого, терпит неудачу. Однако если мы удалим это правильное назначение из роли, оно также будет удалено на всех серверах с уже установленным пакетом, и приложение не будет работать.
Есть ли способ проверить в манифесте, если это пакет в данный момент установлен? Что-то вроде «если ПАКЕТ is_present {сделать что-то}». Или проверить существование этого пользователя? «если USER существует {сделать что-то}», я знаю, что это может быть решено пользовательским фактом, но это сложное приложение с несколькими общими компонентами с другими приложениями. Я не могу определить ни типичные файлы, ни типичный сервис для него, и цена ошибки очень высока (200 серверов, критически важные, несколько тысяч пользователей ...). Единственное, что известно наверняка - это имя пакета Choco и имя пользователя.