Infrastructure Orchestration¶
The concept of Infrastructure Orchestration was previously known as Environment Configuration. Many people and organizations are still using the old name, but for purpose of this SCM Knowledge Base We will stick with the newest trend as it is getting more and more popular with every month.
Best Practices¶
- Configuration treated as a Source Code
- Communication of configuration changes
Articles¶
- Infrastructure with Python: infrastructure-with-python
- Chicken or Egg: Abstraction and Automation: chicken-or-egg-abstraction-and
- Manage Resources like a Hotel: infrastructure-like-a-hotel
Frameworks¶
Comparisons¶
- Comparison Grid for Ansible / SaltStack / Chef / Puppet: comparison-grid
- Comparison of open-source configuration management software: wikipedia
- Ansible and Salt: A detailed comparison: ansible-and-salt
Salt Stack¶
Salt is an open source tool to manage your infrastructure. Easy enough to get running in minutes and fast enough to manage tens of thousands of servers (and still get a response back in seconds). Execute arbitrary shell commands or choose from dozens of pre-built modules of common (or complex) commands. Target individual servers or groups of servers based on name, defined roles, or a variety of system information such as hardware, software, operating system, current version, current environment, and many more.
- SaltStack setup on beaglebone black rev c debian arm: salt-arm
- Home Page: salt-homepage
- Salt to the Rescue: salt-to-the-rescue
Salt Tutorials¶
- How To Configure a Multi-Master SaltStack Setup: salt-multimaster
- Deploy & Orchestrate infrastructures on Cloud Providers: orchestrate-cloud
- Salt and OpenERP Tutorial: salt-openerp
- Salt targeting: salt-targeting
- Salt states: salt-states
- Getting started with Salt: getting-started-salt
- Deploying Django with Saltstack: django-with-salt
- Tutorial: salt-tutorial
Usage Examples¶
- Salt and XMPP integartion: salt-and-xmpp
- Salt and Continuous Deployment: salt-continuous-deployment
Propaganda¶
- Hello SaltStack: hello-salt-stack
- Salty infrastructure: salty-infrastructure
Vagrant¶
Vagrant is a development tool which stands on the shoulders of giants, using tried and proven technologies to achieve its magic. Vagrant uses Oracle’s VirtualBox to create its virtual machines and then uses Chef or Puppet to provision them. By providing easy to configure, lightweight, reproducible, and portable virtual machines targeted at development environments, Vagrant helps maximize the productivity and flexibility of you and your team.
Vagrant Homepage: vagrant-homepage
- Why Vagrant is the Best DevOps Tool Ever: vagrant-devops-tool
- Vagrant 1.5 and Vagrant Cloud: vagrant-1.5
- Vagrant with OpenDaylight: vagrant-with-opendaylight
Puppet¶
Puppet is IT automation software that helps system administrators manage infrastructure throughout its lifecycle, from provisioning and configuration to patch management and compliance. Using Puppet, you can easily automate repetitive tasks, quickly deploy critical applications, and proactively manage change, scaling from 10s of servers to 1000s, on-premise or in the cloud.
- A simple way to install and configure puppet on CentOS: puppet-on-linux
- Puppet Homepage: puppet-homepage
- Testing Puppet’s custom facts with RSpec: puppet-rspec
Capistrano¶
Capistrano is a utility and framework for executing commands in parallel on multiple remote machines, via SSH. It uses a simple DSL (borrowed in part from Rake) that allows you to define tasks, which may be applied to machines in certain roles. It also supports tunneling connections via some gateway machine to allow operations to be performed behind VPN’s and firewalls. Capistrano was originally designed to simplify and automate deployment of web applications to distributed environments, and originally came bundled with a set of tasks designed for deploying Rails applications.
- Capistrano Homepage: capistrano-homepage
- Webistrano Homepage (Capistrano’s web GUI): webistrano-homepage
Fabric¶
Fabric is a Python (2.5 or higher) library and command-line tool for streamlining the use of SSH for application deployment or systems administration tasks. It provides a basic suite of operations for executing local or remote shell commands (normally or via sudo) and uploading/downloading files, as well as auxiliary functionality such as prompting the running user for input, or aborting execution.
Fabric Homepage: fabric-homepage
Ubuntu’s juju¶
- juju used for Jenkins deployment: juju-jenkins
Glu¶
Glu takes a very declarative approach, in which you describe/model what you want, and glu can then:
- compute the set of actions to deploy/upgrade your applications
- ensure that it remains consistent over time
- detect and alert you when there is a mismatch
Glu Homepage: glu-homepage
Ansible¶
It turns out, that about the same time I did look around, a new alternative was launched called Ansible, written in Python. I haven’t done a lot with it yet. But I really like what I’ve seen so far, and the design principles really resonates with me. The easiest config management system to use, ever. Requires no software to be installed on the remote box for bootstrapping Idempotent modules (although you can choose whether or not to have this for your own modules) I think the author Michael DeHaan sums it up really good in this interview:
- Successfully automating your machines in the cloud using Ansible: automating-with-ansible
- Ansible thoughts: ansible-thoughts
- Ansible’s View on IT Automation: ansible-automation
- A look at Ansible: look-at-ansible
Chef¶
- Using Test Doubles in ChefSpec: stubs-and-doubles
Gunnery¶
Gunnery is multipurpose task execution tool for distributed systems: gunnery-homepage
Rundeck¶
Rundeck Homepage: rundeck-homepage
Docker¶
- How to Set Up TravisCI-like Continuous Integration with Docker and Jenkins: docker-jenkins-github
- Docker Misconceptions: docker-misconceptions_
- 8 Ways to Use Docker in the Real World: 8-ways-to-use-docker
- Will the future be Dockerized?: docker-future
- Docker Networking: docker-networking
- Robust Containers: robust-containers
- Building the best Open Source Community in the World: community-docker
- How We Use Docker For Continuous Delivery: use-docker-continuous-delivery
- Dockerizing a Python Web App: dockerizing-python
- Using Docker & Ansible by John Minnihan: using-docker-ansible
- Docker Misconceptions: docker-misconceptions_
- Docker as a framework for your DevOps culture: docker-as-framework
- Docker Homepage: docker-homepage
- Create a Python 3 environment using Docker: python3-docker
- So you’re building a Docker image. What might be wrong with it? baseimage-docker
Network¶
- Cisco - Image Hosting Service Implements Flexible Cloud Infrastructure: cisco-salt
- Automation for Network Engineers: automation-for-network
Scaling¶
- Autoscaling Best Practices: autoscaling-best-practices