Предыстория: недавно я обнаружил проблему на наших серверах, из-за которой zookeeper не запускался на одном из них. Это было вызвано тем, что файл myid был пуст (требуется номер). Соль не исправила. Оказывается, проблема была вызвана недавним изменением имени хоста. Я исправил файл sls, но любая такая настройка может снова привести к его поломке.
Итак, мой вопрос: могу ли я использовать соль для проверки правильности применения определенных изменений? В этом случае я мог бы проверить размер файла или убедиться, что его содержимое содержит одно число. В идеале это должно было бы выполняться как часть выполнения состояния, но если есть другой способ, я бы хотел это услышать.
Чтобы быть конкретным, я не собираюсь проверять или проверять сами файл состояния. Я просто хочу убедиться, что конечные результаты в какой-то степени верны. Например. файл содержит одно число и не является пустым.
Идти вместе с Ответ Роальда Нефса, ты можешь использовать module.run
в состоянии для выполнения модуля в состоянии. Итак, в моем случае я сделал следующее:
myid_file_test:
module.run:
name: file.search
path: /path/to/myid
pattern: '\d'
Если шаблон не соответствует, он сообщит об ошибке, что именно то, что я хочу.
С salt.module.file Модуль вы сможете управлять информацией об обычных файлах, каталогах и специальных файлах миньона, устанавливать / читать пользователя, группу, режим и данные.
Эти модули включают search()
функция, которая позволяет вам искать вхождения шаблона в файле.
salt '*' file.search /path/to/the/file pattern='='
Шаблон - это регулярное выражение, которое должно быть сопоставлено с помощью Python search()
.
Вы можете использовать diskusage()
функция для рекурсивного вычисления дискового использования пути и возврата его в байтах:
salt '*' file.diskusage /path/to/the/file