diff --git a/documentation/index.rst b/documentation/index.rst index 9988b52..b437414 100644 --- a/documentation/index.rst +++ b/documentation/index.rst @@ -22,6 +22,7 @@ same structures. :caption: Introduction and Overview Quick Build + Features Showcase Setting up a CoreOS based distro Building and using a Container Image diff --git a/documentation/ref-manual/features.rst b/documentation/ref-manual/features.rst index 038b50f..810821b 100644 --- a/documentation/ref-manual/features.rst +++ b/documentation/ref-manual/features.rst @@ -24,6 +24,7 @@ CoreOS doesn't define any custom distro feature for now, but the can be used. .. index:: IMAGE_FEATURES +.. _ref-features-image: Image Features ============== @@ -36,6 +37,13 @@ these features is as follows: - *tools-debug:* Installs debugging tools such as ``strace`` and ``gdb``. - *tools-profile:* Installs profiling tools such as ``valgrind`` and ``perf``. - *ssh-server:* Installs the Dropbear minimal SSH server. +- *podman:*: Installs the Podman container runtime +- *networkmanager:* Installs the NetworkManager daemon and command line client +- *cockpit:* Installs the cockpit web interface +- *dev-tools:* Install some developer command line tools + +The *cockpit* and *dev-tools* feature are special, as they will automatically +add package based on the other image feature that are enabled. :external:ref:`IMAGE_FEATURES ` defined in OpenEmbedded-Core are also available, but note that the diff --git a/documentation/showcase/cockpit.rst b/documentation/showcase/cockpit.rst new file mode 100644 index 0000000..d81fc18 --- /dev/null +++ b/documentation/showcase/cockpit.rst @@ -0,0 +1,89 @@ +.. _ref-cockpit: + +Cockpit Web Interface +===================== + +The Cockpit Web Interface is an easy-to-use web based interface made to manage +a Linux based server. It intentionally uses standard system API like `systemd`, +`pam`, `networkmanager` making it easily integrable and interoperable on +any Linux operating system using these programs. + +.. image:: cockpit/overview.png + +.. important:: + + Providing and supporting a web management interface is out of the scope of + CoreOS. We provide some facilities to install this web interface as it's + available in `meta-openembedded` and we find it useful for developer. + +The Cockpit Web Interface can be installed on an image by adding `cockpit` to +the :ref:`IMAGE_FEATURES ` variable. You can then access +the web interface on the port 9090: `https://TARGET_IP:9090` + +.. hint:: + Cockpit use standard Linux authentification method. The simplest way to + get a login is to enable the `debug-tweak` + :ref:`IMAGE_FEATURES `, then login with `root` as + username and an empty password. + + See https://cockpit-project.org/guide/latest/authentication for more info + +When the `cockpit` `IMAGE_FEATURES`` is used, the following feature of are +availabe: + +Dashboard +--------- + +The dashboard allows seeing some system statistic in real time. + +.. image:: cockpit/dashboard.png + +.. hint:: + The statistics are not stored, so they are only available when the dashboard + page is open + +Logs Viewer +----------- + +The log viewer allows seeing the log from `journalctl`. + +.. image:: cockpit/log.png + +Accounts management +------------------- + +The account management allow creating and managing users. For existing user, the +account can be locked, the password changed and SSH public key can be added. + + +.. image:: cockpit/accounts.png + +Services management +------------------- + +The services page allows managing `systemd` service. Service can be started, +restarted, stopped, enabled or disabled. Logs related to the service can also be +viewed easily. + +.. image:: cockpit/services.png + +Web Terminal +------------ + +The terminal page gives access to a web terminal, allowing to interact with the +shell of the device. + +.. image:: cockpit/terminal.png + +Additional plugins +------------------ + +Additional plugin can be installed for `cockpit`, like `podman-cockpit` that +allow to manage podman container from the cockpit web interface. When possible, +CoreOS automatically add the corresponding `cockpit` plugin when additional +features are added via :ref:`IMAGE_FEATURES `. + +As an example, the `cockpit-podman` package is automatically installed if +:ref:`IMAGE_FEATURES ` contains both `cockpit` and `podman`. + +These plugins are documented in the corresponding features showcase page. diff --git a/documentation/showcase/cockpit/accounts.png b/documentation/showcase/cockpit/accounts.png new file mode 100644 index 0000000..385e242 Binary files /dev/null and b/documentation/showcase/cockpit/accounts.png differ diff --git a/documentation/showcase/cockpit/dashboard.png b/documentation/showcase/cockpit/dashboard.png new file mode 100644 index 0000000..381b152 Binary files /dev/null and b/documentation/showcase/cockpit/dashboard.png differ diff --git a/documentation/showcase/cockpit/log.png b/documentation/showcase/cockpit/log.png new file mode 100644 index 0000000..eed9ebf Binary files /dev/null and b/documentation/showcase/cockpit/log.png differ diff --git a/documentation/showcase/cockpit/overview.png b/documentation/showcase/cockpit/overview.png new file mode 100644 index 0000000..cde8d9b Binary files /dev/null and b/documentation/showcase/cockpit/overview.png differ diff --git a/documentation/showcase/cockpit/services.png b/documentation/showcase/cockpit/services.png new file mode 100644 index 0000000..8180d0f Binary files /dev/null and b/documentation/showcase/cockpit/services.png differ diff --git a/documentation/showcase/cockpit/terminal.png b/documentation/showcase/cockpit/terminal.png new file mode 100644 index 0000000..3f08b1f Binary files /dev/null and b/documentation/showcase/cockpit/terminal.png differ diff --git a/documentation/showcase/index.rst b/documentation/showcase/index.rst new file mode 100644 index 0000000..a58e4c4 --- /dev/null +++ b/documentation/showcase/index.rst @@ -0,0 +1,15 @@ + +================= +Features Showcase +================= + +| + +.. toctree:: + :caption: Table of Contents + :numbered: + :maxdepth: 1 + + cockpit + networkmanager + podman diff --git a/documentation/showcase/networkmanager.rst b/documentation/showcase/networkmanager.rst new file mode 100644 index 0000000..55dc9c0 --- /dev/null +++ b/documentation/showcase/networkmanager.rst @@ -0,0 +1,50 @@ +.. _ref-networkmanager: + +NetworkManager +============== + + NetworkManager is the standard Linux network configuration tool suite. It + supports large range of networking setups, from desktop to servers and + mobile and integrates well with popular desktop environments and server + configuration management tools. + + https://networkmanager.dev/ + +NetworkManager can be installed on an image by adding `networkmanager` to +the :ref:`IMAGE_FEATURES ` variable. This provide the +NetworManager daemon and the `nmcli` tools. + +nmtui +----- + +The `nmtui` package provide a terminal user interface for NetworkManager. + +.. only:: html + + .. image:: networkmanager/nmtui.gif + +.. only:: latex + + .. image:: networkmanager/nmtui.png + + +This package is automatically installed if both `networkmanager` and `dev-tools` +:ref:`IMAGE_FEATURES ` are enabled. + +cockpit-networkmanager +---------------------- + +The `cockpit-networkmanager` package provide a :ref:`cockpit ` +plugin that allow to manage NetworkManager from the +:ref:`cockpit ` web interface. + +.. only:: html + + .. image:: networkmanager/cockpit-networkmanager.gif + +.. only:: latex + + .. image:: networkmanager/cockpit-networkmanager.png + +This package is automatically installed if both `networkmanager` and `cockpit` +:ref:`IMAGE_FEATURES ` are enabled. diff --git a/documentation/showcase/networkmanager/cockpit-networkmanager.gif b/documentation/showcase/networkmanager/cockpit-networkmanager.gif new file mode 100644 index 0000000..0323c13 Binary files /dev/null and b/documentation/showcase/networkmanager/cockpit-networkmanager.gif differ diff --git a/documentation/showcase/networkmanager/cockpit-networkmanager.png b/documentation/showcase/networkmanager/cockpit-networkmanager.png new file mode 100644 index 0000000..cee3257 Binary files /dev/null and b/documentation/showcase/networkmanager/cockpit-networkmanager.png differ diff --git a/documentation/showcase/networkmanager/nmtui.gif b/documentation/showcase/networkmanager/nmtui.gif new file mode 100644 index 0000000..88a2801 Binary files /dev/null and b/documentation/showcase/networkmanager/nmtui.gif differ diff --git a/documentation/showcase/networkmanager/nmtui.png b/documentation/showcase/networkmanager/nmtui.png new file mode 100644 index 0000000..65800ec Binary files /dev/null and b/documentation/showcase/networkmanager/nmtui.png differ diff --git a/documentation/showcase/podman.rst b/documentation/showcase/podman.rst new file mode 100644 index 0000000..295c14c --- /dev/null +++ b/documentation/showcase/podman.rst @@ -0,0 +1,64 @@ + +Podman Container Manager +========================= + +Podman is a tool to manage pods and containers. Pods come from Kubernetes, that +define a pod this way: + + A Pod (as in a pod of whales or pea pod) is a group of one or more + containers, with shared storage and network resources, and a specification + for how to run the containers. + +.. important:: + + CoreOS doesn't mandate the use of `podman` for running container. + + But as we can't support every existing container runtime, `podman` is the + only documented/supported way to run container. + + Other container runtimes are available inside the open source + `meta-virtualization` layer that is available inside CoreOS. + +Podman can be installed on an image by adding `podman` to the +:ref:`IMAGE_FEATURES ` variable. + +By default, this will just provide the `podman` command. The `podman` command +is similar to the `docker` one, and most command should work by replacing +`docker` by `podman`. See https://docs.podman.io/en/latest/Commands.html for +more info. + +podman-tui +---------- + +The `podman-tui` package provide a terminal user interface for `podman`. This +package is automatically installed if both `podman` and `dev-tools` +:ref:`IMAGE_FEATURES ` are enabled. + +.. only:: html + + .. image:: podman/podman-tui.gif + +.. only:: latex + + .. image:: podman/podman-tui.png + +The above image was copied from https://github.com/containers/podman-tui/blob/e29e47fd392647033dc1c0cc0eaefa1f62661b98/docs/podman-tui.gif + +cockpit-podman +-------------- + +The `cockpit-podman` package provide a :ref:`cockpit ` plugin that +allow to manage `podman` from the :ref:`cockpit ` web interface. + +This package is automatically installed if both `podman` and `cockpit` +:ref:`IMAGE_FEATURES ` are enabled. + + +.. only:: html + + .. image:: podman/cockpit-podman.gif + +.. only:: latex + + .. image:: podman/cockpit-podman.png + diff --git a/documentation/showcase/podman/cockpit-podman.gif b/documentation/showcase/podman/cockpit-podman.gif new file mode 100644 index 0000000..e95ee10 Binary files /dev/null and b/documentation/showcase/podman/cockpit-podman.gif differ diff --git a/documentation/showcase/podman/cockpit-podman.png b/documentation/showcase/podman/cockpit-podman.png new file mode 100644 index 0000000..70db96f Binary files /dev/null and b/documentation/showcase/podman/cockpit-podman.png differ diff --git a/documentation/showcase/podman/podman-tui.gif b/documentation/showcase/podman/podman-tui.gif new file mode 100644 index 0000000..76f2086 Binary files /dev/null and b/documentation/showcase/podman/podman-tui.gif differ diff --git a/documentation/showcase/podman/podman-tui.png b/documentation/showcase/podman/podman-tui.png new file mode 100644 index 0000000..1da7840 Binary files /dev/null and b/documentation/showcase/podman/podman-tui.png differ