The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Операционные системы" / Оглавление документа

1. Обзор

В данном руководстве слово хост используется для описания одной компьютерной системы, то есть одной машины с именем hostname.

1.1 Что такое cfengine и для кого он предназначен?

Cfengine инструмент для создания и поддержания работы компьютерных систем. Он состоит из нескольких компонентов:

Cfagent        автономный конфигуратор (обязателен)

Cfservd        файл-сервер, возможность  удалённого запуска (по желанию)

Cfexecd        возможность создания расписаний и вывода отчётов (желательно)

Cfenvd        возможность выявления ошибок (весьма желательно)

Cfrun        способ удалённого запуска cfagent (используется при необходимости)

Cfshow        анализ содержимого вспомогательных баз данных (помощник)

Cfenvgraph    вспомогательный инструмент для cfenvd (помощник)

Cfkey        механизм генерации ключей (запускается единожды на каждом хосте)

Для работы cfagent не требуется установка других программ, но все возможности cfengine станут доступны только после того, как все компоненты будут установлены и используемы должным образом.

Cfengine использует специальный язык, гораздо более высоко уровня, нежели Perl или Shell: одно предложение может запускать несколько сотен операции на нескольких хостах. Cfengine отлично подходит для выполнения множества стандартных системных заданий администрирования и позволяет увеличить его возможности с помощью пользовательских скриптов.  Он также может быть использован в качестве клиентской части всей сети для cron. Установка cfengine избавит пользователя от необходимости ручной конфигурации, предоставляя ему больше свободного времени для выполнения других заданий.

Главная задача cfengine предоставить возможность создания единой конфигурации системы, которая позволит определять конфигурацию каждого из хостов сети, причём делать это интуитивно централизовано или децентрализоавано, в зависимости от желания. Интерпретатор работает на каждом из компьютеров пользовательской сети и анализирует master file (или множество файлов). В соответствии с этим файлом проверяется конфигурация каждого хоста. Затем, по запросу пользователя, он автоматически фиксирует любые отклонения от заданной конфигурации. Для конфигурации  хостов не нужно отдельно задавать их имена: вместо этого можно ввести определённые характеристики, отличающие один хост от другого. Cfengine использует гибкую систему классов, которая позволяет одним предложением выделить определённую группу хостов.

Cfengine был создан в университетском колледже города Осло из необходимости контролировать процесс накопления различных shell scripts  скриптов, используемых для автоматизации процесса поддержания основной системы. Тогда было написано множество скриптов на Perl и shell, выполняющих такие задачи администрирования, как отчистка файлов, нахождение обновлений базы данных, проверка выполняемых процессов и ряд других. Скрипты, написанные на shell очень плохо работают в смешанной среде: синтаксис таких команд различается в зависимости от операционной системы, как и расположение и имена ключевых файлов. На самом деле, отсутствие единообразия в Unix вызывало огромную проблему. Скрипты содержали такое множество тестов, определяющих, на какой операционной системе они выполняются, что в последствии стали настолько громоздкими и трудными для чтения, что практически никто не мог разобраться, какие задачи они выполняют. Другие скрипты запускались только на подходящих для них системах, где их можно было не замечать и просто забыть. Вскоре стало ясно, что идеальным решением стала бы замена такого разрастающегося множества скриптов одним файлом, содержащим всё необходимое для того, чтобы работать на любом хосте сети. Благодаря разработке нового языка, такой файл мог бы скрыть все упомянутые выше тесты, используя систему классов для обозначения операций (обобщённый синтаксис переключатель \ случай) и повышения удобочитаемости. Постоянное совершенствование этой идеи привело к созданию современного cfengine.

Неопытный пользователь cfengine, вероятно, будет пытается проделывать все операции также, как он делал бы это при работе с Perl или в shell. Это не лучший способ работы с cfengine. Пользователю придётся приспособиться к другому образу мышления, который соответствует cfengine. Читая данное руководство, следует помнить, что способ работы cfengine  - думать о том, каким должен быть конечный результат, а не о том, каким путём его добиться (работая с Perl и shell необходимо описывать скорее действия, а не результат).

Последующие главы данного руководства предполагают, что пользователь немного знаком с BSD и системами UNIX System V, а также является опытным пользователем C shell (csh) или Bourne shell (sh), или других производных. Опытный системный администратор может опустить первые главы и сразу перейти к рассмотрению примеров в разделе Примеры конфигурационных файлов в Дополнении к руководству. Такой способ, возможно, является самым быстрым для начинающих. Если же Вы не настолько хорошо знакомы с системным администрированием и хотели бы изучить всё более детально, тогда переходите к следующим главам...

 

1.2. Конфигурация сайта

