Ansible, найти различия между файлами каталогов развернутого кода на нескольких серверах (обновлено) - PullRequest
0 голосов
/ 20 января 2020

Долгое время слушатель, впервые звонящий ...

Это мой первый пост, поэтому я прошу прощения, если нарушу какие-либо этические правила. Я обещаю, что "гуглил" его и проверил StackOverflow. Мой вопрос очень простой c, поэтому я предполагаю, что я не правильно его формулирую. Этот запрос предназначен для работы (не домашней работы).

У нас более 20 компьютеров, на которых запущено несколько экземпляров программного обеспечения. Мы хотим сравнить каждый экземпляр развернутого кода с «золотой» версией.

Итак, сервер: goldman имеет: /staging/engine/code (w/ ~250K files)

Целевой сервер: server017 имеет: /working/engine01/code /working/engine02/code /working/engine03/code Мой запрос Мне нужно систематически сравнивать goldman: / staging / engine / code с сервером ???: / working / engine ?? / code ... и alert / fail, et c, когда нет совпадений. Нам не нужно ничего «исправлять», просто нужно найти какие-то странные шары.

Мы (на работе) решили, что было бы неплохо сначала сделать что-то простое, например команду du, чтобы найти различия, а затем выполнить более исчерпывающее сравнение после того, как хост был отключен. Что-то вроде запроса контрольной суммы файла к файлу.

Я хотел бы думать, что я "сильный новичок" с Ansible. И хотя я прошел несколько уроков по сборникам, я не могу собрать воедино то, что мы пытаемся сделать. Итак, я действительно открыт для наилучшего подхода со стороны любых опытных Ansible ветеранов о том, как с этим справляются.

Спасибо за ваше время.

Спасибо всем, кто прочитал это и особенно тем, кто ответил.

@ Zeitounator, я прошу прощения и понимаю, что вы имеете в виду, что вопрос не отвечает; с некоторыми из переменных: размер, количество файлов, я должен был бы добавить больше деталей в моем вопросе. Ниже я привел несколько деталей и сократил «весь проект», чтобы просто спросить, что я думаю, это первый шаг.

@ larsks, очевидная идея - это то, что я изначально имел в виду, но подумал: Ansible не может сделать это с результатами в памяти / переменные. Md5deep - это круто и ясно «следующая фаза»

In Agile -eese: Как инженер devops, используя Ansible, я хочу убедиться, что каталог на целевой машине соответствует каталогу 'gold' (или манифест этого каталога).

Это пример каталога

/code
/code/engine
/code/engine/bin
/code/engine/libs
/code/engine/vars

Это будет целевой каталог (точно такой же)

/code
/code/engine
/code/engine/bin
/code/engine/libs
/code/engine/vars

@ larsks, если вы все еще со мной ... Я хотел бы запустить du или найти метри c из [bin, libs, vars], либо записать его в манифест на узле контроллера, либо как-то обработать в памяти / переменных. Если они не совпадают, ошибка / электронная почта / ошибка. После этого мы бы адаптировали исходный подход к проведению исчерпывающего опроса по файлам.

Файлы состоят из двоичных файлов, плоских файлов, html и т. Д., Практически всего. Общее количество файлов ниже 'engine' составляет около 250 КБ. Общий размер всех файлов (одна реализация) составляет ~ 33 ГБ

. В качестве нуба я спрашиваю, должен ли я использовать ad-ho c или пьесы? Должен ли я использовать модуль оболочки или файловый модуль? Когда Ansible сравнивает файлы по многим операциям, не делает ли это «изначально» md5 га sh, не могу ли я использовать это?

Я надеюсь, что эта дополнительная деталь вызывает некоторые предложения или «это Вот как мы сделали это совет. Я утверждаю, что я относительный новичок, но это должно быть обычной задачей для менеджеров среды, управляющих с помощью Ansible ... так что не задумывайтесь над моим вопросом; Я действительно убежден, что я просто не смотрю в нужном месте или следовал правильному учебнику.

Заранее спасибо! SU

...