Skip to content

Overview

This page aims to provide a basic overview of Catapult, what it is. On a very simple level it's Ansible running in a Docker container with some extra features to make it easier to use and manage. But it's much more than that. Catapult is a tool that helps you manage your Ansible projects and environments in a way that is scalable, maintainable and reusable. Once you have installed Catapult and set up your project, you can keep coming back here to better understand how Catapult works and how to use it effectively.

Simple Deployment Tree

Catapult (like Ansible) is host driven, meaning that you target your deployment either against a remote host or delegate it to the local machine (when interacting with APIs instead of VMs).

When deploying a remote host it's important to understand what steps Catapult goes through when configuring the host. The simple deployment tree is as follows:

# Step Description
0 loading variables Loading variables for the host, this includes host/group_vars, Catapult defaults, module defaults, etc. This is default Ansible behavior.
1 deploy_vars Loading custom Catapult specific defaults and running early stage tasks
2 machine_operations Creating a virtual machine
3 configure_networking Configuring the network settings for the virtual machine
4 connection Setting correct network connection parameters to connect and configure the machine (mostly over SSH)
5 accounts Creating required accounts defined in the admin_accounts, user_accounts or domain_user_accounts variables with the project
6 os_configuration Running basic OS configurations like setting hostname, timezone, NTP settings, etc.
7 customization_pre_vm_role Including pre-VM customization role if it exists. This can be used to apply something to some group or all hosts of the project before starting the VM configuration
8 customization Including machine specific role if it exists. Turning a blank VM into an application.
9 customization_post_vm_role Including post-VM customization role if it exists. Same as customization_pre_vm_role but runs after the VM configuration.
10 finalize Running finalization tasks like running tests, updates, cleanup, etc.
11 get_ip Printing out the connection info of the VM