Вступление
Если вы ищете быстрый и легко масштабируемый инструмент управления конфигурацией для своей ИТ-инфраструктуры, вам следует попробовать CFEngine. Хотя функциональность, которую он предлагает, очень похожа на те, которые предлагаются другими популярными инструментами, такими как Puppet и Chef, CFEngine занимает гораздо меньше места, как с точки зрения использования памяти и процессора, так и в целом быстрее, потому что он написан на C и, таким образом, работает изначально на ОС.
Из этого руководства вы узнаете, как установить и использовать CFEngine Community Edition 3.6.5 в Ubuntu 14.04.
Предпосылки
Прежде чем начать, вы должны иметь доступ к:
-
Сервер под управлением Ubuntu 14.04
-
Пользователь non-root sudo.
Шаг 1 - Добавление репозиториев пакетов CFEngine
Чтобы установить последнюю версию CFEngine с помощью + apt-get +
, вы должны добавить репозитории пакетов CFEngine в список репозиториев вашего сервера. Используйте команду + add-apt-repository
для этого:
sudo add-apt-repository 'deb http://cfengine.com/pub/apt/packages stable main'
Шаг 2 - Добавление открытого ключа CFEngine
Репозиторий, который вы добавили на предыдущем шаге, нельзя использовать, пока вы не добавите открытый ключ CFEngine в список доверенных ключей APT.
Загрузите открытый ключ CFEngine с помощью + wget +
.
wget http://cfengine.com/pub/gpg.key -O /tmp/gpg.key
Используйте + apt-key +
, чтобы добавить его в список доверенных ключей.
sudo apt-key add /tmp/gpg.key
Шаг 3 - Установка CFEngine
Теперь вы можете использовать + apt-get +
для установки CFEngine Community Edition.
sudo apt-get update && sudo apt-get install cfengine-community
Прежде чем продолжить, проверьте установку:
cf-agent --version
Вы должны увидеть следующий вывод:
Вывод cf-agent
CFEngine Core 3.6.5
Шаг 4 - Запуск Центра политики
Поскольку в этом учебном пособии мы используем один сервер Ubuntu, мы будем использовать его как в качестве центра политики, так и в качестве клиента. Чтобы запустить центр политики CFEngine, вы должны загрузить его с IP-адресом вашего сервера.
sudo cf-agent --bootstrap
Как только эта команда завершится успешно, у вас будет полностью настроен и готов к использованию CFEngine на вашем сервере.
Шаг 5 - Создание вашей первой политики
Чтобы автоматизировать задачу системного администрирования с помощью CFEngine, вы должны создать для нее файл политики. Файл политики написан на собственном DSL (язык, специфичный для домена) CFEngine. Язык имеет довольно крутую кривую обучения, но выполнять основные задачи с ним легко.
Давайте начнем с создания простой политики «Hello World». Используйте + nano +
или ваш любимый текстовый редактор, чтобы создать новый файл с именем + myPolicy.cf +
в каталоге + / tmp +
:
nano /tmp/myPolicy.cf
Команды, которые вы хотите выполнить с помощью CFEngine, должны быть сгруппированы в bundle. Связки могут быть разных типов. Сейчас вы будете создавать пакет, который может понравиться + c & f-agent
. Для вывода сообщения на консоль следует использовать обещание + reports +
. Соответственно добавьте следующий код в файл:
myPolicy.cf
bundle agent SayHello {
reports:
"Hello!";
}
Сохраните файл и выйдите.
Теперь вы можете запустить вашу политику с помощью команды + cf-agent
.
sudo cf-agent -b SayHello /tmp/myPolicy.cf
Вы должны увидеть следующий вывод:
Вывод cf-agent
R: Hello!
Шаг 6 - Добавление политики на сервер политики
На предыдущем шаге вы запустили политику вручную с помощью команды + cf-agent
. Чтобы запустить политику автоматически - и, что более важно, на нескольких машинах - вы должны добавить ее на сервер политики. По умолчанию политики, добавленные на сервер, выполняются раз в 5 минут с помощью + cf-agent +
.
Давайте теперь напишем немного более продвинутую политику, которая создает файл в каталоге + / tmp +
.
Используйте + nano +
или ваш любимый текстовый редактор, чтобы создать новый файл с именем + createFilePolicy.cf +
:
nano /tmp/createFilePolicy.cf
В этой политике вы будете использовать обещание + files +
для создания файла, а обещание + reports +
отображать сообщение о том, что файл был создан.
Следующая политика создает пустой файл с именем + hello.txt +
в каталоге + / tmp +
. Добавьте следующий код в политику:
createFilePolicy.cf
bundle agent CreateHelloFile {
files:
"/tmp/hello.txt"
create => "true";
reports:
"File created";
}
Сохраните ваш файл и выйдите из + nano +
.
Запустите политику, введя следующую команду:
sudo cf-agent -b CreateHelloFile /tmp/createFilePolicy.cf
После его завершения вы можете запустить команду + ls +
, чтобы увидеть, что + hello.txt +
был создан в + / tmp +
.
ls /tmp
Теперь, когда мы знаем, что в нашей политике нет ошибок и она делает то, что должна, давайте добавим ее на сервер.
Сервер политик обслуживает свои политики из каталога + / var / cfengine / masterfiles / +
. Поэтому скопируйте + createFilePolicy.cf +
в + masterfiles +
:
sudo cp /tmp/createFilePolicy.cf /var/cfengine/masterfiles/
Затем, чтобы CFEngine узнал о вашем файле политики и пакете внутри него, ссылки на них должны быть добавлены в + promises.cf +
, основной файл политики CFEngine. Используйте + nano +
для редактирования + promises.cf +
:
sudo nano /var/cfengine/masterfiles/promises.cf
Добавьте имя вашего файла политики в конец списка + input +
. После изменений список должен выглядеть так:
Promises.cf выдержка
inputs => {
...
# List of services here
"services/file_change.cf",
};
Убедитесь, что вы не пропустите запятую в конце строки.
Кроме того, имя пакета в вашем файле политики должно быть упомянуто в списке + bundlesequence +
вверху файла. Добавьте + CreateHelloFile +
в качестве последнего элемента + bundlesequence +
:
Promises.cf выдержка
bundlesequence => {
...
# Agent bundle
cfe_internal_management, # See cfe_internal/CFE_cfengine.cf
service_catalogue,
@(cfengine_enterprise_hub_ha.management_bundles),
};
Убедитесь, что вы не пропускаете запятую в конце строки. Сохраните файл и выйдите.
Ваша политика была добавлена на сервер политики и будет запускаться каждые пять минут. Это означает, что даже если вы удалите + / tmp / hello.txt +
, CFEngine автоматически создаст его снова через пять минут.
Если вы хотите удалить политику, вы должны сначала удалить имя пакета и имя файла политики из + promises.cf +
, а затем переместить файл политики из каталога + masterfiles +
.
Заключение
Из этого руководства вы узнали, как установить последнюю версию CFEngine Community Edition на сервер Ubuntu 14.04 с использованием репозиториев пакетов CFEngine. Вы также узнали, как создавать и запускать простые политики как вручную, так и автоматически. Теперь вы можете использовать CFEngine для управления конфигурацией вашего сервера.
Чтобы узнать больше о DSL, обратитесь к CFEngine 3.6 Manual.