Как установить и использовать CFEngine Community Edition в Ubuntu 14.04

Вступление

Если вы ищете быстрый и легко масштабируемый инструмент управления конфигурацией для своей ИТ-инфраструктуры, вам следует попробовать 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.

Related