Provision AWS EC2 or OpenStack Nova instances with one simple Ansible command and consistent inputs.
- Inputs:
platform(aws|openstack) andflavor(small|medium|large). - Defaults live in
group_vars/all.yml(images, flavors, network, security groups, keys). - Single entrypoint:
site.ymlselects the right role per platform.
python -m venv .venv
. .venv/bin/activate
pip install ansible
ansible-galaxy collection install -r requirements.yml- AWS: set env vars or
aws configure(optionallyAWS_PROFILE). - OpenStack:
source ./admin-openrc.sh(WSL/Git Bash on Windows recommended).
-
AWS (small):
ansible-playbook site.yml -i localhost, -c local -e "platform=aws flavor=small"
-
OpenStack (medium):
source ./admin-openrc.sh ansible-playbook site.yml -i localhost, -c local -e "platform=openstack flavor=medium"
-
Overrides & verbosity:
ansible-playbook site.yml -i localhost, -c local -e "platform=aws flavor=large aws.region=us-west-2" -vvv ansible-playbook site.yml -i localhost, -c local -e "platform=openstack flavor=small openstack.key_name=mykey"
Provisioning_Playbook/
├─ admin-openrc.sh
├─ ansible.cfg
├─ requirements.yml
├─ site.yml
├─ group_vars/
│ └─ all.yml
└─ roles/
├─ ec2.yml
└─ nova.yml