Skip to content

Getting Started

ansible-provision is part of suite of ansible roles that provide a common interface for provisioning infrastructure. While there is a slant towards AWS services many interfaces support vmware vCenter and Azure.

Design Principles

  • Convention over configuration - Require as minimal configuration as possible, lookup ids in the background and use conventions whenever possible
  • Prefer declarative template (e.g. AWS Cloudformation / Azure Resource Templates) to direct API calls
  • Use cloud-init extensively to setup volumes and bootstrap instances for deployment.

Dependencies

  • ansible (duh)
  • ansible-deploy is used to generate cloudinit config (It shares many of the same interfaces as ansible-provision)
  • systools provides many helpers and bootstraping tools (systools will be installed by ansible-deploy if it is missing)
  • fireviz is a tool to convert Graphviz firewall diagrams into Cloudformation/ARM templates
  • (Optional) ansible-dependencies provides RPM, DEB and pip packages that simplify the installation of ansible with all the required dependencies to use cloud and networking modules
  • (Optional) ansible-run provides CLI tools for easily running and testing ansible playbooks using ansible-dependencies.

Folder Structure

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
├── cloudformation           # applies to AWS only
   └── iam.cf
├── firewall
   ├── all.gv
   └── mapping.yml
├── inventory
   ├── group_vars
     ├── all
     ├── app
     ├── db
     ├── dev
     ├── test
     └── web
   └── hosts
├── play.yml
└── roles
    └── requirements.yml