Documentation
¶
Overview ¶
Package manifest is used to define an osbuild manifest as a series of pipelines with content. Typically, a Manifest is created using manifest.New() and pipelines are defined and added to it using the pipeline constructors (e.g., NewBuild()) with the manifest as the first argument. The pipelines are added in the order they are called.
The package implements a standard set of osbuild pipelines. A pipeline conceptually represents a named filesystem tree, optionally generated in a provided build root (represented by another pipeline). All inputs to a pipeline must be explicitly specified, either in terms of another pipeline, in terms of content addressable inputs or in terms of static parameters to the inherited Pipeline structs.
Index ¶
- Constants
- type AnacondaInstaller
- type AnacondaInstallerISOTree
- type AnacondaInstallerType
- type AnacondaInteractiveDefaults
- type Base
- type Build
- type BuildOptions
- type BuildrootFromContainer
- type BuildrootFromPackages
- type ContentTest
- type CoreOSISOTree
- type CoreOSInstaller
- type Distro
- type EFIBootTree
- type FilePipeline
- type Gzip
- type ISO
- type ISOBootType
- type ISORootfsImg
- type Inputs
- type Manifest
- func (m Manifest) GetCheckpoints() []string
- func (m Manifest) GetContainerSourceSpecs() map[string][]container.SourceSpec
- func (m Manifest) GetExports() []string
- func (m Manifest) GetOSTreeSourceSpecs() map[string][]ostree.SourceSpec
- func (m Manifest) GetPackageSetChains() map[string][]rpmmd.PackageSet
- func (m Manifest) Serialize(depsolvedSets map[string]dnfjson.DepsolveResult, ...) (OSBuildManifest, error)
- type OCIContainer
- type OS
- type OSBuildManifest
- type OSCustomizations
- type OSTreeCommit
- type OSTreeCommitServer
- type OSTreeDeployment
- type OSTreeDeploymentCustomizations
- type OSTreeEncapsulate
- type OVF
- type PackageSelector
- type Pipeline
- type QCOW2
- type RawBootcImage
- type RawImage
- type RawOSTreeImage
- type RootfsType
- type SerializeOptions
- type Subscription
- type Tar
- type TreePipeline
- type VMDK
- type VPC
- type Vagrant
- type XZ
- type Zstd
Constants ¶
const ( DISTRO_NULL = iota DISTRO_EL10 DISTRO_EL9 DISTRO_EL8 DISTRO_EL7 DISTRO_FEDORA )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AnacondaInstaller ¶
type AnacondaInstaller struct {
Base
// The type of the Anaconda installer tree to prepare, this can be either
// a 'live' or a 'payload' and it controls which stages are added to the
// manifest.
Type AnacondaInstallerType
// Packages to install and/or exclude in addition to the ones required by the
// pipeline.
ExtraPackages []string
ExcludePackages []string
// Extra repositories to install packages from
ExtraRepos []rpmmd.RepoConfig
// Biosdevname indicates whether or not biosdevname should be used to
// name network devices when booting the installer. This may affect
// the naming of network devices on the target system.
Biosdevname bool
// Variant is the variant of the product being installed, if applicable.
Variant string
// Interactive defaults is a kickstart stage that can be provided, it
// will be written to /usr/share/anaconda/interactive-defaults
InteractiveDefaults *AnacondaInteractiveDefaults
// Kickstart options that will be written to the interactive defaults
// kickstart file. Currently only supports Users and Groups. Other
// properties are ignored.
InteractiveDefaultsKickstart *kickstart.Options
// Additional anaconda modules to enable
AdditionalAnacondaModules []string
// Anaconda modules to explicitly disable
DisabledAnacondaModules []string
// Additional dracut modules and drivers to enable
AdditionalDracutModules []string
AdditionalDrivers []string
Files []*fsnode.File
// Temporary
UseRHELLoraxTemplates bool
// Uses the old, deprecated, Anaconda config option "kickstart-modules".
// Only for RHEL 8.
UseLegacyAnacondaConfig bool
// SELinux policy, when set it enables the labeling of the installer
// tree with the selected profile and selects the required package
// for depsolving
SELinux string
// Locale for the installer. This should be set to the same locale as the
// ISO OS payload, if known.
Locale string
// contains filtered or unexported fields
}
An Anaconda represents the installer tree as found on an ISO this can be either a payload installer or a live installer depending on `Type`.
func NewAnacondaInstaller ¶
func NewAnacondaInstaller(installerType AnacondaInstallerType, buildPipeline Build, platform platform.Platform, repos []rpmmd.RepoConfig, kernelName, product, version string, preview bool) *AnacondaInstaller
func (*AnacondaInstaller) Platform ¶
func (p *AnacondaInstaller) Platform() platform.Platform
type AnacondaInstallerISOTree ¶
type AnacondaInstallerISOTree struct {
Base
// TODO: review optional and mandatory fields and their meaning
Release string
PartitionTable *disk.PartitionTable
// The path where the payload (tarball, ostree repo, or container) will be stored.
PayloadPath string
// If set the skopeo stage will remove signatures during copy
PayloadRemoveSignatures bool
RootfsCompression string
RootfsType RootfsType
OSPipeline *OS
OSTreeCommitSource *ostree.SourceSpec
ContainerSource *container.SourceSpec
// Kernel options for the ISO image
KernelOpts []string
// ISOBoot selects the type of boot support on the iso
ISOBoot ISOBootType
Kickstart *kickstart.Options
Files []*fsnode.File
// Pipeline object where subscription-related files are created for copying
// onto the ISO.
SubscriptionPipeline *Subscription
InstallRootfsType disk.FSType
// contains filtered or unexported fields
}
An AnacondaInstallerISOTree represents a tree containing the anaconda installer, configuration in terms of a kickstart file, as well as an embedded payload to be installed, this payload can either be an ostree CommitSpec or OSPipeline for an OS.
func NewAnacondaInstallerISOTree ¶
func NewAnacondaInstallerISOTree(buildPipeline Build, anacondaPipeline *AnacondaInstaller, rootfsPipeline *ISORootfsImg, bootTreePipeline *EFIBootTree) *AnacondaInstallerISOTree
func (*AnacondaInstallerISOTree) NewErofsStage ¶ added in v0.40.2
func (p *AnacondaInstallerISOTree) NewErofsStage() *osbuild.Stage
NewErofsStage returns an osbuild stage configured to build the erofs root filesystem for the ISO.
func (*AnacondaInstallerISOTree) NewSquashfsStage ¶ added in v0.40.2
func (p *AnacondaInstallerISOTree) NewSquashfsStage() *osbuild.Stage
NewSquashfsStage returns an osbuild stage configured to build the squashfs root filesystem for the ISO.
type AnacondaInstallerType ¶
type AnacondaInstallerType int
const ( AnacondaInstallerTypeLive AnacondaInstallerType = iota + 1 AnacondaInstallerTypePayload )
type AnacondaInteractiveDefaults ¶
type AnacondaInteractiveDefaults struct {
TarPath string
}
func NewAnacondaInteractiveDefaults ¶
func NewAnacondaInteractiveDefaults(tarPath string) *AnacondaInteractiveDefaults
type Base ¶
type Base struct {
// contains filtered or unexported fields
}
A Base represents the core functionality shared between each of the pipeline implementations, and the Base struct must be embedded in each of them.
func NewBase ¶
NewBase returns a generic Pipeline object. The name is mandatory, immutable and must be unique among all the pipelines used in a manifest, which is currently not enforced. The build argument is a pipeline representing a build root in which the rest of the pipeline is built. In order to ensure reproducibility a build pipeline must always be provided, except for int he build pipeline itself. When a build pipeline is not provided the build host's filesystem is used as the build root. The runner specifies how to use this pipeline as a build pipeline, by naming the distro it contains. When the host system is used as a build root, then the necessary runner is autodetected.
func (Base) BuildPipeline ¶
func (*Base) Checkpoint ¶
func (p *Base) Checkpoint()
type Build ¶
type Build interface {
Name() string
Checkpoint()
Manifest() *Manifest
// contains filtered or unexported methods
}
func NewBootstrap ¶ added in v0.40.2
func NewBootstrap(m *Manifest, containerSources []container.SourceSpec) Build
NewBootstrap creates a new bootstrap build pipeline from the given containers specs
func NewBuild ¶
func NewBuild(m *Manifest, runner runner.Runner, repos []rpmmd.RepoConfig, opts *BuildOptions) Build
NewBuild creates a new build pipeline from the repositories in repos and the specified packages.
func NewBuildFromContainer ¶ added in v0.30.0
func NewBuildFromContainer(m *Manifest, runner runner.Runner, containerSources []container.SourceSpec, opts *BuildOptions) Build
NewBuildFromContainer creates a new build pipeline from the given containers specs
type BuildOptions ¶ added in v0.23.0
type BuildOptions struct {
// ContainerBuildable tweaks the buildroot to be container friendly,
// i.e. to not rely on an installed osbuild-selinux
ContainerBuildable bool
// DisableSELinux disables SELinux, this is not advised, but is
// currently needed when using (experimental) cross-arch building.
DisableSELinux bool
// The SELinux policy to use in the buildroot, defaults to 'targeted' if not specified
SELinuxPolicy string
// BootstrapPipeline add the given bootstrap pipeline to the
// build pipeline. This is only needed when doing cross-arch
// building
BootstrapPipeline Build
// In some cases we have multiple build pipelines
PipelineName string
// Copy in files from other pipeline
CopyFilesFrom map[string][]string
// Ensure directories exist
EnsureDirs []*fsnode.Directory
}
type BuildrootFromContainer ¶ added in v0.30.0
type BuildrootFromContainer struct {
Base
// contains filtered or unexported fields
}
type BuildrootFromPackages ¶ added in v0.30.0
type BuildrootFromPackages struct {
Base
// contains filtered or unexported fields
}
type ContentTest ¶
type ContentTest struct {
Base
// contains filtered or unexported fields
}
A ContentTest can be used to define content sources without generating pipelines. It is useful for testing but not much else.
func NewContentTest ¶
func NewContentTest(m *Manifest, name string, packageSets []rpmmd.PackageSet, containers []container.SourceSpec, commits []ostree.SourceSpec) *ContentTest
NewContentTest creates a new ContentTest pipeline with a given name and content sources.
type CoreOSISOTree ¶
type CoreOSISOTree struct {
Base
// TODO: review optional and mandatory fields and their meaning
OSName string
Release string
Users []users.User
Groups []users.Group
PartitionTable *disk.PartitionTable
// The path where the payload (tarball or ostree repo) will be stored.
PayloadPath string
// Enable ISOLinux stage
ISOLinux bool
KernelOpts []string
// contains filtered or unexported fields
}
func NewCoreOSISOTree ¶
func NewCoreOSISOTree( buildPipeline Build, payloadPipeline *XZ, coiPipeline *CoreOSInstaller, bootTreePipeline *EFIBootTree) *CoreOSISOTree
type CoreOSInstaller ¶
type CoreOSInstaller struct {
Base
// Packages to install or exclude in addition to the ones required by the
// pipeline.
ExtraPackages []string
ExcludePackages []string
// Extra repositories to install packages from
ExtraRepos []rpmmd.RepoConfig
Variant string
// Biosdevname indicates whether or not biosdevname should be used to
// name network devices when booting the installer. This may affect
// the naming of network devices on the target system.
Biosdevname bool
FDO *fdo.Options
// For the coreos-installer we only have EmbeddedOptions for ignition
Ignition *ignition.EmbeddedOptions
AdditionalDracutModules []string
AdditionalDrivers []string
// contains filtered or unexported fields
}
func NewCoreOSInstaller ¶
func NewCoreOSInstaller(buildPipeline Build, platform platform.Platform, repos []rpmmd.RepoConfig, kernelName, product, version string) *CoreOSInstaller
NewCoreOSInstaller creates an CoreOS installer pipeline object.
func (*CoreOSInstaller) Platform ¶
func (p *CoreOSInstaller) Platform() platform.Platform
type EFIBootTree ¶
type EFIBootTree struct {
Base
Platform platform.Platform
UEFIVendor string
ISOLabel string
KernelOpts []string
// contains filtered or unexported fields
}
func NewEFIBootTree ¶
func NewEFIBootTree(buildPipeline Build, product, version string) *EFIBootTree
type FilePipeline ¶
FilePipeline is any pipeline that produces a single file (typically an image file).
type Gzip ¶ added in v0.40.2
type Gzip struct {
Base
// contains filtered or unexported fields
}
The Gzip pipeline compresses a raw image file using gzip.
func NewGzip ¶ added in v0.40.2
func NewGzip(buildPipeline Build, imgPipeline FilePipeline) *Gzip
NewGzip creates a new Gzip pipeline. imgPipeline is the pipeline producing the raw image that will be gzip compressed.
func (*Gzip) SetFilename ¶ added in v0.40.2
type ISO ¶
type ISO struct {
Base
ISOBoot ISOBootType
// contains filtered or unexported fields
}
An ISO represents a bootable ISO file created from an an existing ISOTreePipeline.
func (*ISO) SetFilename ¶
type ISOBootType ¶ added in v0.40.2
type ISOBootType uint64
const ( Grub2UEFIOnlyISOBoot ISOBootType = iota // Only boot with grub2 UEFI SyslinuxISOBoot // Boot with grub2 UEFI and syslinux/isolinux BIOS Grub2ISOBoot // Boot with grub2 UEFI and grub2 BIOS )
These constants are used by the ISO images to control the type of bootable iso
func (*ISOBootType) UnmarshalJSON ¶ added in v0.164.0
func (r *ISOBootType) UnmarshalJSON(data []byte) error
func (*ISOBootType) UnmarshalYAML ¶ added in v0.164.0
func (r *ISOBootType) UnmarshalYAML(unmarshal func(any) error) error
type ISORootfsImg ¶
func NewISORootfsImg ¶
func NewISORootfsImg(buildPipeline Build, installerPipeline Pipeline) *ISORootfsImg
type Inputs ¶ added in v0.40.2
type Inputs osbuild.SourceInputs
type Manifest ¶
type Manifest struct {
// Distro defines the distribution of the image that this manifest will
// generate. It is used for determining package names that differ between
// different distributions and version.
Distro Distro
// DistroBootstrapRef defines if a bootstrap container should be used
// to generate the buildroot
// XXX: ideally we would have "Distro distro.Distro" here and a
// "BoostrapContainerRef()" method on this but we cannot because of
// circular imports so we use the same workaround as Distro above.
DistroBootstrapRef string
// contains filtered or unexported fields
}
Manifest represents a manifest initialised with all the information required to generate the pipelines but no content. The content type sources (PackageSetChains, ContainerSourceSpecs, OSTreeSourceSpecs) must be retrieved through their corresponding Getters and resolved before serializing.
func (Manifest) GetCheckpoints ¶
func (Manifest) GetContainerSourceSpecs ¶
func (m Manifest) GetContainerSourceSpecs() map[string][]container.SourceSpec
func (Manifest) GetExports ¶
func (Manifest) GetOSTreeSourceSpecs ¶
func (m Manifest) GetOSTreeSourceSpecs() map[string][]ostree.SourceSpec
func (Manifest) GetPackageSetChains ¶
func (m Manifest) GetPackageSetChains() map[string][]rpmmd.PackageSet
func (Manifest) Serialize ¶
func (m Manifest) Serialize(depsolvedSets map[string]dnfjson.DepsolveResult, containerSpecs map[string][]container.Spec, ostreeCommits map[string][]ostree.CommitSpec, opts *SerializeOptions) (OSBuildManifest, error)
type OCIContainer ¶
type OCIContainer struct {
Base
Cmd []string
ExposedPorts []string
// contains filtered or unexported fields
}
An OCIContainer represents an OCI container, containing a filesystem tree created by another Pipeline.
func NewOCIContainer ¶
func NewOCIContainer(buildPipeline Build, treePipeline TreePipeline) *OCIContainer
func (*OCIContainer) Export ¶
func (p *OCIContainer) Export() *artifact.Artifact
func (OCIContainer) Filename ¶
func (p OCIContainer) Filename() string
func (*OCIContainer) SetFilename ¶
func (p *OCIContainer) SetFilename(filename string)
type OS ¶
type OS struct {
Base
// OSCustomizations to apply to the base OS
OSCustomizations OSCustomizations
// Environment the system will run in
Environment environment.Environment
// Workload to install on top of the base system
Workload workload.Workload
// Ref of ostree commit (optional). If empty the tree cannot be in an ostree commit
OSTreeRef string
// OSTreeParent source spec (optional). If nil the new commit (if
// applicable) will have no parent
OSTreeParent *ostree.SourceSpec
// Enabling Bootupd runs bootupctl generate-update-metadata in the tree to
// transform /usr/lib/ostree-boot into a bootupd-compatible update
// payload. Only works with ostree-based images.
Bootupd bool
// Add a bootc config file to the image (for bootable containers)
BootcConfig *bootc.Config
// Partition table, if nil the tree cannot be put on a partitioned disk
PartitionTable *disk.PartitionTable
OSProduct string
OSVersion string
OSNick string
// contains filtered or unexported fields
}
OS represents the filesystem tree of the target image. This roughly corresponds to the root filesystem once an instance of the image is running.
type OSBuildManifest ¶
type OSBuildManifest []byte
An OSBuildManifest is an opaque JSON object, which is a valid input to osbuild
func (OSBuildManifest) MarshalJSON ¶
func (m OSBuildManifest) MarshalJSON() ([]byte, error)
func (*OSBuildManifest) UnmarshalJSON ¶
func (m *OSBuildManifest) UnmarshalJSON(payload []byte) error
type OSCustomizations ¶
type OSCustomizations struct {
// Packages to install in addition to the ones required by the pipeline.
// These are the statically defined packages for the image type.
BasePackages []string
// Packages to exclude from the base package set. This is useful in
// case of weak dependencies, comps groups, or where multiple packages
// can satisfy a dependency. Must not conflict with the included base
// package set.
ExcludeBasePackages []string
// Additional repos to install the base packages from.
ExtraBaseRepos []rpmmd.RepoConfig
// Containers to embed in the image (source specification)
// TODO: move to workload
Containers []container.SourceSpec
// KernelName indicates that a kernel is installed, and names the kernel
// package.
KernelName string
// KernelOptionsAppend are appended to the kernel commandline
KernelOptionsAppend []string
// KernelOptionsBootloader controls whether kernel command line options
// should be specified in the bootloader grubenv configuration. Otherwise
// they are specified in /etc/kernel/cmdline (default).
//
// NB: The kernel options need to be still specified in /etc/default/grub
// under the GRUB_CMDLINE_LINUX variable. The reason is that it is used by
// the 10_linux script executed by grub2-mkconfig to override the kernel
// options in /etc/kernel/cmdline if the file has older timestamp than
// /etc/default/grub.
//
// This should only be used for RHEL 8 and CentOS 8 images that use grub
// (non s390x). Newer releases (9+) should keep this disabled.
KernelOptionsBootloader bool
GPGKeyFiles []string
Language string
Keyboard *string
X11KeymapLayouts []string
Hostname string
Timezone string
EnabledServices []string
DisabledServices []string
MaskedServices []string
DefaultTarget string
// SELinux policy, when set it enables the labeling of the
// tree with the selected profile
SELinux string
// BuildSELinux policy, when set it enables the labeling of
// the *build tree* with the selected profile
BuildSELinux string
SELinuxForceRelabel *bool
// Do not install documentation
ExcludeDocs bool
Groups []users.Group
Users []users.User
ShellInit []shell.InitFile
// TODO: drop osbuild types from the API
Firewall *osbuild.FirewallStageOptions
Grub2Config *osbuild.GRUB2Config
Sysconfig []*osbuild.SysconfigStageOptions
SystemdLogind []*osbuild.SystemdLogindStageOptions
CloudInit []*osbuild.CloudInitStageOptions
Modprobe []*osbuild.ModprobeStageOptions
DracutConf []*osbuild.DracutConfStageOptions
SystemdDropin []*osbuild.SystemdUnitStageOptions
SystemdUnit []*osbuild.SystemdUnitCreateStageOptions
Authselect *osbuild.AuthselectStageOptions
SELinuxConfig *osbuild.SELinuxConfigStageOptions
Tuned *osbuild.TunedStageOptions
Tmpfilesd []*osbuild.TmpfilesdStageOptions
PamLimitsConf []*osbuild.PamLimitsConfStageOptions
Sysctld []*osbuild.SysctldStageOptions
DNFConfig []*osbuild.DNFConfigStageOptions
DNFAutomaticConfig *osbuild.DNFAutomaticConfigStageOptions
YUMConfig *osbuild.YumConfigStageOptions
YUMRepos []*osbuild.YumReposStageOptions
SshdConfig *osbuild.SshdConfigStageOptions
GCPGuestAgentConfig *osbuild.GcpGuestAgentConfigOptions
AuthConfig *osbuild.AuthconfigStageOptions
PwQuality *osbuild.PwqualityConfStageOptions
ChronyConfig *osbuild.ChronyStageOptions
WAAgentConfig *osbuild.WAAgentConfStageOptions
UdevRules *osbuild.UdevRulesStageOptions
WSLConfig *osbuild.WSLConfStageOptions
WSLDistributionConfig *osbuild.WSLDistributionConfStageOptions
InsightsClientConfig *osbuild.InsightsClientConfigStageOptions
NetworkManager *osbuild.NMConfStageOptions
Presets []osbuild.Preset
ContainersStorage *string
// OpenSCAP config
OpenSCAPRemediationConfig *oscap.RemediationConfig
Subscription *subscription.ImageOptions
// Indicates if rhc should be set to permissive when creating the registration script
PermissiveRHC *bool
// The final RHSM config to be applied to the image
RHSMConfig *subscription.RHSMConfig
RHSMFacts *facts.ImageOptions
// Custom directories to create in the image. The stages for the
// directories defined here are always added at the end of the pipeline.
Directories []*fsnode.Directory
// Custom files to create in the image. The stages for the files defined
// here are always added at the end of the pipeline.
Files []*fsnode.File
CACerts []string
FIPS bool
// NoBLS configures the image bootloader with traditional menu entries
// instead of BLS. Required for legacy systems like RHEL 7.
NoBLS bool
// InstallWeakDeps enables installation of weak dependencies for packages
// that are statically defined for the pipeline.
// Defaults to True.
InstallWeakDeps bool
// Determines if the machine id should be set to "uninitialized" which allows
// "ConditionFirstBoot" to work in systemd
MachineIdUninitialized bool
// MountUnits creates systemd .mount units to describe the filesystem
// instead of writing to /etc/fstab
MountUnits bool
// VersionlockPackges uses dnf versionlock to lock a package to the version
// that is installed during image build, preventing it from being updated.
// This is only supported for distributions that use dnf4, because osbuild
// only has a stage for dnf4 version locking.
VersionlockPackages []string
}
OSCustomizations encapsulates all configuration applied to the base operating system independently of where and how it is integrated and what workload it is running. TODO: move out kernel/bootloader/cloud-init/... to other
abstractions, this should ideally only contain things that can always be applied.
type OSTreeCommit ¶
OSTreeCommit represents an ostree with one commit.
func NewOSTreeCommit ¶
func NewOSTreeCommit(buildPipeline Build, treePipeline *OS, ref string) *OSTreeCommit
NewOSTreeCommit creates a new OSTree commit pipeline. The treePipeline is the tree representing the content of the commit. ref is the ref to create the commit under.
type OSTreeCommitServer ¶
type OSTreeCommitServer struct {
Base
// Packages to install in addition to the ones required by the
// pipeline.
ExtraPackages []string
// Extra repositories to install packages from
ExtraRepos []rpmmd.RepoConfig
// TODO: should this be configurable?
Language string
// contains filtered or unexported fields
}
An OSTreeCommitServer contains an nginx server serving an embedded ostree commit.
func NewOSTreeCommitServer ¶
func NewOSTreeCommitServer(buildPipeline Build, platform platform.Platform, repos []rpmmd.RepoConfig, commitPipeline *OSTreeCommit, nginxConfigPath, listenPort string) *OSTreeCommitServer
NewOSTreeCommitServer creates a new pipeline. The content is built from repos and packages, which must contain nginx. commitPipeline is a pipeline producing an ostree commit to be served. nginxConfigPath is the path to the main nginx config file and listenPort is the port nginx will be listening on.
func (*OSTreeCommitServer) Platform ¶
func (p *OSTreeCommitServer) Platform() platform.Platform
type OSTreeDeployment ¶
type OSTreeDeployment struct {
Base
// Customizations to apply to the deployment
OSTreeDeploymentCustomizations
Remote ostree.Remote
OSVersion string
PartitionTable *disk.PartitionTable
EnabledServices []string
DisabledServices []string
// Use bootupd instead of grub2 as the bootloader
UseBootupd bool
// contains filtered or unexported fields
}
OSTreeDeployment represents the filesystem tree of a target image based on a deployed ostree commit.
func NewOSTreeCommitDeployment ¶ added in v0.20.0
func NewOSTreeCommitDeployment(buildPipeline Build, commit *ostree.SourceSpec, osName string, platform platform.Platform) *OSTreeDeployment
NewOSTreeCommitDeployment creates a pipeline for an ostree deployment from a commit.
func NewOSTreeContainerDeployment ¶ added in v0.20.0
func NewOSTreeContainerDeployment(buildPipeline Build, container *container.SourceSpec, ref string, osName string, platform platform.Platform) *OSTreeDeployment
NewOSTreeDeployment creates a pipeline for an ostree deployment from a container
type OSTreeDeploymentCustomizations ¶ added in v0.40.2
type OSTreeDeploymentCustomizations struct {
SysrootReadOnly bool
KernelOptionsAppend []string
Keyboard string
Locale string
Users []users.User
Groups []users.Group
// Specifies the ignition platform to use.
// If empty, ignition is not enabled.
IgnitionPlatform string
Directories []*fsnode.Directory
Files []*fsnode.File
FIPS bool
CustomFileSystems []string
// Lock the root account in the deployment unless the user defined root
// user options in the build configuration.
LockRoot bool
// MountUnits creates systemd .mount units to describe the filesystem
// instead of writing to /etc/fstab
MountUnits bool
}
OSTreeDeploymentCustomizations encapsulates all configuration applied to an OSTree deployment independently of where and how it is integrated and what workload it is running.
type OSTreeEncapsulate ¶ added in v0.20.0
type OSTreeEncapsulate struct {
Base
// contains filtered or unexported fields
}
func NewOSTreeEncapsulate ¶ added in v0.20.0
func NewOSTreeEncapsulate(buildPipeline Build, inputPipeline Pipeline, pipelinename string) *OSTreeEncapsulate
func (*OSTreeEncapsulate) Export ¶ added in v0.20.0
func (p *OSTreeEncapsulate) Export() *artifact.Artifact
func (OSTreeEncapsulate) Filename ¶ added in v0.20.0
func (p OSTreeEncapsulate) Filename() string
func (*OSTreeEncapsulate) SetFilename ¶ added in v0.20.0
func (p *OSTreeEncapsulate) SetFilename(filename string)
type OVF ¶
type OVF struct {
Base
// contains filtered or unexported fields
}
A OVF copies a vmdk image to it's own tree and generates an OVF descriptor
type PackageSelector ¶
type PackageSelector func([]rpmmd.PackageSet) []rpmmd.PackageSet
type Pipeline ¶
type Pipeline interface {
// Name of the pipeline.
Name() string
// Checkpoint this pipeline when osbuild is called.
Checkpoint()
// Export this tree of this pipeline as an artifact when osbuild is called.
Export() *artifact.Artifact
// BuildPipeline returns a reference to the pipeline that creates the build
// root for this pipeline. For build pipelines, it should return nil.
BuildPipeline() Build
// Manifest returns a reference to the Manifest which this Pipeline belongs to.
Manifest() *Manifest
// contains filtered or unexported methods
}
Pipeline serializes to a series of stages that modify a file system tree when used as input to osbuild. Different Pipelines serialize to different sequences of stages depending on their type and configuration.
type QCOW2 ¶
A QCOW2 turns a raw image file into qcow2 image.
func NewQCOW2 ¶
func NewQCOW2(buildPipeline Build, imgPipeline FilePipeline) *QCOW2
NewQCOW2 createsa new QCOW2 pipeline. imgPipeline is the pipeline producing the raw image. The pipeline name is the name of the new pipeline. Filename is the name of the produced qcow2 image.
func (*QCOW2) SetFilename ¶
type RawBootcImage ¶ added in v0.40.2
type RawBootcImage struct {
Base
// customizations go here because there is no intermediate
// tree, with `bootc install to-filesystem` we can only work
// with the image itself
PartitionTable *disk.PartitionTable
KernelOptionsAppend []string
// The users to put into the image, note that /etc/paswd (and friends)
// will become unmanaged state by bootc when used
Users []users.User
Groups []users.Group
// Custom directories and files to create in the image
Directories []*fsnode.Directory
Files []*fsnode.File
// SELinux policy, when set it enables the labeling of the tree with the
// selected profile
SELinux string
// MountUnits creates systemd .mount units to describe the filesystem
// instead of writing to /etc/fstab
MountUnits bool
// contains filtered or unexported fields
}
A RawBootcImage represents a raw bootc image file which can be booted in a hypervisor.
func NewRawBootcImage ¶ added in v0.40.2
func NewRawBootcImage(buildPipeline Build, containers []container.SourceSpec, platform platform.Platform) *RawBootcImage
func (*RawBootcImage) Export ¶ added in v0.40.2
func (p *RawBootcImage) Export() *artifact.Artifact
XXX: copied from raw.go
func (RawBootcImage) Filename ¶ added in v0.40.2
func (p RawBootcImage) Filename() string
func (*RawBootcImage) SetFilename ¶ added in v0.40.2
func (p *RawBootcImage) SetFilename(filename string)
type RawImage ¶
A RawImage represents a raw image file which can be booted in a hypervisor. It is created from an existing OSPipeline.
func NewRawImage ¶
func (*RawImage) SetFilename ¶
type RawOSTreeImage ¶
type RawOSTreeImage struct {
Base
// contains filtered or unexported fields
}
A RawOSTreeImage represents a raw ostree image file which can be booted in a hypervisor. It is created from an existing OSTreeDeployment.
func NewRawOStreeImage ¶
func NewRawOStreeImage(buildPipeline Build, treePipeline *OSTreeDeployment, platform platform.Platform) *RawOSTreeImage
func (*RawOSTreeImage) Export ¶
func (p *RawOSTreeImage) Export() *artifact.Artifact
func (RawOSTreeImage) Filename ¶
func (p RawOSTreeImage) Filename() string
func (*RawOSTreeImage) SetFilename ¶
func (p *RawOSTreeImage) SetFilename(filename string)
type RootfsType ¶ added in v0.40.2
type RootfsType uint64
const ( SquashfsExt4Rootfs RootfsType = iota // Create an EXT4 rootfs compressed by Squashfs SquashfsRootfs // Create a plain squashfs rootfs ErofsRootfs // Create a plain erofs rootfs )
These constants are used by the ISO images to control the style of the root filesystem
func (*RootfsType) UnmarshalJSON ¶ added in v0.40.2
func (r *RootfsType) UnmarshalJSON(data []byte) error
func (*RootfsType) UnmarshalYAML ¶ added in v0.40.2
func (r *RootfsType) UnmarshalYAML(unmarshal func(any) error) error
type SerializeOptions ¶ added in v0.40.2
type SerializeOptions struct {
RpmDownloader osbuild.RpmDownloader
}
type Subscription ¶ added in v0.40.2
type Subscription struct {
Base
Subscription *subscription.ImageOptions
// Custom directories and files to create in the pipeline
Directories []*fsnode.Directory
Files []*fsnode.File
}
func NewSubscription ¶ added in v0.40.2
func NewSubscription(buildPipeline Build, subOptions *subscription.ImageOptions) *Subscription
NewSubscription creates a new subscription pipeline for creating files required to register a system on first boot. The pipeline is intended to be used to create the files necessary for registering a system, but outside the OS tree, so they can be copied to other locations in the tree after they're created (for example, to an ISO).
type Tar ¶
type Tar struct {
Base
Format osbuild.TarArchiveFormat
Compression osbuild.TarArchiveCompression
RootNode osbuild.TarRootNode
Paths []string
ACLs *bool
SELinux *bool
Xattrs *bool
Transform string
// contains filtered or unexported fields
}
A Tar represents the contents of another pipeline in a tar file
func NewTar ¶
NewTar creates a new TarPipeline. The inputPipeline represents the filesystem tree which will be the contents of the tar file. The pipelinename is the name of the pipeline. The filename is the name of the output tar file.
func (*Tar) SetFilename ¶
type TreePipeline ¶
type TreePipeline interface {
Name() string
Manifest() *Manifest
BuildPipeline() Build
Platform() platform.Platform
}
TreePipeline is any pipeline that produces a directory tree.
type VMDK ¶
type VMDK struct {
Base
// contains filtered or unexported fields
}
A VMDK turns a raw image file or a raw ostree image file into vmdk image.
func NewVMDK ¶
func NewVMDK(buildPipeline Build, imgPipeline FilePipeline) *VMDK
NewVMDK creates a new VMDK pipeline. imgPipeline is the pipeline producing the raw image. imgOstreePipeline is the pipeline producing the raw ostree image. Either imgPipeline or imgOStreePipeline are required, but not both at the same time. Filename is the name of the produced image.
func (*VMDK) SetFilename ¶
type VPC ¶
A VPC turns a raw image file into qemu-based image format, such as vhd.
func NewVPC ¶
func NewVPC(buildPipeline Build, imgPipeline FilePipeline) *VPC
NewVPC createsa new Qemu pipeline. imgPipeline is the pipeline producing the raw image. The pipeline name is the name of the new pipeline. Filename is the name of the produced image.
func (*VPC) SetFilename ¶
type Vagrant ¶ added in v0.40.2
type Vagrant struct {
Base
// contains filtered or unexported fields
}
func NewVagrant ¶ added in v0.40.2
func NewVagrant(buildPipeline Build, imgPipeline FilePipeline, provider osbuild.VagrantProvider, prng *rand.Rand) *Vagrant
func (*Vagrant) SetFilename ¶ added in v0.40.2
type XZ ¶
type XZ struct {
Base
// contains filtered or unexported fields
}
The XZ pipeline compresses a raw image file using xz.
func NewXZ ¶
func NewXZ(buildPipeline Build, imgPipeline FilePipeline) *XZ
NewXZ creates a new XZ pipeline. imgPipeline is the pipeline producing the raw image that will be xz compressed.
func (*XZ) SetFilename ¶
type Zstd ¶ added in v0.40.2
type Zstd struct {
Base
// contains filtered or unexported fields
}
The Zstd pipeline compresses a raw image file using zstd.
func NewZstd ¶ added in v0.40.2
func NewZstd(buildPipeline Build, imgPipeline FilePipeline) *Zstd
NewZstd creates a new Zstd pipeline. imgPipeline is the pipeline producing the raw image that will be zstd compressed.
func (*Zstd) SetFilename ¶ added in v0.40.2
Source Files
¶
- anaconda_installer.go
- anaconda_installer_iso_tree.go
- build.go
- coi_iso_tree.go
- commit.go
- commit_server_tree.go
- common.go
- coreos_installer.go
- efi_boot_tree.go
- empty.go
- gzip.go
- iso.go
- iso_rootfs.go
- manifest.go
- oci_container.go
- os.go
- ostree_deployment.go
- ostree_encapsulate.go
- ovf.go
- pipeline.go
- qcow2.go
- raw.go
- raw_bootc.go
- raw_ostree.go
- subscription.go
- tar.go
- vagrant.go
- vmdk.go
- vpc.go
- xz.go
- zstd.go