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

CFEngine – быстрый и масштабируемый инструмент для управления конфигурациями IT-инфраструктур. Функциональность CFEngine мало чем отличается от набора функций других аналогичных инструментов (например, Puppet и Chef), однако эта программа занимает гораздо меньше места в памяти, тратит меньше ресурсов CPU и, как правило, работает быстрее, потому что написана в C.

Данное руководство продемонстрирует установку CFEngine Community Edition 3.6.5 на сервер Ubuntu 14.04.

Требования

Чтобы следовать руководству, нужно:

1: Добавление репозитория CFEngine

Чтобы установить последнюю версию CFEngine при помощи apt-get, нужно добавить репозиторий пакета CFEngine в список репозиториев сервера. для этого используйте команду:

sudo add-apt-repository 'deb http://cfengine.com/pub/apt/packages stable main'

2: Добавление открытого ключа CFEngine

Добавленный репозиторий нельзя использовать без открытого ключа CFEngine. Добавьте этот ключ в список ключей.

Сначала нужно загрузить ключ на сервер:

wget http://cfengine.com/pub/gpg.key -O /tmp/gpg.key

Затем запустите команду apt-key, чтобы добавить ключ в список:

sudo apt-key add /tmp/gpg.key

3: Установка CFEngine

Теперь можно использовать менеджер пакетов apt, чтобы установить CFEngine Community Edition.

sudo apt-get update && sudo apt-get install cfengine-community

Чтобы убедиться, что установка прошла успешно, используйте:

cf-agent --version

На экране появится вывод:

CFEngine Core 3.6.5

4: Включение полиси-хаба

Примечание: policy hub – это сервер, используемый в качестве централизованного хранилища политик.

В данном руководстве один и тот же сервер Ubuntu используется и как хаб, и как клиент. Чтобы запустить хаб CFEngine, используйте эту команду, указав свой IP:

sudo cf-agent --bootstrap your_server_ip

После успешного выполнения данной команды программа CFEngine будет полностью настроена и готова к работе.

Примечание: Если вы хотите управлять несколькими машинами при помощи данного сервера Ubuntu, повторите первые три раздела для каждой из машин. Чтобы настроить эти машины в качестве клиентов, нужно запускать команду bootstrap с IP-адресом текущего сервера Ubuntu.

5: Создание политики CFEngine

Чтобы автоматизировать системное администрирование с помощью CFEngine, нужно создать файл политики. Этот файл пишется на специальном предметно-ориентированном языке CFEngine. Попробуйте создать простую политику «Hello World». При помощи nano или любого другого текстового редактора создайте файл myPolicy.cf в каталоге /tmp.

nano /tmp/myPolicy.cf

Команды, которые будет выполнять CFEngine, нужно объединять в связки (такая связка называется bundle). Существует несколько видов bundle-ов. В этом руководстве показано, как создать bundle для cf-agent. Чтобы вывести сообщение в консоль, используйте параметр reports.

bundle agent SayHello {
reports:
"Hello!";
}

Сохраните и закройте файл.

Теперь запустите политику при помощи команды cf-agent.

sudo cf-agent -b SayHello /tmp/myPolicy.cf

На экране должен появиться вывод:

R: Hello!

6: Добавление политики на сервер

Итак, только что вы вручную создали политику для команды cf-agent. Чтобы политика запускалась автоматически (и, что очень важно – на нескольких машинах), её нужно добавить на сервер политики. По умолчанию политики, добавленные на сервер, запускаются каждые 5 минут.

Теперь попробуйте написать более сложную политику, которая будет создавать файл в каталоге /tmp.

При помощи nano или другого текстового редактора создайте файл createFilePolicy.cf:

nano /tmp/createFilePolicy.cf

Используйте параметр files, который будет создавать файл, и reports, который будет сообщать о том, что файл был создан.

Следующая политика будет создавать пустой файл hello.txt в каталоге /tmp.

bundle agent CreateHelloFile {
files:
"/tmp/hello.txt"
create => "true";
reports:
"File created";
}

Добавьте в файл этот код, а затем сохраните и закройте его.

Запустите политику:

sudo cf-agent -b CreateHelloFile /tmp/createFilePolicy.cf

Затем используйте команду ls, чтобы убедиться, что в каталоге /tmp был создан файл hello.txt.

ls /tmp

Убедившись в том, что политика работает должным образом, добавьте её на сервер.

Сервер политик обслуживает их из каталога /var/cfengine/masterfiles/. Следовательно, нужно просто скопировать политику createFilePolicy.cf в каталог masterfiles:

sudo cp /tmp/createFilePolicy.cf /var/cfengine/masterfiles/

Но пока что CFEngine не знает о новой политике. Чтобы сообщить программе о том, что в настройках появилась новая политика и новый bundle, нужно добавить ссылки на них в promises.cf, главный файл политик CFEngine. Отредактируйте promises.cf при помощи nano:

sudo nano /var/cfengine/masterfiles/promises.cf

Добавьте имя политики в конец списка inputs. В данном случае файл будет выглядеть так:

inputs => {
...
# List of services here
"services/file_change.cf",
"createFilePolicy.cf",
};

Примечание: В конце строки обязательно должна стоять запятая!

Кроме того, нужно внести имя bundle-а в список bundlesequence (в начале файла политики). Внесите CreateHelloFile в конец этого списка:

bundlesequence => {
...
# Agent bundle
cfe_internal_management,   # See cfe_internal/CFE_cfengine.cf
service_catalogue,
@(cfengine_enterprise_hub_ha.management_bundles),
CreateHelloFile,
};

Примечание: В конце строки должна стоять запятая!

Сохраните и закройте файл.

Итак, теперь политика добавлена на сервер и будет запускаться каждые 5 минут. То есть, даже если вы удалите файл /tmp/hello.txt, через 5 минут CFEngine автоматически создаст его снова.

Чтобы удалить политику, сначала нужно удалить все данные о ней из файла promises.cf, а затем удалить её из каталога masterfiles.

Заключение

Итак, теперь на сервер Ubuntu 14.04 установлен простой инструмент CFEngine Community Edition, позволяющий запускать политики вручную и автоматически, а также управлять настройками сервера.

Более подробную информацию о предметно-ориентированном языке CFEngine можно прочесть в этом руководстве.

Tags: , ,

Добавить комментарий