Home - Alex-Burgess/ansible-demo GitHub Wiki
Introduction
This project demonstrates the use of Ansible to build, operate and deploy basic web applications. It originated from a typical on-premise requirement, so although using AWS, the first aim is to build the reference architecture as though it was a typical on-premise static infrastructure environment. However, ephemeral infrastructure considerations, i.e. dynamic inventory, are looked at also.
A key aim of the project is to use best practices throughout, including:
- Infrastructure as code: CloudFormation templates to automate deployment of environments.
- Security practices: SSH keys stored securely in Parameter Store.
- Environment Segregation: Separation of test, staging and production environments to reduce risk of unintended playbook or command execution against production environment.
- Infrastructure Scalability: Scalable web server infrastructure.
- Playbook Re-usability: Reusable playbooks, with a scalable and extensible design, allowing deployment of different web applications.
- Access Control: Control and audit of playbook execution in production.
- Deployment pipeline: Version control and package deployment of Ansible components to environments.
- Zero-touch production deployment: Removal of SSH access to production environment.
Build steps
- Step 1 - Add keys to parameter store
- Step 2 - Build Infrastructure Stack
- Step 3 - Use Ansible to deploy demo web application to test environment
- Step 4 - Make simple update to demo web application
- Step 5 - Deploy additional web application
- Step 6 - How to use Dynamic Inventory with Ansible
- Step 7 - Create and deploy new site using Ansible
- Step 8 - Build and deploy a new web app
- Step 9 - Deploy web application to staging and prod
- Step 10 - Full workflow when performing updates to web apps
- Step 11 - Deploy changes to Ansible playbooks