Convert Figma logo to code with AI

theforeman logoforeman

an application that automates the lifecycle of servers

2,580
988
2,580
83

Top Related Projects

13,865

AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform.

10,936

Cockpit is a web-based graphical interface for servers.

30,387

Making Docker and Kubernetes management easy.

23,215

Complete container management platform

Quick Overview

Foreman is an open-source lifecycle management tool for physical and virtual servers. It provides a comprehensive platform for provisioning, configuring, and monitoring your entire infrastructure, supporting various operating systems and cloud providers.

Pros

  • Centralized management of diverse infrastructure components
  • Extensive plugin ecosystem for extended functionality
  • Supports multiple virtualization and cloud platforms
  • Integrates well with configuration management tools like Puppet and Ansible

Cons

  • Steep learning curve for new users
  • Can be resource-intensive for large deployments
  • Some users report occasional stability issues
  • Documentation can be inconsistent or outdated in some areas

Getting Started

To get started with Foreman, follow these steps:

  1. Install Foreman on a supported operating system (e.g., CentOS, Ubuntu):
sudo apt-get update
sudo apt-get install foreman-installer
  1. Run the installer:
sudo foreman-installer
  1. Access the Foreman web interface: Open a web browser and navigate to https://your-foreman-server.example.com

  2. Log in with the default credentials (username: admin, password: displayed during installation)

  3. Begin configuring your infrastructure by adding hosts, setting up provisioning templates, and defining your organization structure.

For more detailed instructions and advanced configuration options, refer to the official Foreman documentation at https://theforeman.org/manuals/latest/index.html.

Competitor Comparisons

13,865

AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform.

Pros of AWX

  • More focused on automation and orchestration, making it better suited for complex workflows
  • Tighter integration with Ansible ecosystem, leveraging its extensive module library
  • User-friendly web interface for managing and scheduling jobs

Cons of AWX

  • Steeper learning curve, especially for those not familiar with Ansible
  • More resource-intensive, requiring more system resources to run effectively
  • Less comprehensive out-of-the-box support for configuration management

Code Comparison

AWX (Python):

from awx.main.models import Job

job = Job.objects.create(
    name="My Job",
    job_type="run",
    inventory=inventory,
    project=project,
    playbook="playbook.yml"
)
job.launch()

Foreman (Ruby):

host = Host.find_by_name("example.com")
host.build = true
host.save!

task = ForemanTasks.async_task(
  ::Actions::Foreman::Host::Create,
  host
)

Both repositories offer powerful IT automation and management capabilities, but they cater to slightly different use cases. AWX excels in automation and orchestration, while Foreman provides a more comprehensive solution for lifecycle management and provisioning. The choice between the two depends on specific organizational needs and existing infrastructure.

10,936

Cockpit is a web-based graphical interface for servers.

Pros of Cockpit

  • Lightweight and easy to install, with minimal system requirements
  • Modern, user-friendly web interface for system administration
  • Supports a wide range of Linux distributions out-of-the-box

Cons of Cockpit

  • Limited configuration management capabilities compared to Foreman
  • Less extensive plugin ecosystem and customization options
  • Primarily focused on single-server management, less suited for large-scale deployments

Code Comparison

Cockpit (JavaScript):

define([
    "base1/jquery",
    "base1/cockpit",
    "system/service"
], function($, cockpit, service) {
    // Cockpit-specific code
});

Foreman (Ruby):

module Foreman
  class Engine < ::Rails::Engine
    config.autoload_paths += Dir["#{config.root}/app/controllers/concerns"]
    config.autoload_paths += Dir["#{config.root}/app/helpers/concerns"]
    config.autoload_paths += Dir["#{config.root}/app/models/concerns"]
  end
end

Cockpit uses JavaScript for its web-based interface, while Foreman is built on Ruby on Rails. Cockpit's code focuses on system-level interactions, whereas Foreman's code structure reflects its more comprehensive configuration management approach.

30,387

