Fabric is a command-line tool for application deployment and systems administration tasks. It allows the user to run commands across a server farm.
This is intended to be setup and run on your local workstation/laptop.
To install the dependencies:
$ pip install -Ur requirements.txt
NB: if you get a "pip: command not found" error, run this first:
$ sudo easy_install pip
Configure it (see the fabric documentation for more examples),
$ echo 'user = jimbob' >> ~/.fabricrc
You can view a list of the available tasks:
$ fab -l
And execute against an environment and set of hosts like so:
$ fab preview all hosts
...
$ fab preview class:frontend do:'uname -a'
...
Fabric tasks can be run on groups of machines in a variety of different ways.
by puppet class
# target all machines that have the 'govuk::safe_to_reboot::yes' class
$ fab preview puppet_class:govuk::safe_to_reboot::yes do:'uname -a'
by numeric machine suffix
# target all machines that end in '2'
$ fab preview numbered:2 do:'uname -a'
by node type (as defined in puppet)
# target all 'frontend' machines
$ fab preview node_type:frontend do:'uname -a'
by the node name
# target just one node
$ fab production -H backend-3.backend do:'uname -a'
It was previously possible to use these scripts from the jumpboxes via the
govuk_fab
wrapper. This is no longer supported as it relied on SSH agent
forwarding, which is a Bad Thing because other people with root access to
that jumpbox would be able to re-use any of the private keys in your agent.
You should convert to the [local usage](#Local usage) method described above
and ensure that you do not have the following option anywhere in your
~/.ssh/config
:
ForwardAgent yes