Skip to content
an application that automates the lifecycle of servers
Ruby HTML JavaScript Python CSS Shell
Latest commit 5b53236 Apr 27, 2016 @dLobatog dLobatog committed with iNecas Fixes #14843 - Improve rake config error handling
Currently rake config doesn't give you any hint when you provide an
invalid setting. Instead, it should tell you what was wrong with the
input, and try to guide you to a valid one.

This commit provides error handling for wrong JSON values, and prints
what the error was if the setting could not be saved.
Failed to load latest commit information.
.tx fixes #8874 - rework POT/PO updates for gettext 3's edit.po Feb 3, 2016
app fixes #14855 - hide template type dropdown when snippet checked Apr 29, 2016
bin fixes #12892 - moves rails binaries to Rails.root/bin Dec 21, 2015
bundler.d fixes #14876 - permit wirb 2.x on Ruby 2.x Apr 29, 2016
config fixes #14820 - override Rails log level with Foreman::Logging config Apr 28, 2016
db fixes #14638 - Refactor Subnet into STI to allow different subnet types Apr 19, 2016
extras Fixes #10703 - websockify is now randomly selected Jun 12, 2015
lib Fixes #14843 - Improve rake config error handling Apr 29, 2016
locale i18n - extracting new, pulling from tx Feb 17, 2016
log WIP rails3 migration Nov 28, 2011
man Fixes #10921 - Rephrase foreman-rake manpage Jun 24, 2015
public fixes #12914 - update configurations to rails 4.1 structure Jan 7, 2016
script fixes #14765 - exclude job templates from template sync Apr 25, 2016
test fixes #14855 - hide template type dropdown when snippet checked Apr 29, 2016
vendor/assets Fixes #4629 - Migrate UI to Patternfly Jan 7, 2016
.gitignore Fixes #6994 - Remove old apipie_examples.yml Mar 2, 2016
.rubocop.yml Fixes #12911 - Turning on 0.35.1 cops Dec 28, 2015
.rubocop_todo.yml Fixes #13557 - Rubocop enforce specifying a timezone Feb 16, 2016
CHANGELOG Bump version to 1.12-develop Feb 19, 2016 Fixes #13894 - Add link to handbook in contribution guidelines Feb 26, 2016
Contributors Bump version to 1.12-develop Feb 19, 2016
Gemfile fixes #13244 - update Rails to 4.2.6 Apr 20, 2016
LICENSE Fixes #4629 - Migrate UI to Patternfly Jan 7, 2016 fixes #10518 - Broken quickstart section URL May 18, 2015
Rakefile Fixes #3468 - Move token expiry to scope to avoid FK issues Nov 19, 2013
Rakefile.dist Refs #7719 - explicitly create .ssh dir in home Oct 21, 2014
VERSION Bump version to 1.12-develop Feb 19, 2016 fixes #1463 - let Foreman run on a sub path Jul 2, 2012


Build Status Code Climate Issue Stats Support IRC channel

Foreman is a free open source project that gives you the power to easily automate repetitive tasks, quickly deploy applications, and proactively manage your servers lifecyle, on-premises or in the cloud.

From provisioning and configuration to orchestration and monitoring, Foreman integrates with your existing infrastructure to make operations easier.

Using Puppet, Chef, Salt and Foreman's smart proxy architecture, you can easily automate repetitive tasks, quickly deploy applications, and proactively manage change, both on-premise with VMs and bare-metal or in the cloud.

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.

Foreman is a mature project, deployed in many organizations, managing from 10s to 10000s of servers. It is used in distributions such as RDO and RHOS (Red Hat OpenStack distribution) and has an extensive library of plugins.


  • Automate your mixed infrastructure to make operations enjoyable
  • Discover, provision and upgrade your entire bare-metal infrastructure
  • Create and manage instances across private and public clouds
  • Group your hosts and manage them in bulk, regardless of location
  • Review historical changes for auditing or troubleshooting
  • Extend as needed via a robust plugin architecture
  • Automatically build images (on each platform) per system definition to optimize deployment
  • LDAP authentication and RBAC authorization to your infrastructure
  • and so much more


Hosts list New host EC2 Provisioning templates Subnets Openstack Edit Puppet class Reports Statistics Partition tables Installation media


Read the quickstart section of the manual. If you know your setup has some specific needs, read the installation scenarios section.


Our main documentation reference is the Foreman manual. If you find some gaps you would like to fill in the manual, please contribute in this repo.


We document our API using apipie.The API chapter has more information about accessing the API and the layout of requests and responses. Also see the reference documentation available on our website, or via your own Foreman installation by appending /apidoc to the URL to see the API routes available.


Plugins are tools to extend and modify the functionality of Foreman. They are implemented as Rails engines that are packaged as gems and thus easily installed into Foreman. Read the plugins section of the manual for more information.

An up-to-date plugin list is kept in the wiki

How to contribute?

Generally, follow the Foreman guidelines. For code-related contributions, fork this project and send a pull request with all changes. Some things to keep in mind:

  • Follow the rules about commit message style and create a Redmine issue. Doing this right will help reviewers to get your contribution merged faster.
  • Rubocop will analyze your code, you can run it locally with rake rubocop.
  • All of our pull requests run the full test suite in our Jenkins CI system. Please include tests in your pull requests for any additions or changes in functionality


We keep a repository of talks, tutorials, articles about everything in the Foreman ecosystem in the media section of our web. If you want to get yours published, just submit a pull request to repository

Special thanks

The original authors of this project are Ohad Levy and Paul Kelly. You can find a more thorough list of people who have contributed to this project at some point in Contributors.


See LICENSE file.

Something went wrong with that request. Please try again.