Foreman linux что это
Foreman — менеджер процессов для ваших веб-приложений
Все более популярной становится модель разработки веб-приложений, основанная на идее масштабирования с помощью процессов. Современное приложение представляет из себя набор выполняющихся процессов, не хранящих состояния, причем каждый изолирован друг от друга. Каждому такому процессу назначается свой локальный порт, что позволяет прозрачно экспортировать ваши сервисы для последующего их потребления кем-нибудь еще, возможно даже, что друг другом (например, один обслуживает http-запросы от пользователей, принимая url-адреса видео, а другой медленно, но верно, загружает их и конвертирует). Как правило, в большинстве случаев http-сервисы просто ставят за reverse proxy в nginx, но возможны варианты.
Не секрет, что у каждого разработчика есть свой арсенал инструментов, позволяющий ему так или иначе сделать свою жизнь проще. Сегодня мы поговорим о таком инструменте, как Foreman. Используя его, вы можете объявить в одном месте все процессы, которые необходимы для запуска вашего приложения. Для этого используется так называемый Procfile, который выглядит как-то так:
Как видите, все довольно просто, в каждой строчке файла содержится по названию типа процесса и строка для его запуска.
▌ Установка и использование
Чтобы начать им пользоваться, достаточно его установить, воспользовавшись для этого вашим системным пакетным менеджером или с помощью rubygems:
Если ваше приложение использует Foreman, то его запуск, при наличии готового Procfile, будет выглядеть довольно просто:
Вот как выглядит запуск всех процессов:
Необходимо заметить, что ваши процессы не должны сами демонизироваться, потому как Foreman не сможет в таком случае управлять циклом их запуска-остановки.
▌ Развертывание
Foreman может экспортировать ваши задания на запуск в upstart, а также в классический юниксовый init (впрочем, так делать не рекомендуется), bluepill, runit и supervisord. Поддержка systemd также на подходе.
Экспорт в upstart
После экспорта в upstart, становятся доступными следующие команды:
Экспорт в inittab
▌ Возможности
Параллелизм
Foreman позволяет контролировать число запускаемых экземпляров каждого типа процесса, что тоже перекликается с идеей масштабирования с помощью процессов. Кстати говоря, данный подход уже успел полюбиться пользователям Heroku.
Переменные окружения
Существует подход, постепенно завоевывающий популярность у разработчиков, заключающийся в том, чтобы хранить конфигурацию приложения в переменных окружения. Foreman и здесь не остался в стороне и позволяет все упростить.
Вы также можете попросить Foreman запустить процессы с переменными окружения из другого файла:
Назначение портов
По умолчанию Foreman назначает порты процессам, начиная с 5000, и делает это блоками в 100 штук на каждый тип процесса, причем в том порядке, в котором они перечислены в Procfile.
Скажем, для Procfile из примера выше, процесс web.1 получит 5000-ый порт, worker.1 — 5100-ый, а habr.1 — 5200-ый. Если вы запустите два процесса habr, то процессу habr.2 будет назначен порт с номером 5201.
Вы также можете выбрать стартовый порт вручную, например:
▌ Заключение
Как видите, в использовании таких вот хороших практик нет абсолютно ничего сложного, а времени данная штука позволяет сэкономить достаточно, чтобы оказаться в арсенале продвинутого разработчика.
Для получения более подробной информации обо всех доступных возможностях, вы можете обратиться к документации, а также на страницу репозитория проекта на github.
Foreman linux что это
Provision from anywhere
Bare metal (MaaS), Amazon EC2, Google Compute Engine, OpenStack, Libvirt, oVirt, VMware, and many other providers allow you to manage a hybrid cloud through Foreman.
Configuration
An external node classifier, hiera-like parameters, and reports monitoring for Puppet, Salt and Chef are included. Completely ready to tweak host groups in your data center.
Monitor hosts
Foreman reports will tell you exactly what happened in your nodes, and alert you when things go awry. See in your dashboard which hosts are healthy, and which ones are outdated.
UIs slow you down? Hammer CLI gives you easy access to all the API calls you need to stay on top of your data center.
We provide a RESTful API to give you the power to automate most tasks, such as registering hosts, assigning roles to users, and more.
RBAC and LDAP integration
A thorough authorization system based on role based access control (RBAC) allows for tight policies for your Foreman users. If you use LDAP or FreeIPA, you can continue using them for authentication and authorization.
Audits
No more wondering why did your load balancer suddenly become a database. Check how, who and when in our audits system.
Plugins
A pluggable architecture allows you to extend Foreman in almost any direction. Visit our list of plugins for a glimpse.
Host groups
Horizontal scaling is an ubiquitous architecture in IT. Group your hosts and modify their configuration as if they were just one with Foreman.
Provisioning
Provision on bare-metal (MaaS) & public or private clouds all from one place with one simple process.
Configuration
A complete configuration management solution including an ENC for Puppet and Salt, built-in support for parameterized classes and hierarchical parameter storage.
Monitoring
Collect Puppet, Chef, Salt and Ansible reports and facts. Monitor host configuration, report status, distribution and trends.
Установка и настройка Puppet + Foreman на Ubuntu 14.04 (пошаговое руководство)
Доброго времени суток, жителям Хабра!
Когда число управляемых серверов достигает нескольких десятков, а то и сотен, приходится искать решение по автоматической настройке и управлению таким парком. Тут на помощь приходит Puppet. Почему Puppet? Puppet кроссплатформенный, имеет богатое сообщество, имеет множество готовых модулей (4800+), имеет Enterprise версии. Все эти плюсы не дают усомнится в мощи данного продукта. Но управлять из консоли таким «комбайном» не так просто. Потому для удобного управления и настройки Puppet был разработан Foreman. Далее установка и настройка этой связки на примере задачи управления SSH-ключами.
Требования:
Все скриншоты и кусок конфигурации скрыты спойлерами. Для лучшего понимания, где выполняются команды, перед каждой командой добавил тип сервера (master или agent).
1. Установка Foreman + Puppet на puppet-мастера
Добавим репозиторий установщика Foreman/Puppet и установим его в систему:
Результат должен быть похож на следующий:
Ссылка вида puppet. и логином с паролем нам пригодятся дальше.
Настроим конфигурацию для просмотра в Foreman различий изменений файлов:
Откроем в браузере ссылку, рекомендованную в предыдущем шаге: puppet.
И введём логин: admin и пароль, который мы видели в консоли после установки.
Если авторизация прошла успешно, значит Foreman установлен и работает должным образом. Теперь можно переходить к следующей главе.
2. Настройка Foreman
По умолчанию Foreman использует свой SSL-сертификат, сгенерированный Puppet и ваш браузер не будет принимать его. Вы можете добавить корневой сертификат ( /var/lib/puppet/ssl/certs/ca.pem ) в свой браузер, чтобы исчезли предупреждения небезопасного соединения (для Chromium добавлять сюда: Настройки/SSL/Центры сертификации).
При первом входе вы увидите страницу Dashboard, где будет показана общая статистика по всем узлам сети. При добавления узлов сети, здесь будет полезная статистическая информация.
При последующих входах вы будете перенаправляться на страницу списка узлов сети.
2.1. Смена пароля
Первым делом необходимо изменить пароль пользователя:
Пароль по умолчанию и так сложный, но лучше сделать свой.
2.2. Добавление модуля на примере NTP
Время должно быть точно установлено на главном сервере puppet-мастер. Для этого необходимо использовать NTP. Если время неверно, puppet-мастер может ошибочно выдавать сертификаты агентов из далекого прошлого или будущего, которые другие узлы будут считать устаревшими.
Иногда, чтобы иметь возможность управлять модулями Puppet через Foreman, необходимо установить модули, разработчиками которых являются не Puppet-Labs, а разработчики сообщества Puppet. Это вытекает из того факта, что Foreman использует HTTP-запросы Restful API для Puppet, но не во всех модулях определено управление с помощью такого API.
Установим модуль saz/ntp на puppet master:
Модуль saz/ntp прекрасно работает на версии Foreman 1.11. Для других версий Foreman, можно использовать модули с сайта forge.puppetlabs.com по поиску ntp.
Вы должны увидеть следующее:
Сейчас модуль был установлен только для puppet-мастер. Теперь необходимо войти в веб интерфейс и добавить его к Foreman. Перейдите в меню Configure → Classes и нажмите Import from puppet. :
В результате вы увидите список доступных классов, отметьте нужные и нажмите Update:
Для того, чтобы использовать ближние к вам ntp-серверы, перейдем на сайт www.pool.ntp.org. Там в правом блоке выберем нужный нам пул (Африка, Азия и т.д.) и заберём список серверов в буфер обмена.
Далее идём в настройки класса ntp, кликнув по его названию. Переходим во вкладку Smart Class Parameter и ищем в левом списке вкладку server list:
Отмечаем пункт Override и в Default value по примеру предыдущего значения, добавляем сервера из шага выше. Я добавил такое значение:
Нажимаем Submit внизу страницы, тем самым мы переопределили параметр класса.
2.3. Добавление модуля accounts и ssh
На примере предыдущего модуля установим модуль accounts:
Если установка прошла успешно, то вы увидите следующее:
Установим модуль ssh:
После этого идём в Foreman и импортируем новые классы. Позже, после создания групп узлов сети, мы настроим классы accounts и ssh.
2.4. Добавление модуля mysql и apache
Для объяснения последующих названий групп database и web добавим модули apache и mysql. Добавляем модули по примеру предыдущих. Загрузить их можно командами:
3. Добавление узлов сети
Чтобы добавить узел сети в Puppet, необходимо установить puppet-агент на этот узел. Для установки puppet-агента скачаем и установим репозиторий puppet-labs:
Затем установим puppet-агент:
Чтобы запустить Puppet в роли агента, необходимо закомментировать настройки зоны puppet-мастера. Также добавьте конфигурацию для агента, которая установит адрес нашего puppet-мастера. Приведём файл конфигурации /etc/puppet/puppet.conf в вид:
Заменим значение переменной START с no на yes, чтобы запустить puppet-агент после перезагрузки ОС. А также запустим puppet-агент:
При небольшой инфраструктуре puppet-агент можно запускать в виде демона. Есть также способ запуска через CRON: docs.puppet.com/puppet/3.6/services_agent_unix.html#running-puppet-agent-as-a-cron-job.
Puppet-агент по умолчанию ищет домен puppet-мастера в своей зоне, если явно не указан параметр server (в файле puppet.conf). Например: server.domain.com будет искать сервер puppet.domain.com. Потому, если вы ещё идёте по инструкции, то у вас всё должно работать.
После этого идём на Foreman в Infrastructure → Smart Proxies → Certificates:
Там должен появится узел сети, на который мы только что установили puppet-агент. Можно использовать фильтр (вверху слева), чтобы увидеть только неподписанные сертификаты. Чтобы подписать, необходимо нажать кнопку Sign:
В течение нескольких минут сервер server. (сервер, на котором мы только что установили агент) появится в списке Hosts → All hosts.
4. Добавление групп узлов сети
Перейдём в пункт меню Configure → Host Groups. Нажмём New Host Group. Вкладка Host Group должна получится следующей:
Группа root будет корневой. Она будет родителем всех остальных групп. У ней будет полный доступ ко всему. И в неё будут включены основные классы.
Далее перейдем во вкладку Puppet Classes и добавим необходимые классы нажав на +:
Добавим по этому же принципу ещё две группы. Только теперь мы выберем в качестве Parent группу root, потому классы accounts, ntp и ssh наследуются и добавлять их повторно не нужно. Добавим только для группы database класс mysql::server, а для группы web класс apache.
5. Добавление узла в группу
Чтобы включить узел в группу, необходимо перейти в его настройки.
После этого в первой вкладке добавляем группу, как на скриншоте ниже:
После этого нажимаем Submit и в течение нескольких минут на узле сети появится mysql. Таким же образом можно присвоить остальным двум серверам группу web:
Вся конфигурация распространяется на puppet-агенты автоматически в течение нетокоротого времени.
6. Настройка прав доступа с помощью модуля accounts
Собственно сейчас можно ещё раз посмотреть на схему, которую мы привели в начале и на основе её создать логику.
Перейдём в пункт меню Configure → Classes. Нажмём на accounts, чтобы перейти в настройки модуля. Из всех настроек нам будут нужны вкладки accounts, ssh keys, users.
Примечание
Вкладка accounts — в ней содержаться хэши «пользователь сервера → названия публичных ключей из вкладки ssh keys». Вкладка ssh keys — в ней содержаться хэши «название ключа → тип и значение». Вкладка users — в ней содержаться пользователи, которых необходимо создать или указать для уже существующих некоторые параметры.
Откроем последнюю вкладку users и установим её как на скриншоте:
Этот параметр настраивает домашний каталог пользователя. Здесь мы задействовали Merge overrides и Merge default параметры, которые позволят объединить конфигурацию для конечного узла сети.
Вкладку ssh keys заполним следующим образом:
В поле Default value необходимо вписать все публичные ключи аккаунтов, которые будут использоваться во вкладке accounts. Эти публичные ключи пользователей, которые будут иметь доступ на те или иные сервера. Отступ в два пробела перед параметрами type и public обязателен.
Пример того, как выглядит один публичный ключ (остальные добавляются друг за другом ниже):
Самую верхнюю вкладку accounts заполним следующим образом:
Из этого параметра следует: root имеет доступ везде с аккаунта root (аккаунт root — это элемент из вкладки ssh keys), аккаунт dbadmin имеет root-доступ только к серверам из группы database, а пользователь admin есть только у группы web и аккаунт admin может подключаться только под пользователя admin.
На вкладке users добавим пользователя admin в группу www-data.
6.1 Настройка класса ssh
В классе accounts мы настроили ssh-доступ по ключам. Потому для более полной безопасности необходимо запретить доступ по паролю. Делается это с помощью класса ssh. Переходим в его настройки и открываем вкладку Smart Class Parameter. Далее client options приводим к следующему виду:
Вкладку server options приводим к следующему виду:
И вкладку storeconfigs enabled заполняем так:
В storeconfigs хранятся все факты о клиентах, поэтому вы можете запросить базу данных и получить списки узлов сети, соответствующие определенным критериям. Для большей безопасности мы это отключили.
7. Результаты
В процессе выполнения данного руководства ваша инфраструктура добавленная под управление Puppet станет быстро-конфигурируемой и масштабируемой. А главная цель — управления публичными ssh ключами будет максимально удобной.
Скриншот списка ключей пользователя admin на одной из машин группы root/web:
Помните, при настройке класса accounts для параметра ssh keys мы включали Merge overrides и Merge default. Это нужно для того, чтобы в конце для определённого узла сети собирался один структурированный файл с ssh-ключами.
Проверим, действительно ли можно авторизоваться под пользователем “admin” с помощью добавленного ключа:
Если у вас также тест прошёл успешно, то инфраструктура готова и можно постепенно подключать остальные ваши сервера к puppet-мастеру и настраивать другие сервисы через Puppet.
Foreman
Данная страница находится в разработке. Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной. |
Содержание
Foreman [ править ]
Foreman это средство автоматизации повторяющихся задач, развёрстывания приложений, управления циклом жизни ваших серверов по отдельности или в облаке.
Подготовка [ править ]
Перед установкой убедитесь что PostgreSQL версии 11 и выше установлена и инициализирована. Это важно.
Установка [ править ]
Чтобы установить средство, нужно от администратора поставить пакеты foreman, puppet-theforeman-foreman и foreman-addons, а всё требуемое вытянется по зависимостям.
Если показывается надпись «Ошибка подготовки», то экземпляр Foreman не будет рабочий. Проверьте установку компонентов и повторите.
Запуск сервиса [ править ]
Чтобы при первом запуске foreman корректно обработал стартовый скрипт(используя значения по умолчанию), переименуйте файл конфигурации
Проверьте, чтобы были закомментированны строки в файле /etc/puppet/puppet.conf, как указано в разделе Настройка puppet для работы с Foreman
Настройте системную службу foreman-а на автозапуск (по желанию):
а дальше запустите (в случае, если сервис работает, то он будет перезапущен):
Отныне средство будет доступно по адресу http://localhost:2345 из обозревателя.
Пароль и логин администратора создаются автоматически, и возвращаются скриптом настойки (см. лог выше), однако их можно получить, заглянув в лог:
Настройка параметров [ править ]
Сделайте необходимые изменения в /etc/foreman/settings.yml, взяв примеры из полученного ранее файла /etc/foreman/settings.yml.example
а также установите параметр:
После внесения изменений и перезапуска сервиса
Веб-интерфейс Форемана будет доступен http://localhost:2345
Настройка модуля ENC для взаимодействия с Puppetserver [ править ]
Когда Foreman установлен и к нему подключен(-ы) Smart_Proxy, необходимо отредактировать файл /etc/puppet/puppet.conf
После изменения конфигурации Puppet потребуется перезапуск служб puppetserver и puppet
В результате запуска сервиса puppet, текущий сервер будет добавлен в список управляемых
Переустановка или обновление [ править ]
Чтобы переустановить или обновить средство нужно выполнить ряд команд подряд, и затем снова выполнить настройку из соответствующего подраздела:
Introduction
What is Foreman?
Foreman is an open source project that helps system administrators manage servers throughout their lifecycle, from provisioning and configuration to orchestration and monitoring. Provisioning support gives you easy control of setting up new servers, and using configuration management (Puppet, Ansible, Chef and Salt are supported), you can easily automate repetitive tasks. With Foreman, you can quickly deploy applications, and proactively manage change, both on-premise with VMs and bare-metal or in the cloud. Foreman scales well to multiple locations (offices, data centres, etc) and multiple organisations, allowing you to grow without losing your single source of infrastructure truth.
Foreman, provides comprehensive, interaction facilities including a web frontend, CLI and RESTful API which enables you to build higher level business logic on top of a solid foundation. It is deployed in many organizations, managing from 10s to 10,000s of servers. Several commercial products are based on Foreman.
High-level overview
Notable features
Installation and usability
Inventory
Provisioning
Server discovery
Large teams support
Reporting and monitoring
Remote execution (plugin)
Puppet integration
Ansible integration (plugin)
Compliance management (plugin)
Content management (plugin)
The following operating systems are known to install successfully from Foreman:
Red Hat Enterprise Linux
CentOS
Fedora
Ubuntu
Debian
Solaris 8, 10
OpenSUSE
SLES
Oracle Linux
CoreOS
FreeBSD
Junos
Foreman can provision on bare metal as well as the following cloud providers:
Amazon EC2
Google Compute Engine
Libvirt
OpenStack
oVirt and RHEV
Rackspace
VMware