Skip to content

Commit

Permalink
Add GH Pages infrastructure
Browse files Browse the repository at this point in the history
Start to migrate from README.md to the Pages infrastructure
for nicer looking and more organized docs.
  • Loading branch information
cgwalters committed Nov 7, 2023
1 parent 2077e64 commit 533dd3f
Show file tree
Hide file tree
Showing 9 changed files with 262 additions and 111 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Docs

on:
push:
branches: ["main"]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Pages
uses: actions/configure-pages@v3
- name: Build with Jekyll
uses: actions/jekyll-build-pages@v1
with:
source: ./docs
destination: ./_site
- name: Upload artifact
uses: actions/upload-pages-artifact@v1

# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
125 changes: 14 additions & 111 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,118 +1,21 @@
# Goals
# centos-boot

This project's toplevel goal is to create base *bootable* container images
from Fedora ELN and CentOS Stream packages.
Create and maintain base *bootable* container images from Fedora ELN and CentOS Stream packages.

## Status
The longer term vision of this project is that the build infrastructure
(and possibly some of the container definitions) move into the respective
upstream operating systems. For now, this project acts as a more central
point for this across these distributions.

This is an in-development project not intended for production use yet.
# Motivation

## Trying it out
The original Docker container model of using "layers" to model
applications has been extremely successful. This project
aims to apply the same technique for bootable host systems - using
standard OCI/Docker containers as a transport and delivery format
for base operating system updates.

See [install.md](./install.md).
# More information

