All Projects → alphagov → Fabric Scripts

alphagov / Fabric Scripts

Licence: mit
GOV.UK Fabric scripts

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Fabric Scripts

content-data-api
Data warehouse that stores content and content metrics to help content owners measure and improve content on GOV.UK
Stars: ✭ 13 (-76.79%)
Mutual labels:  govuk
govuk-taxonomy-supervised-learning
Auto-tag govuk content to the collated legacy taxonomies
Stars: ✭ 22 (-60.71%)
Mutual labels:  govuk
Blinken
RETIRED. Superseded by https://github.com/alphagov/blinkenjs
Stars: ✭ 13 (-76.79%)
Mutual labels:  govuk
sketch wireframing kit
Quick Sketchapp wireframing tool for UK government digital services
Stars: ✭ 74 (+32.14%)
Mutual labels:  govuk
panopticon
Retired. App that holds some of the content on GOV.UK
Stars: ✭ 17 (-69.64%)
Mutual labels:  govuk
govuk-docker
GOV.UK development environment using Docker 🐳
Stars: ✭ 37 (-33.93%)
Mutual labels:  govuk
publishing-api
API to publish content on GOV.UK
Stars: ✭ 29 (-48.21%)
Mutual labels:  govuk
Cdn Acceptance Tests
CDN Acceptance Tests
Stars: ✭ 46 (-17.86%)
Mutual labels:  govuk
govuk publishing components
A gem to document and distribute frontend components for GOV.UK applications
Stars: ✭ 45 (-19.64%)
Mutual labels:  govuk
Govuk Component Guide
A style guide for GOV.UK Components shared between applications
Stars: ✭ 16 (-71.43%)
Mutual labels:  govuk
finder-frontend
Serves finder and search pages for GOV.UK
Stars: ✭ 15 (-73.21%)
Mutual labels:  govuk
government-frontend
Serves government pages on GOV.UK
Stars: ✭ 42 (-25%)
Mutual labels:  govuk
Govuk Aws
The GOV.UK repository for our Migration to AWS
Stars: ✭ 334 (+496.43%)
Mutual labels:  govuk
publisher
Publishes mainstream content on GOV.UK
Stars: ✭ 42 (-25%)
Mutual labels:  govuk
Gds Sso
OmniAuth adapter to allow apps to sign in via GOV.UK signon
Stars: ✭ 21 (-62.5%)
Mutual labels:  govuk
slimmer
Templating Rack middleware, injects standard header/footer and GOV.UK Components
Stars: ✭ 30 (-46.43%)
Mutual labels:  govuk
need-o-tron
No description or website provided.
Stars: ✭ 35 (-37.5%)
Mutual labels:  govuk
Design Principles
Serves /design-principles on GOV.UK
Stars: ✭ 55 (-1.79%)
Mutual labels:  govuk
Calendars
Serves /bank-holidays and /when-do-the-clocks-change on GOV.UK
Stars: ✭ 39 (-30.36%)
Mutual labels:  govuk
Whitehall
Publishes government content on GOV.UK
Stars: ✭ 634 (+1032.14%)
Mutual labels:  govuk

GOV.UK Fabric Scripts

Fabric is a command-line tool for application deployment and systems administration tasks. It allows the user to run commands across a server farm.

Local usage and environment setup

The tool is intended to be configured and run on your local workstation/laptop. You should use virtualenv to create an isolated Python environment.

Requires Python 2 to be installed - support for Python 3 is unknown.

To install pip, virtualenv and set up the environment:

$ sudo easy_install pip
$ sudo pip install virtualenv
$ mkdir ~/venv
$ virtualenv ~/venv/fabric-scripts

To enable the virtual environment for this session (you will need to do this for each new terminal window):

$ . ~/venv/fabric-scripts/bin/activate

Setup

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 = your_username' >> ~/.fabricrc

Commands

You can view a list of the available tasks:

$ fab -l

And execute against an environment and set of hosts like so:

$ fab integration all hosts
...
$ fab integration class:frontend do:'uname -a'
$ fab integration class:cache,bouncer do:uptime
...

Targeting groups of machines

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 integration puppet_class:govuk::safe_to_reboot::yes do:'uname -a'

By numeric machine suffix:

# target all machines that end in '2'
$ fab integration numbered:2 do:'uname -a'

By node type (as defined in puppet):

# target all 'frontend' machines
$ fab integration node_type:frontend do:'uname -a'

By the node name:

# target just one node
$ fab production -H backend-3.backend do:'uname -a'

Remote usage (legacy)

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

Syncing postgres machines

An example:

fab <env> -H '<src_db>' postgresql.sync:<db_name>,<dst_db> -A

the -A must be specified to forward the agent

This will sync the specified database <db_name> from the machine with the hostname of <src_db> to the machine with hostaname <dst_db>. It will destroy data on the destination db.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].