GitHub - go-debos/debos: Debian OS builder
source link: https://github.com/go-debos/debos
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
debos - Debian OS images builder
Sypnosis
debos [options] <recipe file in YAML>
debos [--help]
Application Options:
--artifactdir=
-t, --template-var= Template variables
--debug-shell Fall into interactive shell on error
-s, --shell= Redefine interactive shell binary (default: bash)
--scratchsize= Size of disk backed scratch space
Description
debos is a tool to make the creation of various Debian-based OS images simpler. While most other tools focus on specific use-cases, debos is more meant as a tool-chain to make common actions trivial while providing enough rope to do whatever tweaking that might be required behind the scene.
debos expects a YAML file as input and will run the actions listed in the file sequentially. These actions should be self-contained and independent of each other.
Some of the actions provided by debos to customize and produce images are:
- apt: install packages and their dependencies with 'apt'
- debootstrap: construct the target rootfs with debootstrap
- download: download a single file from the internet
- filesystem-deploy: deploy a root filesystem to an image previously created
- image-partition: create an image file, make partitions and format them
- ostree-commit: create an OSTree commit from rootfs
- ostree-deploy: deploy an OSTree branch to the image
- overlay: do a recursive copy of directories or files to the target filesystem
- pack: create a tarball with the target filesystem
- raw: directly write a file to the output image at a given offset
- run: allows to run a command or script in the filesystem or in the host
- unpack: unpack files from archive in the filesystem
A full syntax description of all the debos actions can be found at: https://godoc.org/github.com/go-debos/debos/actions
Simple example
The following example will create a arm64 image, install several packages in it, change the file /etc/hostname to "debian" and finally make a tarball.
{{- $image := or .image "debian.tgz" -}}
architecture: arm64
actions:
- action: debootstrap
suite: "buster"
components:
- main
- non-free
mirror: https://deb.debian.org/debian
variant: minbase
- action: apt
packages: [ sudo, openssh-server, adduser, systemd-sysv, firmware-linux ]
- action: run
chroot: true
command: echo debian > /etc/hostname
- action: pack
file: {{ $image }}
compression: gz
To run it, create a file named example.yaml
and run:
debos example.yaml
The final tarball will be named "debian.tgz" if you would like to modify this name, you can provided a different name for the variable image like this:
debos -t image:"debian-arm64.tgz" example.yaml
Other examples
This example builds a customized image for a Raspberry Pi 3. https://github.com/go-debos/debos-recipes
See also
fakemachine at https://github.com/go-debos/fakemachine
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK