Skip to content

InfraNinja is a Python-based infrastructure automation toolkit built on PyInfra. It provides deployment modules for security hardening, server configuration, and infrastructure management across different Linux distributions.

License

Notifications You must be signed in to change notification settings

KalvadTech/infraninja

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ₯· InfraNinja ⚑ – Your Stealthy Infrastructure Ninja

Welcome to InfraNinja! πŸŽ‰ This project contains a comprehensive set of PyInfra deployments πŸ₯· used by Kalvad teams πŸ› οΈ, making them publicly available for everyone via PyPI! πŸš€

These ninja-level deployments are designed to simplify infrastructure management and automate common tasks, helping you deploy services, configure security hardening, manage inventory, and more – fast and effortlessly! πŸ’¨

⚑️ Features

  • 🌐 Automated Deployments: Deploy services like Netdata with precision and ease! πŸ₯·
  • πŸ›‘οΈ Comprehensive Security: Advanced security hardening including SSH configuration, kernel hardening, firewall setup, malware detection, and intrusion detection systems
  • 🧩 Modular Architecture: Reusable deployment modules organized by OS (Ubuntu, Alpine, FreeBSD) and functionality
  • πŸ”— Dynamic Inventory: Integration with Jinn API and Coolify for automated server inventory management
  • πŸ› οΈ Multi-OS Support: Compatible with Ubuntu, Alpine Linux, and FreeBSD
  • πŸ“‹ Compliance Ready: Includes UAE IA compliance modules
  • πŸ“¦ PyPI Ready: Available publicly on PyPI for smooth installation

🎯 Getting Started

To get started with InfraNinja, you can install it directly from PyPI:

pip install infraninja

Then, bring ninja-style automation to your infrastructure with simple imports:

from infraninja.netdata import deploy_netdata

πŸš€ Quick Examples

Basic Netdata Deployment

Deploy Netdata monitoring like a ninja πŸ₯·:

from infraninja.netdata import deploy_netdata

deploy_netdata()

Security Hardening

Comprehensive security hardening across different OS types:

# SSH Hardening
from infraninja.security.common.ssh_hardening import ssh_hardening
ssh_hardening()

# Kernel Security
from infraninja.security.common.kernel_hardening import kernel_hardening  
kernel_hardening()

# Firewall Setup (Ubuntu)
from infraninja.security.ubuntu.fail2ban_setup import fail2ban_setup
fail2ban_setup()

# For Alpine Linux
from infraninja.security.alpine.fail2ban_setup import fail2ban_setup_alpine
fail2ban_setup_alpine()

Dynamic Inventory Management

Use Jinn API for dynamic server inventory:

from infraninja.inventory.jinn import Jinn

# Initialize with API credentials
jinn = Jinn(
    api_url="https://jinn-api.kalvad.cloud",
    api_key="your-api-key",
    groups=["production", "web"],
    tags=["nginx", "database"]
)

# Get filtered servers
servers = jinn.get_servers()

Use Coolify for container management:

from infraninja.inventory.coolify import Coolify

coolify = Coolify(
    api_url="https://coolify.example.com/api",
    api_key="your-api-key",
    tags=["prod", "staging"]
)

servers = coolify.get_servers()

πŸ“œ Available Deployments

InfraNinja provides comprehensive deployment modules organized by functionality:

πŸ” Monitoring & Observability

  • Netdata: Real-time performance monitoring and alerting

πŸ›‘οΈ Security Modules

Common Security (Cross-Platform)

  • SSH Hardening: Secure SSH configuration with multiple security options
  • Kernel Hardening: System-level security hardening
  • Firewall Management: IPTables and NFTables configuration
  • Network Security: ARP poisoning protection, secure routing controls
  • Audit & Compliance: System auditing, UAE IA compliance modules

Ubuntu-Specific Security

  • Fail2Ban: Intrusion prevention system
  • AppArmor: Mandatory access controls
  • ClamAV: Antivirus scanning
  • Lynis: Security auditing tool
  • Suricata: Network threat detection
  • Chkrootkit: Rootkit detection

Alpine Linux Security

  • Fail2Ban: Lightweight intrusion prevention
  • ClamAV: Antivirus for Alpine
  • Suricata: IDS for Alpine systems
  • Security Tools: Alpine-optimized security utilities

πŸ—οΈ Infrastructure Management

  • Jinn Integration: Dynamic inventory management via Jinn API
  • Coolify Integration: Container orchestration platform integration
  • SSH Key Management: Automated SSH key deployment and management
  • System Updates: Multi-distribution package updates

πŸŽ›οΈ Utilities

  • MOTD Customization: Dynamic message of the day
  • Template System: Jinja2 templates for configuration files

πŸ”§ Development & Testing

Want to add your own ninja-style improvements? Here's how to get started:

Setup Development Environment

git clone https://github.com/KalvadTech/infraninja.git
cd infraninja
pip install -r requirements.txt

Testing Your Deployments

Test your deployments locally using PyInfra:

# Test with local inventory
pyinfra @local your_deployment.py

# Test with dynamic inventory
pyinfra inventory.py your_deployment.py

# Test specific modules
pyinfra @vagrant/ubuntu infraninja.security.common.ssh_hardening

Running the Test Suite

# Run all tests
pytest

# Run specific test modules
pytest tests/inventory/
pytest tests/common/

# Run with coverage
pytest --cov=infraninja tests/

Building the Package

Create a distribution package:

python -m build

Using the Test Environment

The project includes a Vagrant-based test environment in the deploy/ directory:

cd deploy
vagrant up
vagrant ssh ubuntu   # or vagrant ssh alpine

πŸ“ˆ Project Status

  • Current Version: 0.2.1
  • Python Support: >=3.8
  • License: MIT License
  • Stability: Production Ready

🀝 Contributions

Contributions are welcome! πŸŽ‰ If you spot any bugs πŸ› or have ideas πŸ’‘ for cool new features, feel free to open an issue or submit a pull request. The ninja squad would love to collaborate! πŸ€—

πŸ‘¨β€πŸ’» Maintainers

  • Mohammad Abu-khader πŸ₯· [email protected]
  • LoΓ―c Tosser πŸ₯·
  • The skilled ninja team at KalvadTech πŸ› οΈ

🌟 Community & Support

πŸ“ License

This project is licensed under the MIT License. πŸ“ Feel free to use it, modify it, and become an infrastructure ninja yourself! πŸ₯·


Stay stealthy and keep deploying like a ninja! πŸ₯·πŸ’¨πŸš€


About

InfraNinja is a Python-based infrastructure automation toolkit built on PyInfra. It provides deployment modules for security hardening, server configuration, and infrastructure management across different Linux distributions.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5