GithubHelp home page GithubHelp logo

masscollaborationlabs / agama Goto Github PK

View Code? Open in Web Editor NEW

This project forked from opensuse/agama

0.0 0.0 0.0 12.64 MB

A service-based Linux installer

License: GNU General Public License v2.0

Shell 0.55% JavaScript 50.93% Ruby 40.93% Rust 5.00% TypeScript 0.68% Makefile 0.42% HTML 0.02% SCSS 1.43% Jsonnet 0.04%

agama's Introduction

CI Status Coverage Status

Agama: A Service-based Linux Installer

Agama is a new Linux installer born in the core of the YaST team. It is designed to offer re-usability, integration with third party tools and the possibility of building advanced user interfaces over it.

Product selection Installation overview
Click to show/hide more screenshots
Users page Storage settings
Installing Installation finished

Note for developers: For updating the screenshots see the integration test documentation.

Table of Content

Why a New Installer

This new project follows two main motivations: to overcome some of the limitations of YaST and to serve as installer for new projects like SUSE ALP (Adaptable Linux Platform).

YaST is a mature installer and control center for SUSE and openSUSE operating systems. With more than 20 years behind it, YaST is a competent and flexible installer able to cover uncountable use cases. But time goes by, and the good old YaST is starting to show its age in some aspects:

  • The architecture of YaST is complex and its code-base has too much technical debt.
  • Designing and building rich and modern user interfaces is a real challenge.
  • Sharing logic with other tools like Salt or Ansible is very difficult.
  • Some in-house solutions like libyui makes more difficult to contribute to the project.

SUSE is working on its next generation operating system called ALP (Adaptable Linux Platform). ALP is designed to be a lean core system, moving most of the software and workloads to containers and virtual machines. For some cases, for example cloud and virtual machines, ALP based systems will be deployed with auto-installable images. But still there are quite some situations in which ALP must be installed in a more traditional way. A clear example consists on installing over bare metal where some system analysis is required beforehand. Agama is also intended to cover such use cases for ALP, offering a minimal but powerful installer able to support a wide range of scenarios (e.g., RAID, encryption, LVM, network storage, etc).

Architecture

This project is designed as a service-client system, using a dedicated D-Bus server for process communication.

Architecture

Agama consists on a set of D-Bus services and a web client (an experimental CLI is also available). The services use YaST-based libraries under the hood, reusing a lot logic already provided by YaST. Currently Agama comes with six separate services, although the list can increase in the future:

  • Agama service: it is the main service which manages and controls the installation process.
  • Software service: configures the product and software to install.
  • Users service: manages first user creation and configuration for root.
  • Language service: allows to configure the language and keyboard settings.
  • Storage service: analyzes and prepares the storage devices in order to perform the installation.
  • Questions service: helper service used for requesting information from clients.

Agama offers a web interface and its UI process uses the Cockpit's infrastructure to communicate with the D-Bus services.

How to run

There are two ways of running this project: a) by using a Agama live ISO image or b) by cloning and configuring the project.

Live ISO Image

The easiest way to give Agama a try is to grab a live ISO image and boot it in a virtual machine. This is also the recommended way if you only want to play and see it in action. If you want to have a closer look, then clone and configure the project as explained in the next section.

  • multi-product: it can be used to install different products, like openSUSE Tumbleweed, Leap, Leap Micro or an experimental version of the SUSE ALP ContainerHost OS.
  • ALP only: it only contains the definition for the experimental SUSE ALP ContainerHost OS, although the rest of the content is pretty much the same than the multi-product version.

Manual Configuration

You can run Agama from its sources by cloning and configuring the project:

$ git clone https://github.com/openSUSE/agama
$ cd agama
$ ./setup.sh

Then point your browser to http://localhost:9090/cockpit/@localhost/agama/index.html and that's all.

The setup.sh script installs the required dependencies to build and run the project and it also configures the Agama services and cockpit. It uses sudo to install packages and files to system locations. The script is well commented so we refer you to it instead of repeating its steps here.

Alternatively you can run a development server which works as a proxy for the cockpit server. See more details in the documentation.

Another alternative is to run source checkout inside container so system is not affected by doing testing run beside real actions really done by installer. See more details [in the documentation][doc/testing_using_container.md].

  • Start the services:
    • beware that Agama must run as root (like YaST does) to do hardware probing, partition the disks, install the software and so on.
    • Note that setup.sh sets up D-Bus activation so starting manually is only needed when you prefer to see the log output upfront.
$ cd service
$ sudo bundle exec bin/agama
  • Check that Agama services are working with a tool like busctl or D-Feet if you prefer a graphical one:
$ busctl --address=unix:path=/run/agama/bus \
    call \
    org.opensuse.Agama1 \
   /org/opensuse/Agama1/Manager \
    org.opensuse.Agama1.Manager \
    CanInstall

$ busctl --address=unix:path=/run/agama/bus \
    call \
    org.opensuse.Agama.Language1 \
   /org/opensuse/Agama/Language1 \
    org.freedesktop.DBus.Properties \
    GetAll s org.opensuse.Agama.Language1

How to Contribute

If you want to contribute to Agama, then please open a pull request or report an issue. You can also have a look to our road-map.

For more details, please read the contributing guidelines.

Development Notes

agama's People

Contributors

agam778 avatar ancorgs avatar dgdavid avatar fcrozat avatar imobachgs avatar jelly avatar joseivanlopez avatar jreidinger avatar lkocman avatar lslezak avatar martinpitt avatar mchf avatar mvidner avatar tacerus avatar teclator avatar wfeldt avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.