## Differences from Fedora CoreOS
See the [project documentation](https://centos.github.io/centos-boot/).

Fedora CoreOS today is not small; there are multiple reasons for this, but
primarily because it was created in a pre-bootable-container time. Not everyone
wants e.g. moby-engine.

But going beyond size, the images produced by this project will focus
on a container-native flow. We will ship a (container) image that does not
include Ignition for example.

## Differences from RHEL CoreOS

We sometimes say that RHEL CoreOS [has FCOS as an upstream][1] but this is only
kind of true; RHEL CoreOS includes a subset of FCOS content, and is lifecycled
with OCP.

An explicit goal of this project is to produce bootable container images
that can be used as *base images* for RHEL CoreOS; for more on this, see e.g.
<https://github.com/openshift/os/issues/799>

## Differences from RHEL for Edge

It is an explicit goal that CentOS boot also becomes a "base input" to RHEL for Edge.

## What does CentOS boot means

From [Wikipedia](https://en.wikipedia.org/wiki/Bamboo_Forest_(Kyoto,_Japan)):

> Bamboo Forest, Arashiyama Bamboo Grove or CentOS boot Bamboo Forest, is a natural
> forest of bamboo in Arashiyama, Kyoto, Japan
[1]: https://github.com/openshift/os/blob/master/docs/faq.md#q-what-is-coreos

## Demonstration base images for Project CentOS boot

These images are technology demonstrators, not for production use. The
intention is that these images are generated by the OS vendor or
distribution.
Or, you can fork this repository and generate your own via
`rpm-ostree compose image`.

## Operating system sources

At the moment these demonstration builds use Fedora ELN and CentOS Stream 9.

## Tiers

### Tier 0

This is the basic tier; it has effectively just:

- kernel systemd selinux-policy-targeted bootc

You are generally going to need to generate derived images from this; installing
it on its own will boot to a system with no automatic networking support, no SSH,
and no default passwords etc.

### Tier 1

This is larger system.

- NetworkManager, chrony
- rpm-ostree (to install packages and in case it's useful "day 2")
- openssh-server

At the current time, it does not include Ignition or cloud-init; so you will
still need to derive from it in order to inject a mechanism to log in in many
cases. However, it will work to install it using e.g. Anaconda and set up
users and passwords that way.

## Image matrix (Fedora)

- `quay.io/centos-boot/fedora-tier-1:eln`

### More about image sources

The current manifest definitions [tier-0](tier-0) and [tier-1](tier-1) were
forked from Fedora CoreOS, but significantly cut down.

The existing content set is obviously subject to change and debate.

## Building

Here's an example command:

```shell
sudo rpm-ostree compose image --authfile ~/.config/containers/myquay.json --cachedir=cache -i --format=ociarchive centos-tier-0-stream9.yaml centos-tier-0-stream9.ociarchive
```

In some situations, copying to a local `.ociarchive` file is convenient. You
can also push to a registry with `--format=registry`.

More information at <https://coreos.github.io/rpm-ostree/container/>

## Badges

| Badge | Description | Service |
| ----------------------- | -------------------- | ------------ |
| [![Renovate][1]][2] | Dependencies | Renovate |
| [![Pre-commit][3]][4] | Static quality gates | pre-commit |

[1]: https://img.shields.io/badge/renovate-enabled-brightgreen?logo=renovate
[2]: https://renovatebot.com
[3]: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit
[4]: https://pre-commit.com/
14 changes: 14 additions & 0 deletions docs/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Bundler setup for jekyll to be deployed on github pages.

source "https://rubygems.org"

# Note that we're using the github-pages gem to mimic the GitHub pages
# automated setup. That installs jekyll, a default set of jekyll
# plugins, and a modified jekyll configuration.
group :jekyll_plugins do
gem "github-pages"
gem "jekyll-remote-theme"
end

# Prefer the GitHub flavored markdown version of kramdown.
gem "kramdown-parser-gfm"
58 changes: 58 additions & 0 deletions docs/_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
title: containers/bootc
description: bootc documentation
baseurl: "/bootc"
url: "https://containers.github.io"
# Comment above and use below for local development
# url: "http://localhost:4000"
permalink: /:title/
markdown: kramdown
kramdown:
typographic_symbols:
ndash: "--"
mdash: "---"

# Exclude the README and the bundler files that would normally be
# ignored by default.
exclude:
- README.md
- Gemfile
- Gemfile.lock
- prep-docs.sh
- vendor/

# These are copies of the apidoc/html and man/html directories. Run
# prep-docs.sh before jekyll to put it in place.
include: [reference, man]

remote_theme: just-the-docs/just-the-docs@v0.4.1
plugins:
- jekyll-remote-theme

color_scheme: coreos

# Aux links for the upper right navigation
aux_links:
"bootc on GitHub":
- "https://github.com/containers/bootc"

footer_content: "Copyright &copy; <a href=\"https://www.redhat.com\">Red Hat, Inc.</a> and <a href=\"https://github.com/containers\">others</a>."

# Footer last edited timestamp
last_edit_timestamp: true
last_edit_time_format: "%b %e %Y at %I:%M %p"

# Footer "Edit this page on GitHub" link text
gh_edit_link: true
gh_edit_link_text: "Edit this page on GitHub"
gh_edit_repository: "https://github.com/containers/bootc"
gh_edit_branch: "main"
gh_edit_source: docs
gh_edit_view_mode: "tree"

compress_html:
clippings: all
comments: all
endings: all
startings: []
blanklines: false
profile: false
1 change: 1 addition & 0 deletions docs/_sass/color_schemes/coreos.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
$link-color: #53a3da;
4 changes: 4 additions & 0 deletions cloud-agents.md → docs/cloud-agents.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
nav_order: 2
---

# Project CentOS boot tier-1 and cloud agents

The tier-0 and tier-1 images today do not contain any special
Expand Down
4 changes: 4 additions & 0 deletions coreos.md → docs/coreos.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
---
nav_order: 5
---

# Relationship with CoreOS

The CoreOS Container Linux project was very successful, spawning multiple projects
Expand Down
118 changes: 118 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# Goals

This project's toplevel goal is to create base *bootable* container images
from Fedora ELN and CentOS Stream packages.

## Status

This is an in-development project not intended for production use yet.

## Trying it out

See [install.md](./install.md).

## Differences from Fedora CoreOS

Fedora CoreOS today is not small; there are multiple reasons for this, but
primarily because it was created in a pre-bootable-container time. Not everyone
wants e.g. moby-engine.

But going beyond size, the images produced by this project will focus
on a container-native flow. We will ship a (container) image that does not
include Ignition for example.

## Differences from RHEL CoreOS

We sometimes say that RHEL CoreOS [has FCOS as an upstream][1] but this is only
kind of true; RHEL CoreOS includes a subset of FCOS content, and is lifecycled
with OCP.

An explicit goal of this project is to produce bootable container images
that can be used as *base images* for RHEL CoreOS; for more on this, see e.g.
<https://github.com/openshift/os/issues/799>

## Differences from RHEL for Edge

It is an explicit goal that CentOS boot also becomes a "base input" to RHEL for Edge.

## What does CentOS boot means

From [Wikipedia](https://en.wikipedia.org/wiki/Bamboo_Forest_(Kyoto,_Japan)):

> Bamboo Forest, Arashiyama Bamboo Grove or CentOS boot Bamboo Forest, is a natural
> forest of bamboo in Arashiyama, Kyoto, Japan
[1]: https://github.com/openshift/os/blob/master/docs/faq.md#q-what-is-coreos

## Demonstration base images for Project CentOS boot

These images are technology demonstrators, not for production use. The
intention is that these images are generated by the OS vendor or
distribution.
Or, you can fork this repository and generate your own via
`rpm-ostree compose image`.

## Operating system sources

At the moment these demonstration builds use Fedora ELN and CentOS Stream 9.

## Tiers

### Tier 0

This is the basic tier; it has effectively just:

- kernel systemd selinux-policy-targeted bootc

You are generally going to need to generate derived images from this; installing
it on its own will boot to a system with no automatic networking support, no SSH,
and no default passwords etc.

### Tier 1

This is larger system.

- NetworkManager, chrony
- rpm-ostree (to install packages and in case it's useful "day 2")
- openssh-server

At the current time, it does not include Ignition or cloud-init; so you will
still need to derive from it in order to inject a mechanism to log in in many
cases. However, it will work to install it using e.g. Anaconda and set up
users and passwords that way.

## Image matrix (Fedora)

- `quay.io/centos-boot/fedora-tier-1:eln`

### More about image sources

The current manifest definitions [tier-0](tier-0) and [tier-1](tier-1) were
forked from Fedora CoreOS, but significantly cut down.

The existing content set is obviously subject to change and debate.

## Building

Here's an example command:

```shell
sudo rpm-ostree compose image --authfile ~/.config/containers/myquay.json --cachedir=cache -i --format=ociarchive centos-tier-0-stream9.yaml centos-tier-0-stream9.ociarchive
```

In some situations, copying to a local `.ociarchive` file is convenient. You
can also push to a registry with `--format=registry`.

More information at <https://coreos.github.io/rpm-ostree/container/>

## Badges

| Badge | Description | Service |
| ----------------------- | -------------------- | ------------ |
| [![Renovate][1]][2] | Dependencies | Renovate |
| [![Pre-commit][3]][4] | Static quality gates | pre-commit |

[1]: https://img.shields.io/badge/renovate-enabled-brightgreen?logo=renovate
[2]: https://renovatebot.com
[3]: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit
[4]: https://pre-commit.com/
Loading

0 comments on commit 533dd3f

Please sign in to comment.