All Projects → ianmiell → Shutit

ianmiell / Shutit

Licence: mit
Automation framework for programmers

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Shutit

Packer Windoze
Packer templates to create Windows vagrant box images
Stars: ✭ 117 (-94.4%)
Mutual labels:  vagrant
Forklift
Helpful deployment scripts for Foreman and Katello
Stars: ✭ 141 (-93.25%)
Mutual labels:  vagrant
Arch Boxes
Arch-boxes provides automated builds of the Arch Linux releases for different providers and post-processors (read-only mirror)
Stars: ✭ 149 (-92.86%)
Mutual labels:  vagrant
Vagrant Butcher
Delete Chef client and node when destroying Vagrant VM
Stars: ✭ 127 (-93.92%)
Mutual labels:  vagrant
Multi Streaming Server
A NGINX server with RTMP module to send video streaming to multiple services simultaneously (Youtube, Twitch, Dailymotion, Hitbox, Beam, etc...).
Stars: ✭ 132 (-93.68%)
Mutual labels:  vagrant
Vagrant Exec
Execute commands in Vagrant synced folder
Stars: ✭ 143 (-93.15%)
Mutual labels:  vagrant
Microservice App
A microservices architecture app powered by golang.
Stars: ✭ 114 (-94.54%)
Mutual labels:  vagrant
Ansible Tuto
Ansible tutorial
Stars: ✭ 1,959 (-6.18%)
Mutual labels:  vagrant
K8s Vagrant Multi Node
A Kubernetes Vagrant Multi node environment using kubeadm.
Stars: ✭ 141 (-93.25%)
Mutual labels:  vagrant
Gitlab Ci Stack
Full CI pipeline project based on Gitlab & Gitlab CI running Docker, completely automated setup by Vagrant & Ansible, providing Let´s Encrypt certificates for private Servers, multiple Gitlab-Runners and the Gitlab Container Registry, incl. GitLab Pages
Stars: ✭ 146 (-93.01%)
Mutual labels:  vagrant
Kubernetes Vagrant Centos Cluster
Setting up a distributed Kubernetes cluster along with Istio service mesh locally with Vagrant and VirtualBox, only PoC or Demo use.
Stars: ✭ 1,750 (-16.19%)
Mutual labels:  vagrant
Vagrant Lamp Bootstrap
A super-simple Vagrantfile / bootstrap.sh to setup a LAMP stack inside Vagrant 100% automatically
Stars: ✭ 132 (-93.68%)
Mutual labels:  vagrant
Vagrant Libvirt
Vagrant provider for libvirt.
Stars: ✭ 1,912 (-8.43%)
Mutual labels:  vagrant
Cakebox
Framework agnostic virtual PHP Development Environment
Stars: ✭ 127 (-93.92%)
Mutual labels:  vagrant
Infrastructure As Code Tutorial
Infrastructure As Code Tutorial. Covers Packer, Terraform, Ansible, Vagrant, Docker, Docker Compose, Kubernetes
Stars: ✭ 1,954 (-6.42%)
Mutual labels:  vagrant
Adfs2
Multi Vagrant environment with Active Directory
Stars: ✭ 117 (-94.4%)
Mutual labels:  vagrant
Joomlatools Vagrant
Vagrant box for Joomla development.
Stars: ✭ 142 (-93.2%)
Mutual labels:  vagrant
Windows Vagrant
Windows 2012R2/10/2016/2019 Base Vagrant Box (https://app.vagrantup.com/rgl)
Stars: ✭ 169 (-91.91%)
Mutual labels:  vagrant
Ansible Vagrant Examples
Ansible examples using Vagrant to deploy to local VMs.
Stars: ✭ 1,913 (-8.38%)
Mutual labels:  vagrant
Homestead improved
A un upgraded fork of the original Laravel Homestead
Stars: ✭ 144 (-93.1%)
Mutual labels:  vagrant

ShutIt

Join the chat at https://gitter.im/ianmiell/shutit

A versatile automation framework.

ShutIt is an automation tool that models a user's actions on a terminal.

It can automate any process that can be run by a human on the command line with little effort.

It was originally written to manage complex Docker builds, but is a now general-purpose automation tool that supports bash, Docker, Vagrant, ssh and arbitrary build contexts.

ShutIt can also be used as an educational tool, as it can produce videos of demos, capture reproducible steps required to set environments up, and even challenge you to get the right output (see grep-scales).

If you want to know more about Docker, see the official site or take a look at the book by the creators of ShutIt - Docker in Practice.

Really Quick Overview

Some use cases:

  • You like bash, want to automate tasks, have structure and support, but don't want to learn a configuration management framework that takes you away from the command line you know and love.

  • Want to create complex Vagrant environments to model clusters of machines.

  • Want to create instructive walkthroughs:

  • Are interested in "phoenix deployment".

  • Want to take your scripts and turn them into stateless containers quickly, without needing to maintain (or learn) a configuration management solution designed for moving-target systems.

  • You're programmer who wants highly configurable stateless containers development, testing, and production.

  • Want to build everything from source in a way that's comprehensible and auditable.

What Does it Do (bash Builds)?

ShutIt acts as a modular and easy to use wrapper around pexpect.

Here is a simple example of a script that creates a file and a directory if they are not there already:

Simple Example

What Does it Do (Tutorials)?

This builds on the docker features (see below), but allows you to interrupt the run at points of your choosing with 'challenges' for the user to overcome.

Two types of 'challenge' exist in ShutIt:

  • scales
  • free form

Scales tell you to run a specific command before continuing. This is useful when you want to get certain commands or flags 'under your fingers', which does not happen without dedicated and direct practice.

grep Scales

Free form exercises give you a task to perform, and free access to the shell. This is to give the user a realistic environment in which to hone their skills. You can check man pages, look around the directories, search for useful utils (even install new ones!). When you are finished, a pre-specified command is run to check the system is in an appropriate state. Here's an example for the basics of git:

git 101 Tutorial

If you use a Docker-based tutorial and you mess the environment up, the state can be restored to a known one by hitting CTRL-G.

What Does it Do (Vagrant)?

Uses a bash build to set up n vagrant machines, and uses Landrush to give them useful hostnames accessible from the hosts and in the guest VMs.

It supports both Virtualbox and Libvirt providers.

This allows another kind of contained environment for more infrastructural projects than Docker allows for.

This example demonstrates a reproducible build that sets up Docker on an Ubuntu VM (on a Linux host), then runs a CentOS image within Docker within the Ubuntu VM.

It deposits the user into a shell mid-build to interrogate the environment, after which the user re-runs the build to add a directive to ensure ps is installed in the image.

Docker on Ubuntu VM running a CentOS image

Auto-Generate Modules

ShutIt provides a means for auto-generation of modules (either bare ones, or from existing Dockerfiles) with its skeleton command. See here for an example.

Really Quick Start

Full User Guide

API

Installation

Known Issues

Since a core technology used in this application is pexpect - and a typical usage pattern is to expect the prompt to return. Unusual shell prompts and escape sequences have been known to cause problems. Use the shutit.setup_prompt() function to help manage this by setting up a more sane prompt. Use of COMMAND_PROMPT with echo -ne has been seen to cause problems with overwriting of shells and pexpect patterns.

ScreenShot

Licence

The MIT License (MIT)

Copyright (C) 2014 OpenBet Limited

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

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].