книги хакеры / журнал хакер / 186_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
|
|
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
130m |
SYN/ACK |
||||
w Click |
|
|||||||||
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
ŤŠŤţŭŖŨśšŲţŤś
ťŦśŚšŤŜśţŞś
ЗНАКОМИМСЯ
С ВОЗМОЖНОСТЯМИ FOREMAN
Поддерживать вручную сегодняшнюю сеть, состоящую из множества систем, очень сложно и накладно. Нужны инструменты, обеспечивающие управление полным жизненным циклом, включая развертывание ОС, последующее конфигурирование и аудит изменений. Foreman как раз и предлагает все необходимое.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
ХАКЕР 07 /186/ 2014 |
|
|
|
|
|
|
||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|
ВОЗМОЖНОСТИFOREMAN |
|
Сегодня доступно большое количество инструментов, позво- |
|
ляющих быстро развернуть и настроить ОС, отслеживать со- |
|
стояние и поддерживать требуемую конфигурацию. Для Win |
|
здесь несомненный лидер — SCCM. А вот полноценные ана- |
Мартин «urban.prankster» |
логи для *nix только начинают набирать силу. Сегодня адми- |
Пранкевич |
нистратору приходится управляться с целым рядом инстру- |
martin@synack.ru |
ментов, каждый из которых выполняет свою роль. Это удобно |
|
для разработки, но очень усложняет поддержку, и результат |
|
не совсем нагляден. Проект Foreman (theforeman.org) — если |
|
точнее, то The Foreman — является, по сути, надстройкой над |
|
некоторыми open source решениями, обеспечивая управление |
|
системами на протяжении всего их жизненного цикла, от раз- |
|
вертывания и конфигурирования до мониторинга (Provisioning, |
|
Configuration, Monitoring). С его помощью можно легко авто- |
|
матизировать любые повторяющиеся задачи, управлять из- |
|
менениями на тысячах серверов, размещенных на голом же- |
|
лезе или в облаке, отслеживая их состояние. Концепция групп |
|
серверов config group позволяет отдавать команды сразу не- |
|
скольким системам, вне зависимости от их расположения. |
|
Проект немолодой: версия 0.1 появилась в сентябре |
|
2009 года, с тех пор усилиями сообщества он развивал- |
|
ся быстрыми темпами и за несколько лет вырос в стабиль- |
|
ное решение, готовое к продакшен-внедрению. Например, |
|
Foreman используется в RHOS Red Hat OpenStack (redhat. |
|
com/openstack) для конфигурирования узлов. Написан он |
с использованием Ruby и JavaScript. Foreman может работать в двух режимах:
•basic — основной режим, когда он самостоятельно выполняет все операции по автоматической настройке узлов;
•unattended — фактически GUI для генерации и управления конфигурационными файлами, необходимыми для развертывания хостов.
Foreman состоит из нескольких компонентов, которые могут быть развернуты на одном сервере, или возможна мультисерверная установка:
•Smart Proxy — представляет собой автономный вебкомпонент, который помещается на хосте и позволяет обеспечить подключение Foreman к TFTP, DHCP (ISC DHCP, MS DHCP), DNS (Bind, MS DNS), Chef Proxy, Realm (FreeIPA), Puppet и Puppet CA. Один Smart Proxy может управлять не-
сколькими сервисами, но можно использовать автономную установку;
•интерфейс управления WebGUI, CLI и API;
•Configuration Management — решение для управления кон-
фигурацией на основе Puppet и Chef, включая Puppet ENC (external node classifier) с встроенной поддержкой для параметризованных классов и иерархией параметров;
•СУБД (MySQL, PosgreSQL или SQLite) — хранение настроек и отчетов;
•управляемые компьютеры.
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
ХАКЕР m |
07 /186/ 2014 |
|||||||
|
|
|||||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
Окончательное предложение
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m |
|
w131Click |
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Если уже есть развернутые сервисы TFTP, DHCP, DNS, Puppet, их можно просто подключить к Foreman через Smart Proxy, не ставя и настраивая повторно. В случае мультисерверной установки выбирается основной сервер, который обеспечивает GUI, конфигурацию узлов, файлы начальной установки
ипрочее. Параметры Puppet могут как создаваться вручную, так и импортироваться с Puppet Master. Для установки ОС используются любые репозитории пакетов. Конечно, если планируется развертывание большого количества систем, лучше предварительно создать свое зеркало и использовать его. Это заметно уменьшит трафик и увеличит скорость.
Веб-интерфейс не локализован (при желании это легко сделать самостоятельно), но большинство параметров понятно, и путаницы не возникает. Да и его внедрением вряд ли будет заниматься админ-новичок.
Все возможности пользователя по управлению хостами, функциями Foreman и другими ресурсами (домены, учетные записи, узлы, параметры среды, настройки Puppet и прочее) определяются правами (просмотр, создание, редактирование
иудаление), которые, в свою очередь, регулируются ролью. Только глобальный администратор, создаваемый во время установки, не имеет ограничений. Система предлагает две встроенные роли: Anonymous (получают все пользователи вне зависимости от других ролей) и Default user. Последняя не совсем роль, а, по сути, шаблон, который используется при создании новой роли. В итоге любой пользователь получает доступ в рамках роли Anonymous + набор ролей, определенных админом. Окончательные разрешения легко определяются при помощи фильтров.
Поддерживается аутентификация средствами LDAP и Active Directory, в том числе может работать совместно с опенсорсной системой идентификации пользователей
FreeIPA (freeipa.org).
Сегодня Foreman предлагается некоторыми облачными провайдерами и обеспечивает работу с Amazon EC2, Google Compute Engine, Libvirt, OpenStack, oVirt и RHEV Rackspace, VMware. Поддерживается установка на RHEL 6 и клоны
(CentOS, Scientific Linux), Fedora, Ubuntu 12.04/14.04 LTS, Debian 6/7, OpenSUSE и Solaris.
УСТАНОВКАFOREMAN
На сегодня текущая версия — 1.5. Проект предлагает по-
дробный мануал (theforeman.org/manuals/1.5), в котором от-
ражены основные моменты. Но написан он, скорее всего, «для себя», часть информации дается поверхностно, и в процессе развертывания выясняется, что упущены многие тонкости. Или, может быть, разработчики полагают, что Foreman вряд ли будет ставить новичок, поэтому с мелочами желающие разберутся сами. В частности, с установкой и настройкой Puppet, TFTP, DNS и остальных сервисов придется разбираться самостоятельно.
Ставить будем на Ubuntu 14.04 LTS, для других дистрибутивов основные моменты будут также актуальны, кроме особенностей пакетной системы.
Вначале необходимо настроить разрешение имени через службу DNS, проверить это можно, выполнив hostname -f. Для этого как минимум в /etc/hosts должен быть прописан
1.2.3.4 example.org example
Также нужно открыть порты 53TCP\UDP, 67–69 UDP, 80, 443, 3000, 3306 (MySQL) или 5432 (PostgreSQL), 5910–5930 (VNC-
консоль), 8140 и 8443. Для установки предлагается свой репозиторий:
$sudo echo "deb http://deb.theforeman.org/ trusty 1.5" > /etc/apt/sources.list.d/foreman.list
$sudo echo "deb http://deb.theforeman.org/ plugins 1.5" >> /etc/apt/sources.list.d/foreman.list
$sudo wget -q http://deb.theforeman.org/foreman. asc -O- | sudo apt-key add -
Установку можно производить, указав нужные пакеты из состава Foreman, возможен вариант и сборки при помощи сырцов. Но рекомендуется весь процесс поручить специальному скрипту foreman-installer. Он представляет собой набор
CLI
Командный интерфейс Foreman базируется на фреймворке hammer (github.com/ theforeman/hammer-cli) и обеспечивается утилитой hammer, которая, в свою очередь, считывает ряд конфигурационных файлов, расположенных в каталоге hammer (внутри обязательный файл cli_config.yml и подкаталог cli.modules.d,
указывающие на плагины, которые необходимо подгрузить, по умолчанию все отключены). Сам каталог hammer может быть в текущей директории (./config/ hammer/), общесистемным (/etc/hammer), в домашнем каталоге пользователя (~/.hammer/) или в произвольном месте, на которое указывается при помощи ключа -С. В поставке Foreman имеются примеры, которые следует скопировать и изменить по своему усмотрению. Список параметров можно получить стандартной командой hammer -h. Принцип работы очень несложен: просто указываем те же параметры, что и в GUI. Например, создадим Smart Proxy:
$hammer proxy create --name myproxy --url https://proxy.my.net:8443
Создаем новую ОС:
$ hammer os create --name Ubuntu --major 14 -- |
minor 04 |
модулей Puppet, который самостоятельно скачивает и ставит все компоненты — Foreman web UI (Apache HTTPS), Smart Proxy, Passenger с PostgreSQL (ставится по умолчанию) и оп-
ционально TFTP, ISC DHCP и BIND DNS — и производит нужные конфигурации:
$sudo apt-get update && apt-get install foreman-installer
Все параметры скрипта можно получить при помощи ключа --help. Их на самом деле очень много: выбор СУБД (MySQL, PostgreSQl или SQLite), очистка старой базы данных, установка учетных записей для разных сервисов, подключение/отключение плагинов, настройка параметров DNS/DHCP/tftp, активация модулей и многое другое. Например, при развертывании в Amazon EC2 потребуется включить нужный модуль:
$sudo foreman-installer --enable-foreman-compute-ec2
Чтобы во всем разобраться, необходимо время, и, к сожалению, из документации не всегда понятно, какие значения используются по умолчанию. Хотя в ней приводится пара примеров для установки в режиме Standalone Puppet master, без Puppet master и отдельно Smart proxy. Для озна-
комления с текущими настройками можно использовать файл
/etc/foreman/foreman-installer-answers.yaml, в котором будет прописана вся информация по параметрам установки в /usr/ share/foreman-installer/README.md.
Информацию по параметрам можно найти в foreman-installer- answers.yaml
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
|
E |
|
|||
|
|
X |
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
||
|
F |
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
|
P |
|
|
|
|
|
NOW! |
o |
||
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|||
|
|
|
|
to |
132 m |
||||
w Click |
|
||||||||
|
|
||||||||
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
. |
|
|
|
|
|
.c |
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
df |
|
|
n |
e |
||
|
|
|
|
-xcha |
|
|
|
SYN/ACK
|
|
|
|
hang |
e |
|
|
|
|
||
|
|
|
C |
|
E |
|
|
||||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
m |
|||||
ХАКЕР 07 /186/ 2014 |
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Интересен вариант запуска установщика в интерактивном режиме foreman-installer -i, когда, отвечая на вопросы, можно выбрать наиболее подходящие параметры. Но при первом знакомстве и в режиме одного сервера достаточно оставить все параметры по умолчанию.
$sudo foreman-installer
Впроцессе установки в Ubuntu 14.04 произошли два сбоя при запуске Apache. В первом случае сообщение выдало, что слишком много грузим MPM-модулей. Отключаем:
$ sudo a2dismod mpm_event
Далее Apache заявил, что файлов сертификатов в /var/lib/ puppet/ssl не существует или они пусты. Проверяем при помощи ls, все на месте. Вероятно, дело в правах доступа. Решаем просто — добавим учетку веб-сервера www-data в группу puppet:
$ cat /etc/group
puppet:x:127:foreman,foreman-proxy,www-data
Перезапускаем Apache:
$ sudo service apache2 restart
Теперь работает. После установки конфигурационные фай-
лы можно найти в каталоге /etc/foreman и /usr/share/foreman.
Подключаемся к интерфейсу Foreman браузером к 433-му порту сервера (https://fqdn/) с логином и паролем admin
и changeme.
ПЕРВОНАЧАЛЬНАЯКОНФИГУРАЦИЯFOREMAN
Интерфейс сложным назвать тяжело. Все установки на месте и производятся в пяти вкладках: Monitor (статистика, отчеты, тренды, аудит), Hosts (подключение и настройка узлов), Configure (параметры среды и группы узлов), Infrastructure (настройка собственно компонентов Foreman) и Administer (аутентификация, учетные записи, роли). При определенном опыте назначение многих параметров очевидно, в случае неправильного заполнения интерфейс выдает подсказки, не всегда, правда, внятные, но ошибочное значение ввести нельзя. Нужно просто пройтись, чтобы знать, что и где редактируется, и в последующем быстро найти. Настроек хватает, поэтому разберем основные.
Перед началом работы с Foreman необходимо выполнить ряд установок, о некоторых из них предупреждают в первом окне Welcome, появляющемся после входа в систему. Все настройки работы самого Foreman можно отредактировать двумя способами: напрямую файл /usr/share/foreman/config/ settings.yaml и в разделе Administer Settings интерфейса.
Слева: Первоначальные операции указаны в окне Welcome
Справа: Создание класса Puppet
Причем некоторые параметры редактируются только первым способом (они не помечаются значком Click to edit). В Settings
четыре вкладки: General, Auth, Puppet, Provisioning. Здесь най-
дем настройку SSL, параметров авторизации и SSO, переменные по умолчанию и многое другое. Подробно они описаны
вдокументации (раздел 3.5.2 Configuration Options). Настрой-
ки подключения к СУБД описываются /etc/foreman/database. yml. Внутри файла все понятно, в принципе, ничто не мешает
впоследующем мигрировать на другую СУБД, поддерживаемую Foreman. Более того, предусмотрен даже вариант работы сразу с двумя СУБД: одна в продакшен (production), а вторая
врежиме разработки (development).
При запуске скрипта без дополнительных параметров foreman-installer компонента автоматически ставится и Smart Proxy. Сами сервисы Puppet/DNS/DHCP/tftp и прочие не уста-
навливаются и не настраиваются, этим необходимо будет заняться самостоятельно. Это чуть усложняет процесс, но зато нет конфликтов и уверен, что все работает, как нужно. Если Smart Proxy следует развернуть отдельно, проще поставить пакет foreman-proxy или использовать сырцы. Настройки Smart Proxy производятся при помощи файла /etc/foremanproxy/settings.yml или config/settings.yml, наличие которого также показывает, что компонент установлен. Структура файла понятна и хорошо комментирована, внутри поблочно описывается подключение к разным сервисам.
Настройки также можно произвести и при помощи вебинтерфейса, для этого следует перейти по ссылке из Welcome
или в Infrastructure Smart Proxy. Просто выбираем New Proxy
и заполняем поля «Имя» и «IP». Например:
Name: Puppet-Proxy
URL: http://example.org:8443
В документации приведены подробные примеры и объяснения по настройке каждого типа прокси. Учетные записи, роли и параметры подключения к LDAP/AD задаются во вкладке Administer. Здесь, в общем, ничего сложного, все операции стандартные. Также хочется обратить внимание на специальную страницу Trends, позволяющую отслеживать изменение состояний узлов в течение времени. Страница состоит из собственно отслеживаемых трендов и настраиваемых счетчиков. Чтобы определить счетчики, используем Add Trend Counter, после чего редактируем параметры при помощи Edit. Затем периодически при помощи cron запускаем задание на сбор данных:
0 * * * * /usr/sbin/foreman-rake trends:counter
Во вкладке Audit проводится аудит всех действий пользователя, специальные фильтры позволяют выбрать данные по любому объекту или пользователю. Возможно сохранение шаблона изменений и сравнение с предыдущими шаблонами.