lxc

package
v1.4.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 1, 2019 License: MPL-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const BuilderId = "ustream.lxc"

The unique ID for this builder

Variables

This section is empty.

Functions

func RunCommand added in v1.3.0

func RunCommand(args ...string) error

func ShellCommand

func ShellCommand(command string) *exec.Cmd

ShellCommand takes a command string and returns an *exec.Cmd to execute it within the context of a shell (/bin/sh).

Types

type Artifact

type Artifact struct {
	// contains filtered or unexported fields
}

func (*Artifact) BuilderId

func (*Artifact) BuilderId() string

func (*Artifact) Destroy

func (a *Artifact) Destroy() error

func (*Artifact) Files

func (a *Artifact) Files() []string

func (*Artifact) Id

func (*Artifact) Id() string

func (*Artifact) State

func (a *Artifact) State(name string) interface{}

func (*Artifact) String

func (a *Artifact) String() string

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

func (*Builder) Prepare

func (b *Builder) Prepare(raws ...interface{}) ([]string, error)

func (*Builder) Run

func (b *Builder) Run(ctx context.Context, ui packer.Ui, hook packer.Hook) (packer.Artifact, error)

type CommandWrapper

type CommandWrapper func(string) (string, error)

CommandWrapper is a type that given a command, will possibly modify that command in-flight. This might return an error.

type Config

type Config struct {
	common.PackerConfig `mapstructure:",squash"`
	// The path to the lxc configuration file.
	ConfigFile string `mapstructure:"config_file" required:"true"`
	// The directory in which to save the exported
	// tar.gz. Defaults to output-<BuildName> in the current directory.
	OutputDir string `mapstructure:"output_directory" required:"false"`
	// The name of the LXC container. Usually stored
	// in /var/lib/lxc/containers/<container_name>. Defaults to
	// packer-<BuildName>.
	ContainerName string `mapstructure:"container_name" required:"false"`
	// Allows you to specify a wrapper command, such
	// as ssh so you can execute packer builds on a remote host. Defaults to
	// Empty.
	CommandWrapper string `mapstructure:"command_wrapper" required:"false"`
	// The timeout in seconds to wait for the the
	// container to start. Defaults to 20 seconds.
	RawInitTimeout string `mapstructure:"init_timeout" required:"false"`
	// Options to pass to lxc-create. For
	// instance, you can specify a custom LXC container configuration file with
	// ["-f", "/path/to/lxc.conf"]. Defaults to []. See man 1 lxc-create for
	// available options.
	CreateOptions []string `mapstructure:"create_options" required:"false"`
	// Options to pass to lxc-start. For
	// instance, you can override parameters from the LXC container configuration
	// file via ["--define", "KEY=VALUE"]. Defaults to []. See
	// man 1 lxc-start for available options.
	StartOptions []string `mapstructure:"start_options" required:"false"`
	// Options to pass to lxc-attach. For
	// instance, you can prevent the container from inheriting the host machine's
	// environment by specifying ["--clear-env"]. Defaults to []. See
	// man 1 lxc-attach for available options.
	AttachOptions []string `mapstructure:"attach_options" required:"false"`
	// The LXC template name to use.
	Name string `mapstructure:"template_name" required:"true"`
	// Options to pass to the given
	// lxc-template command, usually located in
	// /usr/share/lxc/templates/lxc-<template_name>. Note: This gets passed as
	// ARGV to the template command. Ensure you have an array of strings, as a
	// single string with spaces probably won't work. Defaults to [].
	Parameters []string `mapstructure:"template_parameters" required:"false"`
	// Environmental variables to
	// use to build the template with.
	EnvVars []string `mapstructure:"template_environment_vars" required:"true"`
	// The minimum run level to wait for the
	// container to reach. Note some distributions (Ubuntu) simulate run levels
	// and may report 5 rather than 3.
	TargetRunlevel int `mapstructure:"target_runlevel" required:"false"`
	InitTimeout    time.Duration
	// contains filtered or unexported fields
}

func NewConfig

func NewConfig(raws ...interface{}) (*Config, error)

type LxcAttachCommunicator

type LxcAttachCommunicator struct {
	RootFs        string
	ContainerName string
	AttachOptions []string
	CmdWrapper    CommandWrapper
}

func (*LxcAttachCommunicator) CheckInit

func (c *LxcAttachCommunicator) CheckInit() (string, error)

func (*LxcAttachCommunicator) Download

func (c *LxcAttachCommunicator) Download(src string, w io.Writer) error

func (*LxcAttachCommunicator) DownloadDir

func (c *LxcAttachCommunicator) DownloadDir(src string, dst string, exclude []string) error

func (*LxcAttachCommunicator) Execute

func (c *LxcAttachCommunicator) Execute(commandString string) (*exec.Cmd, error)

func (*LxcAttachCommunicator) Start

func (*LxcAttachCommunicator) Upload

func (c *LxcAttachCommunicator) Upload(dst string, r io.Reader, fi *os.FileInfo) error

func (*LxcAttachCommunicator) UploadDir

func (c *LxcAttachCommunicator) UploadDir(dst string, src string, exclude []string) error

type StepProvision

type StepProvision struct{}

StepProvision provisions the instance within a chroot.

func (*StepProvision) Cleanup

func (s *StepProvision) Cleanup(state multistep.StateBag)

func (*StepProvision) Run

type StepWaitInit

type StepWaitInit struct {
	WaitTimeout time.Duration
}

func (*StepWaitInit) Cleanup

func (s *StepWaitInit) Cleanup(multistep.StateBag)

func (*StepWaitInit) Run

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL