Make-файлы отлично подходят для автоматизации сборки, установки и тестирования.
Но это еще не конец Make. Я использовал make-файлы для выполнения многих задач, таких как очистка журналов, сохранение зеркальных веб-страниц и загрузок, подключение их к crontab и тестовые наборы ...
Как и в случае со сценариями, я думаю, что с помощью Makefile можно автоматизировать большие возможности. В частности, если требуется цепочка запуска на основе зависимостей.
Что еще вы делали с помощью Makefiles?
Что вы планируете делать с ними еще, возможно, в дождливый день.
Мое резюме. Вход LaTeX, выход PDF.
Мне очень нравятся Makefiles, особенно для младших сисадминов.
Обновить файл зоны привязки?
Нет проблем: цель имеет checkzone
и checkconfig
(нехватка памяти) и только sudo cp <editlocation> <reallocation>; git commit -a ....
если вроде все нормально ...
Сложный развертывание?
Нет проблем записать это в Makefile
Я в значительной степени использовал Makefile везде, где также был бы уместен сценарий. Фактически я их совмещаю, /usr/local/[s]bin/
здесь находятся "пошаговые" скрипты, а Makefile находится в рабочем каталоге рассматриваемой службы.
На самом деле я использовал их гораздо больше по указанным выше причинам, чем для систем сборки - это если не считать латекс и сборки из апстрима.
Поскольку мы в значительной степени являемся магазином Ruby, я использую Rake вместо Make. Я автоматизировал следующее с помощью Rake, и это не должно быть слишком сложно сделать с помощью Make:
Обслуживание узла EC2. Создание и завершение экземпляров.
Создайте архив и загрузите его на S3.
Развернуть конфигурации сервера; в основном путем вызова rsync для каталогов и прямого копирования файлов синглтонов.
Преобразуйте код Ruby DSL в данные JSON.
Обработка выпусков программного обеспечения в репозитории git (создание новых веток, тегов и т. Д.).
sendmail.cf за 8.9 дней, если я помню.
Я использовал make-файлы для обработки XML-преобразования из источников DocBook. Таким образом, я мог конвейеризовать все команды и делать «make pdf» или «make wordml» из одного и того же источника в зависимости от предполагаемой аудитории.
Не важно. Я считаю синтаксис Makefile ужасным для большинства повседневных задач, и я стараюсь взаимодействовать с Makefile только тогда, когда это абсолютно необходимо. Что касается задач системного администрирования, я не вижу, что они предлагают через скрипт Bash или Python. Для создания программного обеспечения существуют лучшие системы сборки.
Я использовал его для «распечатки всех заметок с момента последней печати» в произвольном каталоге заметок:
printflag: *.txt printcmd $? echo "printcmd $?" > $@
Я повторил команду в файле флагов, чтобы я мог просто ". Printflag" перепечатать тот же набор, если это необходимо;
для поддержки DNS / DHCP / и т. д .:
edit hosts.dat # maintain single file with all relevant info make # work copies for visual check, diffs, etc., if needed make install # put into deploy-from-here location make deploy # push changed files to servers make restart # restart appropriate server processes here and there
(или просто "отредактируйте hosts.dat; сделайте перезапуск" для глупо храбрых)
и как быстрый и грязный способ создания ручных сценариев для процедур - то есть просто используйте псевдо-цели и заставьте команды make-файла отображать что-то вроде "do step Foo" - когда вам нужно что-то более сложное, чем tsort
Я знаю, что некоторые люди использовали скрипт Makefile вместо скриптов инициализации. Это фактически заставило их работать параллельно и определить зависимости между шагами.