Читаем Тайм-менеджмент для системных администраторов полностью

Теперь я могу отредактировать файл aliases или access и ввести команду make. Мне не нужно помнить, что команды обновления индексов сильно различаются. Я не должен помнить о необходимости перезагружать конфигурацию Postfix, потому что соответствующая команда включена в инструкцию all. Конструкция reload в конце all будет каждый раз запускать эту инструкцию.

С помощью команды make можно также поддерживать свежие версии файлов на разных серверах. Предположим, что на обоих наших почтовых серверах файлы aliases должны быть одинаковыми. Мы решаем отредактировать файл на одном сервере и скопировать его на сервер server2. Инструкция может выглядеть, например, так:

push.aliases.done: $(PDIR)/aliases

scp $(PDIR)/aliases server2:$(PDIR)/aliases

touch $@

Мы копируем файл на serveг2 командой scp, затем применяем команду touch к файлу push.aliases.done. Поскольку этот файл создается после успешной операции копирования, мы можем построить инструкции так, что копирование будет выполняться только в случае необходимости. Мы также можем принудительно скопировать файл, если просто удалим push.aliases.done и введем команду make. Традиционно вводится инструкция clean, которая удаляет все файлы *.done и прочие файлы, сгенерированные автоматически.

В файлах, имена которых оканчиваются на .done, нет ничего особенного. Это обычные файлы с меткой времени или флагом для имени.

Рассмотрим развернутый пример. Имеются два файла, подлежащие индексации после редактирования: aliases и access. Если хотя бы один из них проиндексирован заново, выдается команда перезагрузки Postfix. Кроме того, оба файла копируются на serveг2, если они были изменены. Наконец, команда cd /etc && make выполняется на server2 тогда и только тогда, когда на него был скопирован хотя бы один файл.

Будьте внимательны, создавая инструкции. Правильно указывайте параметры и применяйте команду touch к файлам *.done, если потребуется. Команда make выполнит лишь минимум работы, необходимый для обновления системы.

#

# Makefile для server1

#

NEWALISES=/usr/sbin/newaliases

PDIR=/etc/postfix

POSTMAP=/usr/lосаl/postfix/sbin/postmap

#

# "Команды" высокого уровня

#

all: aliases.done access.done reload_if_needed.done push

push: push.done

reload:

postfix reload

stop:

postfix stop

start:

postfix start

reload_if_needed.done: aliases.done access.done

postfix reload

touch reload_if_needed.done

clean:

rm — f \

$(PDIR)/aliases.pag $(PDIR)/aliases.dir \

$(PDIR)/access.dir $(PDIR)/access.pag \

push.aliases.done push.access.done \

reload_if_needed.done

#

# Инструкции для конкретных файлов,

# которым требуется индексация/регенерация

#

# Если aliases изменится, сгенерировать файлы. pag and.dir

aliases.done: $(PDIR)/aliases.pag $(PDIR)/aliases.dir

$(PDIR)/aliases.pag $(PDIR)/aliases.dir: $(PDIR)/aliases $(NEWALIASES)

# Если access изменится, сгенерировать файлы. pag and.dir

access.done: $(PDIR)/access.dir $(PDIR)/access.pag

$(PDIR)/access.dir $(PDIR)/access.pag: $(PDIR)/access $(POSTMAP) $(PDIR)/access

#

# Копирование

#

push.done: push.aliases.done push.access.done

ssh server2 "cd /etc && make"

touch $@

push.aliases.done: aliases.done

scp $(PDIR)/aliases server2:$(PDIR)/aliases

touch $@

push.access.done: access.done

scp $(PDIR)/access server2:$(PDIR)/access

touch $@

Этот Makefile является для вас хорошей стартовой площадкой. Он довольно сложен, потому что нам нужна гарантия того, что Postfix перезагрузится, лишь когда это абсолютно необходимо.

Такой Makefile избавляет вас от необходимости помнить множество команд, в том числе те, которые необходимы для обновления конкретных файлов. Вы больше не боитесь забыть какую-то команду. Многие сложные процедуры теперь сводятся к двум шагам:

Перейти на страницу:

Похожие книги

Искусство управления IT-проектами
Искусство управления IT-проектами

В отличие от множества трудов, посвященных руководству проектами и командами, в этой книге не проповедуются никакие новые учения и не превозносятся великие теории. Скотт Беркун считает залогом успеха практику и разнообразие подходов. В книге описываются основные сложности и проблемные ситуации, возникающие в работе менеджера проекта, даны рекомендации по выходу из них.Издание предназначено не только для лидеров команд и менеджеров высшего звена, но и для программистов, тестеров и других исполнителей конкретных проектных заданий. Также оно будет полезно студентам, изучающим бизнес-менеджмент, проектирование изделий или программную инженерию.Текст нового издания значительно переработан автором с целью добиться большей ясности, кроме того, книга дополнена новым приложением и более чем 120 практическими упражнениями.

Скотт Беркун

Деловая литература