An Ansible Playbook Bundle (APB) is a lightweight application definition (meta-container). They are used to define and deploy complex groups of applications, deployment configs, deployments, and services to an OpenShift Origin cluster running the Ansible Service Broker. APBs offer more power and simple configuration by leveraging the power of Ansible. APBs have the following features:
- Metadata contains list of required/optional parameters for use during deployment.
- Leverages existing investment in Ansible Roles / Playbooks.
- Actions under a directory with named playbooks and metadata defined in apb.yml.
- Developer tooling to drive a guided approach.
- Easily modified or extended.
Docker must be correctly installed and running on the system.
For RHEL or CentOS 7:
su -c 'wget https://copr.fedorainfracloud.org/coprs/g/ansible-service-broker/ansible-service-broker/repo/epel-7/group_ansible-service-broker-ansible-service-broker-epel-7.repo -O /etc/yum.repos.d/ansible-service-broker.repo'
sudo yum -y install apb
For Fedora 25 or Fedora 26:
sudo dnf -y install dnf-plugins-core
sudo dnf -y copr enable @ansible-service-broker/ansible-service-broker
sudo dnf -y install apb
Clone this repo
git clone https://github.com/fusor/ansible-playbook-bundle.git
Install python-virtualenv, create a virtualenv, and activate it.
sudo dnf install -y python-virtualenv
virtualenv /tmp/apb
source /tmp/apb/bin/activate
Install requirements and run the setup script (requires python)
pip install -r src/requirements.txt && python setup.py install
Reactivate the apb
virtualenv in other shell sessions using source /tmp/apb/bin/activate
if needed.
Alternatively you can use tito to install.
tito build --test --rpm -i
Run apb help
to make sure the tool is installed correctly
$ apb help
usage: apb [-h] [--debug] [--project BASE_PATH]
{init,help,prepare,push,bootstrap,list,remove,build} ...
APB tooling for assisting in building and packaging APBs.
optional arguments:
-h, --help show this help message and exit
--debug Enable debug output
--project BASE_PATH, -p BASE_PATH
Specify a path to your project. Defaults to CWD.
subcommand:
{init,help,prepare,push,bootstrap,list,remove,build}
init Initialize the directory for APB development
help Display this help message
prepare Prepare an ansible-container project for APB packaging
push Push local APB spec to an Ansible Service Broker
bootstrap Tell Ansible Service Broker to reload APBs from the
container repository
list List APBs from the target Ansible Service Broker
remove Remove APBs from the target Ansible Service Broker
build Build and package APB container
- Getting Started - step by step tutorial to create an Ansible Playbook Bundle
- Design - overall design of Ansible Playbook Bundles
- Developers - in depth explanation of Ansible Playbook Bundles
- Ansible Service Broker https://github.com/openshift/ansible-service-broker
- YouTube channel: Ansible Service Broker
- YouTube channel: APB
apb init my_apb --async=optional --bindable --org my_organization
This gives us the following example apb.yaml
name: my-apb
image: my-org/my-apb
description: "my-apb description"
bindable: false
async: optional
metadata: {}
plans:
- name: my-plan
description: "my-plan description"
free: true
metadata: {}
parameters: []