Making Docker and Kubernetes management easy.

Pros of Portainer

  • Simpler and more user-friendly interface for Docker management
  • Lightweight and easy to deploy, with a single container setup
  • Strong focus on container orchestration and management

Cons of Portainer

  • Limited scope compared to Foreman's broader infrastructure management capabilities
  • Less extensive plugin ecosystem and customization options
  • Primarily focused on Docker, with less support for other virtualization technologies

Code Comparison

Portainer (JavaScript):

async function getDockerInfo() {
  const dockerInfo = await this.dockerService.info();
  this.dockerInfo = dockerInfo;
}

Foreman (Ruby):

def docker_info
  @docker_info ||= ::Docker.info
rescue ::Docker::Error::TimeoutError => e
  logger.warn("Docker connection timed out: #{e}")
  nil
end

Both examples show methods for retrieving Docker information, but Portainer uses modern JavaScript with async/await, while Foreman uses Ruby with error handling. This reflects their different technology stacks and approaches to Docker integration.

Portainer is more focused on Docker-specific management, while Foreman offers broader infrastructure management capabilities. Portainer excels in simplicity and ease of use for Docker environments, whereas Foreman provides more extensive customization and support for various virtualization technologies.

23,215

Complete container management platform

Pros of Rancher

  • More focused on container orchestration and Kubernetes management
  • Offers a simpler, more user-friendly interface for cluster management
  • Provides built-in monitoring and alerting features

Cons of Rancher

  • Less comprehensive in terms of overall infrastructure management
  • More limited support for non-containerized workloads
  • Smaller community and ecosystem compared to Foreman

Code Comparison

Rancher (Go):

func (c *Cluster) Create(ctx context.Context) error {
    c.Lifecycle.Create(ctx, c, c.runtime.Create)
    return c.Status.APIError
}

Foreman (Ruby):

def create
  @host = Host.new(host_params)
  process_taxonomy
  process_managed_flag
  @host.save
end

Both projects use different programming languages, reflecting their distinct approaches to infrastructure management. Rancher's Go code focuses on cluster creation, while Foreman's Ruby code handles host creation with additional processing steps.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Foreman

Build Status Code Climate Coverage Status 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 life cycle, 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, Ansible, 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.

Features

  • 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

Screenshots

Hosts list New host New host page EC2 Provisioning templates Subnets Compute Resource Edit Puppet class Reports Partition tables Installation media

Installation

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

Documentation

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.

API

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

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.

The plugins page lists all available plugins and has more information about how to install and develop them.

Similarly Named Project

There is a similarly named project on Github called foreman (a CLI tool for running processes). We've left a note about it here, to help people in case that's the one they're looking for, but ended up here.

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.
  • We have a development handbook to help developers understand how Foreman developers code.
  • 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.
  • Please have a look at Contributing.md for more information.

Media

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 theforeman.org 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.

Licensing

See LICENSE file.

The Foreman repository/package is licensed under the GNU GPL v3 or newer, with some exceptions.

Copyright (c) 2009-2020 to Ohad Levy, Paul Kelly and their respective owners.

All copyright holders for the Foreman project are in the separate file called Contributors.

Except where specified below, this program and entire repository is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see GNU licenses.

The following files and directories are exceptions:

  • app/views/unattended/ztp/provision.erb is (c) 2013, Juniper Networks under 2-clause BSD license.
  • lib/tasks/convert.rake is (c) 2008, Matson Systems, Inc. under Revised BSD license.
  • vendor/assets/fonts/ is (c) 2011-2016, Red Hat Inc. under SIL Open Font License v1.1 or LGPL v2.1 licenses.
  • vendor/assets/javascripts/jquery.flot.axislabels.js is (c) 2010 Xuan Luo under MIT license.
  • app/assets/images/RancherOS.png is (c) 2018 Rancher Labs, Inc.

All rights reserved.

The LICENSE file contains the full text of the GNU GPL v3 license, along with the text for all additional licenses referenced above.