Установка и использование CFEngine Community Edition в Ubuntu 14.04
Ubuntu, VPS | Комментировать запись
CFEngine – быстрый и масштабируемый инструмент для управления конфигурациями IT-инфраструктур. Функциональность CFEngine мало чем отличается от набора функций других аналогичных инструментов (например, Puppet и Chef), однако эта программа занимает гораздо меньше места в памяти, тратит меньше ресурсов CPU и, как правило, работает быстрее, потому что написана в C.
Данное руководство продемонстрирует установку CFEngine Community Edition 3.6.5 на сервер Ubuntu 14.04.
Требования
Чтобы следовать руководству, нужно:
- Запустить сервер Ubuntu 14.04;
- Создать не-root пользователя с правами sudo.
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: CFEngine, CFEngine Community Edition, Ubuntu 14.04