Firewall Configuration
Linux System Administration
Infrastructure as Code
Package Management
Complex System Architecture
Performance Optimization
Shell Script Programming
System Security Hardening
Access Control Management
Automation Scripting
Virtualization
Enterprise Experience
Git Version Control
Network Management
Linux Automation Infrastructure | Ansible Configuration Management
๐ง Linux Automation Infrastructure Project (Prjct_02)
โ๏ธ Stack: Ansible ยท KVM/libvirt ยท Docker ยท NGINX ยท PostgreSQL ยท GitHub Actions
Automates Linux VM provisioning and configuration using Ansible, including web, app, and database services, with CI/CD integration.
1. ๐ Project Overview
This project automates multi-tier application deployment with the following components:
- VM Provisioning: KVM/libvirt VM creation
- Configuration: Docker, NGINX Reverse Proxy, PostgreSQL Hardening
- Security: Ansible Vault for secrets management
- CI/CD: GitHub Actions for linting and idempotency tests
2. ๐ Directory Structure
.
โโโ .github/ # GitHub Actions workflows
โโโ inventories/ # Ansible inventory & variables
โ โโโ hosts.ini # Host definitions
โ โโโ group_vars/ # Group variables
โ โโโ host_vars/ # Host-specific variables
โโโ playbooks/ # Ansible playbooks
โ โโโ site.yml # Main configuration playbook
โ โโโ provisioning/
โ โโโ create-vms.yml # VM creation playbook
โโโ roles/ # Ansible Galaxy roles
โโโ db_hardening/ # PostgreSQL hardening
โโโ docker_setup/ # Docker installation & app deployment
โโโ reverse_proxy/ # NGINX reverse proxy configuration
3. โ Prerequisites
System Requirements
- Ansible (latest version)
- Python 3 with pip
- libvirt/KVM (for VM provisioning)
- SSH Access: Ensure
~/.ssh/configis configured for VM access
Ansible Collections
Install required Ansible collections:
ansible-galaxy collection install community.postgresql community.general
4. ๐ Setup and Usage
Step 1: VM Provisioning
Create the virtual machines:
ansible-playbook playbooks/provisioning/create-vms.yml
Step 2: Inventory & SSH Configuration
- Verify that
inventories/hosts.inicontains the correct IP addresses for your VMs - Ensure
~/.ssh/confighas the correct SSH entries for: AppServVMWebServVMDataBaseServVM
Step 3: Running Configurations
Execute the main configuration playbook:
ansible-playbook -i inventories/hosts.ini playbooks/site.yml --ask-become-pass
Step 4: Secrets Management (Ansible Vault)
Sensitive data is stored in inventories/group_vars/db/secrets.yml.
Edit vault file:
ansible-vault edit inventories/group_vars/db/secrets.yml
View vault file:
ansible-vault view inventories/group_vars/db/secrets.yml
Step 5: CI/CD Workflows (GitHub Actions)
The project includes automated workflows:
.github/workflows/lint.yml: Linting checks triggered on push.github/workflows/idempotency.yml: Idempotency tests triggered on push
5. ๐งฉ Ansible Roles
| Role | Description |
|---|---|
db_hardening |
Installs and hardens PostgreSQL database |
docker_setup |
Installs Docker and deploys application containers |
reverse_proxy |
Configures NGINX reverse proxy |
6. ๐ค Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test with the provided CI/CD workflows
- Submit a pull request