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 | 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/config is 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

  1. Verify that inventories/hosts.ini contains the correct IP addresses for your VMs
  2. Ensure ~/.ssh/config has the correct SSH entries for:
  3. AppServVM
  4. WebServVM
  5. DataBaseServVM

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

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test with the provided CI/CD workflows
  5. Submit a pull request