juju

package module
v0.0.0-...-4bd6544 Latest Latest
Warning

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

Go to latest
Published: Oct 5, 2016 License: AGPL-3.0 Imports: 0 Imported by: 0

README

juju

juju is devops distilled.

Juju enables you to use Charms to deploy your application architectures to EC2, OpenStack, Azure, HP your data center and even your own Ubuntu based laptop. Moving between models is simple giving you the flexibility to switch hosts whenever you want — for free.

For more information, see the docs.

Getting started

juju is written in Go (http://golang.org), a modern, compiled, statically typed, concurrent language. This document describes how to build juju from source.

If you are looking for binary releases of juju, they are available from the Juju stable PPA, https://launchpad.net/~juju/+archive/stable, and can be installed with:

sudo apt-add-repository ppa:juju/stable
sudo apt-get update
sudo apt-get install juju

Setting GOPATH

When working with the source of Go programs, you should define a path within your home directory (or other workspace) which will be your GOPATH. GOPATH is similar to Java's CLASSPATH or Python's ~/.local. GOPATH is documented online at http://golang.org/pkg/go/build/ and inside the go tool itself

go help gopath

Various conventions exist for naming the location of your GOPATH, but it should exist, and be writable by you. For example

export GOPATH=${HOME}/work
mkdir $GOPATH

will define and create $HOME/work as your local GOPATH. The go tool itself will create three subdirectories inside your GOPATH when required; src, pkg and bin, which hold the source of Go programs, compiled packages and compiled binaries, respectively.

Setting GOPATH correctly is critical when developing Go programs. Set and export it as part of your login script.

Add $GOPATH/bin to your PATH, so you can run the go programs you install:

PATH="$GOPATH/bin:$PATH"

Getting juju

The easiest way to get the source for juju is to use the go get command.

go get -d -v github.com/juju/juju/...

This command will checkout the source of juju and inspect it for any unmet Go package dependencies, downloading those as well. go get will also build and install juju and its dependencies. To checkout without installing, use the -d flag. More details on the go get flags are available using

go help get

At this point you will have the git local repository of the juju source at $GOPATH/github.com/juju/juju. The source for any dependent packages will also be available inside $GOPATH. You can use git pull --rebase, or the less convenient go get -u github.com/juju/juju/... to update the source from time to time. If you want to know more about contributing to juju, please read the CONTRIBUTING companion to this file.

Installing prerequisites

You can use make install-dependencies or, if you prefer to install them manually, check the Makefile target.

This will add some PPAs to ensure that you can install the required golang and mongodb-server versions for precise onwards, in addition to the other dependencies.

Building juju

go install -v github.com/juju/juju/...

Will build juju and install the binary commands into $GOPATH/bin. It is likely if you have just completed the previous step to get the juju source, the install process will produce no output, as the final executables are up-to-date.

If you do see any errors, there is a good chance they are due to changes in juju's dependencies. See the Dependency management section of CONTRIBUTING for more information on getting the dependencies right.

Using juju

After following the steps above you will have the juju client installed in GOPATH/bin/juju. You should ensure that this version of juju appears earlier in your path than any packaged versions of juju, or older Python juju commands. You can verify this using

which juju

You should be able to bootstrap a local model now with the following (Note: the use of sudo for bootstrap here is only required for the local provider because it uses LXC, which requires root privileges)

juju init
juju switch local
sudo juju bootstrap

Installing bash completion for juju

make install-etc

Will install Bash completion for juju cli to /etc/bash_completion.d/juju. It does dynamic completion for commands requiring service, unit or machine names (like e.g. juju status , juju ssh , juju terminate-machine <machine#>, etc), by parsing cached juju status output for speedup. It also does command flags completion by parsing juju help ... output.

Building Juju as a Snap Package

Building

This requires the godeps plugin -- make sure your snapcraft version is > 2.13.1. Run snapcraft at the root of the repository. A snap will build.

Current State

Needs devmode per the known issues below. The resulting snap itself works perfectly in developer mode. Do note however credentials are not shared with a debian packaged juju, and any installed juju's will own juju on your $PATH over the snap.

Known Issues

Documentation

Overview

Juju is devops distilled.

Project homepage: https://github.com/juju/juju

For more information please refer to the README file in this directory.

Directories

Path Synopsis
api
application
Package application provides access to the application api facade.
Package application provides access to the application api facade.
charms
charms provides a client for accessing the charms API.
charms provides a client for accessing the charms API.
hostkeyreporter
Package hostkeyreporter implements the client-side API facade used by the hostkeyreporter worker.
Package hostkeyreporter implements the client-side API facade used by the hostkeyreporter worker.
leadership
Package leadership implements the client to the analog leadership service.
Package leadership implements the client to the analog leadership service.
logsender
Package logsender implements the API for storing log messages on the API server.
Package logsender implements the API for storing log messages on the API server.
machineactions
machineactions implements the the api side of running actions on machines
machineactions implements the the api side of running actions on machines
meterstatus
Package meterstatus contains an implementation of the api facade to watch the meter status of a unit for changes and return the current meter status.
Package meterstatus contains an implementation of the api facade to watch the meter status of a unit for changes and return the current meter status.
metricsadder
Package metricsadder contains an implementation of the api facade to add metrics to the state.
Package metricsadder contains an implementation of the api facade to add metrics to the state.
metricsdebug
The metricsdebug package contains the implementation of a client to access metrics debug functions within state.
The metricsdebug package contains the implementation of a client to access metrics debug functions within state.
metricsmanager
The metricsmanager package contains implementation for an api facade to access metrics functions within state
The metricsmanager package contains implementation for an api facade to access metrics functions within state
migrationtarget
Package migrationtarget defines the client side API facade for use by the migration master worker when communicating with the target controller.
Package migrationtarget defines the client side API facade for use by the migration master worker when communicating with the target controller.
application
Package application contains api calls for functionality related to deploying and managing applications and their related charms.
Package application contains api calls for functionality related to deploying and managing applications and their related charms.
cloud
Package cloud defines an API end point for functions dealing with the controller's cloud definition, and cloud credentials.
Package cloud defines an API end point for functions dealing with the controller's cloud definition, and cloud credentials.
common/storagecommon
Package storagecommon provides common storage-related services for API server facades.
Package storagecommon provides common storage-related services for API server facades.
controller
The controller package defines an API end point for functions dealing with controllers as a whole.
The controller package defines an API end point for functions dealing with controllers as a whole.
hostkeyreporter
Package hostkeyreporter implements the API facade used by the hostkeyreporter worker.
Package hostkeyreporter implements the API facade used by the hostkeyreporter worker.
httpattachment
Package httpattachment provides facilities for attaching a streaming blob of data and associated metadata to an HTTP API request, and for reading that blob on the server side.
Package httpattachment provides facilities for attaching a streaming blob of data and associated metadata to an HTTP API request, and for reading that blob on the server side.
machine
The machiner package implements the API interface used by the machiner worker.
The machiner package implements the API interface used by the machiner worker.
machineactions
machineactions implements the the apiserver side of running actions on machines
machineactions implements the the apiserver side of running actions on machines
meterstatus
Package meterstatus provides the meter status API facade.
Package meterstatus provides the meter status API facade.
metricsdebug
Package metricsdebug contains the implementation of an api endpoint for metrics debug functionality.
Package metricsdebug contains the implementation of an api endpoint for metrics debug functionality.
metricsender
Package metricsender contains functions for sending metrics from a controller to a remote metric collector.
Package metricsender contains functions for sending metrics from a controller to a remote metric collector.
metricsmanager
Package metricsmanager contains the implementation of an api endpoint for calling metrics functions in state.
Package metricsmanager contains the implementation of an api endpoint for calling metrics functions in state.
migrationmaster
This package defines the API facade for use by the migration master worker when communicating to it's own controller.
This package defines the API facade for use by the migration master worker when communicating to it's own controller.
migrationminion
Package migrationminion defines the API facade for use by the migration minion worker to monitor the progress of, and interact with, model migrations.
Package migrationminion defines the API facade for use by the migration minion worker to monitor the progress of, and interact with, model migrations.
migrationtarget
This package defines the API facade for use by the migration master worker when interacting with the target controller during a migration.
This package defines the API facade for use by the migration master worker when interacting with the target controller during a migration.
modelmanager
Package modelmanager defines an API end point for functions dealing with models.
Package modelmanager defines an API end point for functions dealing with models.
resumer
The resumer package implements the API interface used by the resumer worker.
The resumer package implements the API interface used by the resumer worker.
sshclient
Package sshclient implements the API endpoint required for Juju clients that wish to make SSH connections to Juju managed machines.
Package sshclient implements the API endpoint required for Juju clients that wish to make SSH connections to Juju managed machines.
storage
Package storage provides an API server facade for managing storage entities.
Package storage provides an API server facade for managing storage entities.
Package audit records auditable events
Package audit records auditable events
Package cloud provides functionality to parse information describing clouds, including regions, supported auth types etc.
Package cloud provides functionality to parse information describing clouds, including regions, supported auth types etc.
cloudinit
The cloudinit package implements a way of creating a cloud-init configuration file.
The cloudinit package implements a way of creating a cloud-init configuration file.
providerinit
This package offers userdata in a gzipped format to be used by different cloud providers
This package offers userdata in a gzipped format to be used by different cloud providers
providerinit/renderers
The renderers package implements a way to encode the userdata depending on the OS and the provider.
The renderers package implements a way to encode the userdata depending on the OS and the provider.
cmd
juju/controller
The controller package groups various commands that are based on talking directly to the controller, and not environments in the controller.
The controller package groups various commands that are based on talking directly to the controller, and not environments in the controller.
juju/interact
Package interact provides helper methods for interacting with the CLI user at command run time.
Package interact provides helper methods for interacting with the CLI user at command run time.
juju/romulus/commands
Package commands provides functionality for registering all the romulus commands.
Package commands provides functionality for registering all the romulus commands.
juju/romulus/listplans
The listplans package contains implementation of the command that can be used to list plans that are available for a charm.
The listplans package contains implementation of the command that can be used to list plans that are available for a charm.
juju/romulus/setplan
The setplan package contains the implementation of the juju set-plan command.
The setplan package contains the implementation of the juju set-plan command.
juju/romulus/updateallocation
Package updateallocation defines the command used to update allocations.
Package updateallocation defines the command used to update allocations.
juju/storage
The storage command provides a storage management interface, for manipulating and inspecting storage entities (volumes, filesystems, charm storage).
The storage command provides a storage management interface, for manipulating and inspecting storage entities (volumes, filesystems, charm storage).
jujud/agent
agent contains jujud's machine agent.
agent contains jujud's machine agent.
component
all
The all package facilitates the registration of Juju components into the relevant machinery.
The all package facilitates the registration of Juju components into the relevant machinery.
kvm
lxd
modelmanager
Package modelmanager provides the business logic for model management operations in the controller.
Package modelmanager provides the business logic for model management operations in the controller.
Package core exists to hold concepts and pure logic pertaining to juju's domain.
Package core exists to hold concepts and pure logic pertaining to juju's domain.
description
The description package defines the structure and representation and serialisation of models to facilitate the import and export of models from different controllers.
The description package defines the structure and representation and serialisation of models to facilitate the import and export of models from different controllers.
leadership
Package leadership holds code pertaining to application leadership in juju.
Package leadership holds code pertaining to application leadership in juju.
gui
imagemetadata
The imagemetadata package supports locating, parsing, and filtering Ubuntu image metadata in simplestreams format.
The imagemetadata package supports locating, parsing, and filtering Ubuntu image metadata in simplestreams format.
simplestreams
The simplestreams package supports locating, parsing, and filtering metadata in simplestreams format.
The simplestreams package supports locating, parsing, and filtering metadata in simplestreams format.
tools
The tools package supports locating, parsing, and filtering Ubuntu tools metadata in simplestreams format.
The tools package supports locating, parsing, and filtering Ubuntu tools metadata in simplestreams format.
Package feature package defines the names of the current feature flags.
Package feature package defines the names of the current feature flags.
This package contains functional tests only.
This package contains functional tests only.
The logfwd package contains the tools needed to do log record forwarding in juju.
The logfwd package contains the tools needed to do log record forwarding in juju.
syslog
The syslog package holds the tools needed to perform log forwarding from Juju to a remote syslog (RFC 5424) host.
The syslog package holds the tools needed to perform log forwarding from Juju to a remote syslog (RFC 5424) host.
The payload package (and subpackages) contain the implementation of the charm payload feature component.
The payload package (and subpackages) contain the implementation of the charm payload feature component.
api
all
dummy
The dummy provider implements an environment provider for testing purposes, registered with environs under the name "dummy".
The dummy provider implements an environment provider for testing purposes, registered with environs under the name "dummy".
ec2
gce
lxd
lxd/lxdnames
Package lxdnames provides names for the lxd provider.
Package lxdnames provides names for the lxd provider.
The resource package provides the functionality of the "resources" feature in Juju.
The resource package provides the functionality of the "resources" feature in Juju.
api
api/private/server
This package holds the hook context API server implementation.
This package holds the hook context API server implementation.
cmd
resourcetesting
This package provides helpers for testing with resources.
This package provides helpers for testing with resources.
rpc
jsoncodec
The jsoncodec package provides a JSON codec for the rpc package.
The jsoncodec package provides a JSON codec for the rpc package.
Package state enables reading, observing, and changing the state stored in MongoDB of a whole model managed by juju.
Package state enables reading, observing, and changing the state stored in MongoDB of a whole model managed by juju.
backups
Package backups contains all the stand-alone backup-related functionality for juju state.
Package backups contains all the stand-alone backup-related functionality for juju state.
bakerystorage
Package bakerystorage provides an implementation of the bakery Storage interface that uses MongoDB to store items.
Package bakerystorage provides an implementation of the bakery Storage interface that uses MongoDB to store items.
lease
The lease package exists to implement distributed lease management on top of mgo/txn, and to expose assert operations that allow us to gate other mgo/txn transactions on lease state.
The lease package exists to implement distributed lease management on top of mgo/txn, and to expose assert operations that allow us to gate other mgo/txn transactions on lease state.
presence
The presence package implements an interface for observing liveness of arbitrary keys (agents, processes, etc) on top of MongoDB.
The presence package implements an interface for observing liveness of arbitrary keys (agents, processes, etc) on top of MongoDB.
stateenvirons
Package stateenvirons provides types and functions that interface the state and environs packages.
Package stateenvirons provides types and functions that interface the state and environs packages.
watcher
The watcher package provides an interface for observing changes to arbitrary MongoDB documents that are maintained via the mgo/txn transaction package.
The watcher package provides an interface for observing changes to arbitrary MongoDB documents that are maintained via the mgo/txn transaction package.
Package storage defines structures and functions relating to charm storage.
Package storage defines structures and functions relating to charm storage.
Package testcharms holds a corpus of charms for testing.
Package testcharms holds a corpus of charms for testing.
The upgrades package provides infrastructure to upgrade previous Juju deployments to the current Juju version.
The upgrades package provides infrastructure to upgrade previous Juju deployments to the current Juju version.
utils
Package version contains versioning information for juju.
Package version contains versioning information for juju.
legacy
Package legacy contains state-watcher-tuned worker harnesses; the canonical implementations are in the watcher package, but aren't type-compatible with original-style watchers -- such as those returned from state methods -- which we still have a couple of uses for (and the certupdater use might even be legitimate).
Package legacy contains state-watcher-tuned worker harnesses; the canonical implementations are in the watcher package, but aren't type-compatible with original-style watchers -- such as those returned from state methods -- which we still have a couple of uses for (and the certupdater use might even be legitimate).
catacomb
Catacomb leverages tomb.Tomb to bind the lifetimes of, and track the errors of, a group of related workers.
Catacomb leverages tomb.Tomb to bind the lifetimes of, and track the errors of, a group of related workers.
dependency
The dependency package exists to address a general problem with shared resources and the management of their lifetimes.
The dependency package exists to address a general problem with shared resources and the management of their lifetimes.
diskmanager
Package diskmanager defines a worker that periodically lists block devices on the machine it runs on.
Package diskmanager defines a worker that periodically lists block devices on the machine it runs on.
fortress
Package fortress implements a convenient metaphor for an RWLock.
Package fortress implements a convenient metaphor for an RWLock.
gate
package gate provides a mechanism by which independent workers can wait for one another to finish a task, without introducing explicit dependencies between those workers.
package gate provides a mechanism by which independent workers can wait for one another to finish a task, without introducing explicit dependencies between those workers.
introspection
Package introspection defines the worker that can report internal agent state through the use of a machine local socket.
Package introspection defines the worker that can report internal agent state through the use of a machine local socket.
introspection/pprof
Package pprof is a fork of net/http/pprof modified to communicate over a unix socket.
Package pprof is a fork of net/http/pprof modified to communicate over a unix socket.
meterstatus
Package meterstatus provides a worker that executes the meter-status-changed hook periodically.
Package meterstatus provides a worker that executes the meter-status-changed hook periodically.
metrics/collect
Package collect provides a worker that executes the collect-metrics hook periodically, as long as the workload has been started (between start and stop hooks).
Package collect provides a worker that executes the collect-metrics hook periodically, as long as the workload has been started (between start and stop hooks).
metrics/sender
Package sender contains the implementation of the metric sender manifold.
Package sender contains the implementation of the metric sender manifold.
metrics/spool
Package spool contains the implementation of a worker that extracts the spool directory path from the agent config and enables other workers to write and read metrics to and from a the spool directory using a writer and a reader.
Package spool contains the implementation of a worker that extracts the spool directory path from the agent config and enables other workers to write and read metrics to and from a the spool directory using a writer and a reader.
storageprovisioner
Package storageprovisioner provides a worker that manages the provisioning and deprovisioning of storage volumes and filesystems, and attaching them to and detaching them from machines.
Package storageprovisioner provides a worker that manages the provisioning and deprovisioning of storage volumes and filesystems, and attaching them to and detaching them from machines.
uniter/hook
hook provides types that define the hooks known to the Uniter
hook provides types that define the hooks known to the Uniter
uniter/relation
relation implements persistent local storage of a unit's relation state, and translation of relation changes into hooks that need to be run.
relation implements persistent local storage of a unit's relation state, and translation of relation changes into hooks that need to be run.
uniter/runner/context
Package context contains the ContextFactory and Context definitions.
Package context contains the ContextFactory and Context definitions.
uniter/runner/jujuc
The worker/uniter/runner/jujuc package implements the server side of the jujuc proxy tool, which forwards command invocations to the unit agent process so that they can be executed against specific state.
The worker/uniter/runner/jujuc package implements the server side of the jujuc proxy tool, which forwards command invocations to the unit agent process so that they can be executed against specific state.
uniter/storage
Package storage contains the storage subsystem for the uniter, responding to changes in storage attachments (lifecycle, volume/filesystem details) by queuing hooks and managing the storage attachments' lifecycle.
Package storage contains the storage subsystem for the uniter, responding to changes in storage attachments (lifecycle, volume/filesystem details) by queuing hooks and managing the storage attachments' lifecycle.

Jump to

Keyboard shortcuts

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