summaryrefslogtreecommitdiff
path: root/doc/man/debos.1
blob: 6e58a40638816ebbde9830f3d130a5baaa019d13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
.\" Automatically generated by Pandoc 2.2.1
.\"
.TH "debos" "1" "" "" ""
.hy
.SH NAME
.IP
.nf
\f[C]
debos\ \-\ \ Debian\ OS\ images\ builder
\f[]
.fi
.SH SYPNOSIS
.IP
.nf
\f[C]
debos\ [options]\ <recipe\ file\ in\ YAML>
debos\ [\-\-help]
\f[]
.fi
.PP
Application Options:
.IP
.nf
\f[C]
\ \ \ \ \ \ \-\-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
\f[]
.fi
.SH DESCRIPTION
.PP
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.
.PP
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.
.PP
Some of the actions provided by debos to customize and produce images
are:
.IP \[bu] 2
apt: install packages and their dependencies with `apt'
.IP \[bu] 2
debootstrap: construct the target rootfs with debootstrap
.IP \[bu] 2
download: download a single file from the internet
.IP \[bu] 2
filesystem\-deploy: deploy a root filesystem to an image previously
created
.IP \[bu] 2
image\-partition: create an image file, make partitions and format them
.IP \[bu] 2
ostree\-commit: create an OSTree commit from rootfs
.IP \[bu] 2
ostree\-deploy: deploy an OSTree branch to the image
.IP \[bu] 2
overlay: do a recursive copy of directories or files to the target
filesystem
.IP \[bu] 2
pack: create a tarball with the target filesystem
.IP \[bu] 2
raw: directly write a file to the output image at a given offset
.IP \[bu] 2
run: allows to run a command or script in the filesystem or in the host
.IP \[bu] 2
unpack: unpack files from archive in the filesystem
.PP
A full syntax description of all the debos actions can be found at:
https://godoc.org/github.com/go\-debos/debos/actions
.SH SIMPLE EXAMPLE
.PP
The following example will create a arm64 image, install several
packages in it, change the file /etc/hostname to \[lq]debian\[rq] and
finally make a tarball.
.IP
.nf
\f[C]
{{\-\ $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
\f[]
.fi
.PP
To run it, create a file named \f[C]example.yaml\f[] and run:
.IP
.nf
\f[C]
debos\ example.yaml
\f[]
.fi
.PP
The final tarball will be named \[lq]debian.tgz\[rq] if you would like
to modify this name, you can provided a different name for the variable
image like this:
.IP
.nf
\f[C]
debos\ \-t\ image:"debian\-arm64.tgz"\ example.yaml
\f[]
.fi
.SH OTHER EXAMPLES
.PP
This example builds a customized image for a Raspberry Pi 3.
https://github.com/go\-debos/debos\-recipes
.SH SEE ALSO
.PP
fakemachine at https://github.com/go\-debos/fakemachine