Системный администратор небольшой сети с несколькими рабочими станциями или, например, всего лишь с одной центральной системой, скорее всего, не будет создавать большой проблемы из администрирования системы. В конце концов, для них всегда проще оказывается вручную настроить все параметры при возникновении каких-либо проблем: в одном месте создать ссылку, в другом написать скрипт и т.д., и, скорее всего, они не считают нужным записывать все проделанные ими операции, потому что знают, что всегда проще настроить всё в следующий раз снова, и так по кругуНо сеть имеет тенденцию расширяться и (прежде чем это узнать), существует пять различных типов операционных систем, каждую из которых необходимо конфигурировать по-своему, для каждой из систем нужно создавать патчи. В результате, не всегда можно вспомнить, настроен ли уже тот или иной хост в другом конце зданияТакже довольно быстро становиться понятно, что BSD или System V не настолько придерживаются единых стандартов, насколько можно предполагать. Ни один простой скрипт, работающий на одной из систем, не будет работать на другой без тщательного анализа и неоднократного тестирования. Попытка написать скрипт, который поможет автоматизировать эти процессы, заканчивается огромным количеством условий ifthen...esle, глядя на которые становиться очень сложно разобраться в том, что же на самом деле происходит.

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

Идея, лежащая в основе cfengine - сконцентрировать внимание на нескольких ключевых аспектах базового системного администрирования и создать язык, на котором программы конфигураций станут оптимально понятными. Он избавляет от необходимости неоднократного тестирования за счёт возможности организовывать сеть по классовому принципу. С помощью одного конфигурационного файла (или набора файлов) возможно определять, как следует конфигурировать сеть, а затем cfengine будет анализировать такой файл и выполнять все инструкции, сообщая о возникающих в процессе ошибках.

 

1.3. Ключевые понятия

Некоторые важные аспекты в системном администрировании, в которых cfengine

может оказаться полезным.

1.3.1 Файлы конфигурации и реестры

Одной из привлекательных черт BSD и System V является тот факт, что они конфигурируются через понятные для чтения текстовые файлы. Чтобы добавить в систему нового пользователя необходимо редактировать /etc/passwd, чтобы добавить новый диск /etc/fstab и т.д.. Многие другие операции также выполняются с помощью текстовых файлов. Устанавливая новую систему впервые или обновляя старую, неизбежно приходиться сталкиваться с необходимостью редактировать множество текстовых файлов. В некоторых случаях, при внесении каких-либо изменений, приходиться добавлять одну и ту же строчку в один и тот же файл для каждой системы сети. Именно поэтому автоматизирование этого процесса оказалось бы весьма полезным, так как избавило бы администратора от необходимости вручную загружать каждый файл через текстовый редактор и самостоятельно вносить изменения. Это одна из тех операции, которую позволить автоматизировать cfagent. В операционной системе Windows данные конфигурации хранятся в базе конфигурации системы (registry). При использовании правильных инструментов cfagent также позволяет редактировать эту базу, но это потребует большей осторожности.

1.3.2 Интерфейс сети

Каждый из компьютеров, подключённых к сети Ethernet, использующей протоколы TCP/IP, должен иметь так называемый сетевой интерфейс. Такой интерфейс должен быть сконфигурирован до того, как будет использован. Обычно, это делается при помощи команд ifconfig. Но cfagent также может выполнить проверку и автоматическую конфигурацию. 

В ходе конфигурации сети необходимо сообщить hardware интерфейса Интернет (IP) адрес системы для того, чтобы он знал, на какие поступающие пакеты данных необходимо обращать внимание. Это включает в себя задание способа интерпретации входящие данных, включает в себя установку маски сети (см. ниже), чтобы задать интерфейсу правила интерпретации получаемых адресов. Наконец, необходимо указать широковещательный адрес, который будет использоваться для одновременной рассылки сообщений на все хосты сети (см дополнение к руководству).

Большинство функции Cfagent в основном предназначены для работы с хостами, использующими статичный IP.  При использовании DHCP клиентов использование функций сетевой конфигурации не требуется.

1.3.3. Сетевая файловая система (NFS) или распространение файлов?

Скорее всего первым желанием при работе с сетью (после формирования впечатления от World Wide Web) станет предоставление доступа к файлам всем или некоторым хостам сети, вне зависимости от их местонахождения. Другими словами, если имеется диск, физически подключённый к хосту А, то задача состоит в том, чтобы сделать содержимое этого диска доступным для хостов B, C, D и т.д. NFS (the Network FileSystem) реализует такую возможность.

Этот процесс реализуется с помощью filesustems. Filesystem (файловая система) - это одна секция дисковода или одна единица пространства на диске, к которой можно получить доступ через одно логическое устройство /dev/something

Для того, чтобы сделать файловую систему доступной для других хостов необходимо сделать три вещи:

Только после того, как были выполнены все вышеперечисленные действия, файловая система станет доступна для всей сети. Cfagent помогает сделать выполнение последних двух операции максимально простым. Для редактирования exports файла также можно использовать возможности работы с текстом cfagent, но существуют и другие способы обновить файл exports используя NIS или netgroups, которые здесь не рассматриваются. В случае возникновения сомнении, смотрите часть  руководства, посвящённую экспортированию (5). Некоторые сайты предпочитают избегать использования файловых систем NFS, с целью избежать зависимости одного устройства от другого. Вместо этого они предпочитают создавать локальные копии файлов на удалённом компьютере. Как правило, для этого используются такие программы, как rdist, но для такого копирования файлов также можно использовать cfagent (см. раздел 6.2.1).

 

1.3.4. Северы имён (DNS)

Существуют два способа установить адрес в Интернет (так называемый, IP адрес). Первый использовать текстовый адрес, например, www.freesource.ru, другой с помощью цифр 217.112.37.140. К сожалению, прямого соответствия между этими числовым и текстовым адресами не существует, поэтому требуется сервис (называемый DNS), который отождествляет одну форму с другой.

Такой процесс осуществляется одним или несколькими специальными хостами сети, называемыми серверами преобразования имён. Каждый из хостов должен знать, как подключиться к такому серверу или он, скорее всего, зависнет при первой попытке присвоить ему IP адрес. Определить способ подключения к серверу преобразования имён можно редактируя текстовый файл /etc/resolv.conf. В этом файле должны содержаться доменное имя домена и список возможных серверов преобразования имён, к которым может выполняться подключение, в порядке приоритета. Так как данный файл является специальным файлом, обязательным для каждого хоста, то использование основных возможностей по работе с текстовыми файлами cfagent не потребуется. Можно просто определить сервера преобразования имён для каждого хоста в файле cfagent , а cfagent уже сам автоматически выполнит редактирование /etc/resolv.conf. Если позже потребуется поменять приоритеты серверов преобразования имён или редактировать сам список, то простое изменение одной - двух строк в файле конфигурации позволит осуществить автоматическую реконфигурацию каждого из хостов сети без необходимости самостоятельно вносить какие-либо изменения.

1.3.5. Мониторинг важных файлов

Безопасность является важной для любой системы. Учитывая всю занятость администратора, понятно, что иногда он может забыть установить нужные правила доступа к каждому файлу, что может повлечь либо возникновение бреши в системе защиты, либо проблемы с доступом к файлам.

Типичный пример, когда администратор с помощью FTP загружает новый пакет, компилирует его и устанавливает, не вдаваясь в подробности. Но учитывая то, что при загрузке автор и права доступа к файлам в FTP архиве остаются теми же, какими их установил автор программы, то зачастую программное обеспечение остаётся с теми данными, которые были присвоены ему создателем, а не именем какого-то пользователя данной системы. Таким образом, владельцем авторского идентификатора может стать любой пользователь сети, или же наоборот ни один! У файлов должен быть владелец и обычным пользователям они должны быть доступны для чтения, но не для записи.

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

<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm

1.3.6. Установка ссылок

Одна из сложностей работы, связанная с наличием множества различных версий BSD и System V операционных систем состоит в том, что аналогичные файлы не всегда находятся там, где можно ожидать. Они могут иметь разные имена или располагаться в разных папках. Стандартным решением данной проблемы является создание алиаса для таких файлов или указателя с одного имени файла на другое. Такой алиас назвется символической ссылкой.

Создание символических ссылок зачастую является очень удобным. Например, может потребоваться сделать конфигурационный файл отправки почты /etc/sendmail.ct ссылкой на глобальный конфигурационный файл, скажем, /usr/local/mail/sendmail.cf/ для каждого хоста сети, чтобы в дальнейшем редактировать приходилось только один файл. Самостоятельное создание таких ссылок может занять вечность. Cfagent же создаст подобные ссылки автоматически и будет проверять их каждый раз при запуске. Также он может стереть все старые ссылки, которые лежат без дела и не указывают ни на какой существующий файл. При переустановке операционной системы также не возникнет никаких проблем, так как все ссылки определены и сохранены в файле конфигурации cfagent. Ни cfagent ни администратор не забудут их, поскольку вся установка определяется в одной центральном месте.

Cfagent также позволяет создавать жёсткие ссылки на регулярные файлы, но не на какие другие. Жёсткая ссылка, указывающая на символическую ссылку, по сути является жёсткой ссылкой на тот файл, на который ссылается символическая.

1.4. Функциональность

Вышеперечисленный материал даёт общее представление о том, для чего может использоваться cfagent. Ниже приведено краткое описание возможностей cfagent:

Как запускать cfagent? Запуск может осуществляться либо с помощью cron, либо вручную. Запускать скрипты и программы cfagent можно с любой частотой. Каждый раз при запуске скрипта, cfengine определяет необходимость выполнения каких-либо действий. В случае, если такой необходимости нет, ничего не будет выполняться. Если cfagent используется для конфигурации и проверки всей системы с центральной базы файлов, то естественней всего периодически запускать cfengine с помощью cron и(или) cfexecd.




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру