.. | ||
example_autoconfig | ||
erase.sh | ||
git_checkout.sh | ||
git_push.sh | ||
readme.md | ||
ubuntu_install.sh |
ITenv Tools - Tool Documentation
This directory contains various utility scripts for server management, disk operations, and git repository management. Each tool is designed for specific infrastructure tasks.
Tools Overview
1. erase.sh
Purpose: Secure disk erasure utility for SSD drives
What it does:
- Detects all SSD drives on the system (excludes traditional HDDs)
- Provides interactive menu to erase specific disks or all detected SSDs
- Handles RAID array detection and cleanup before erasure
- Removes RAID superblocks from partitions
- Securely wipes the first 1GB and last 1MB of selected disks
- Destroys partition tables and filesystem headers
Safety Features:
- Multiple confirmation prompts before destructive operations
- Root privilege verification
- Automatic unmounting of active filesystems
- RAID array stopping before disk erasure
Usage:
sudo ./erase.sh
⚠️ WARNING: This tool permanently destroys all data on selected disks. Use with extreme caution!
2. git_checkout.sh
Purpose: Git repository management for itenv projects
What it does:
- Verifies SSH agent has loaded keys for git authentication
- Checks and configures git user.name and user.email if not set
- Creates the standard directory structure:
/root/code/git.threefold.info/ourworld_web
- Clones or updates two repositories:
itenv_web2
- Main web application repositoryitenv_tools
- Tools and utilities repository
Prerequisites:
- SSH key must be loaded in ssh-agent
- Git must be installed
- Access to git.threefold.info repositories
Usage:
./git_checkout.sh
3. git_push.sh
Purpose: Quick git commit and push utility
What it does:
- Navigates to the parent directory of the tools folder
- Stages all changes (
git add . -A
) - Creates a commit with message "init"
- Pushes changes to the remote repository
Usage:
./git_push.sh
Note: This is a simple automation script for quick commits. For production use, consider more descriptive commit messages.
4. ubuntu_install.sh
Purpose: Automated Ubuntu 24.04 installation for Hetzner dedicated servers
What it does:
- Detects available NVMe drives (requires minimum 2 drives)
- Creates Hetzner installimage configuration for Ubuntu 24.04
- Sets up btrfs filesystem with RAID 1 across two drives
- Configures btrfs subvolumes for better organization:
@
(root filesystem)@home
(/home)@var
(/var)@var/log
(/var/log)@tmp
(/tmp)@opt
(/opt)@srv
(/srv)@snapshots
(/.snapshots)
- Creates post-installation scripts for:
- btrfs optimization and maintenance
- Automatic snapshot management with snapper
- RAID monitoring utilities
Features:
- RAID 1 for data redundancy
- btrfs compression (zstd:3) for space efficiency
- Automated weekly balance and scrub operations
- Snapshot management with configurable retention
Prerequisites:
- Must be run from Hetzner rescue system
- Requires at least 2 NVMe drives
- installimage must be available
Usage:
./ubuntu_install.sh
⚠️ WARNING: This script will completely wipe the selected drives and install a fresh Ubuntu system.
5. example_autoconfig/autoconfig
Purpose: Example configuration file for Hetzner installimage
What it contains:
- Sample configuration for Ubuntu 24.04 installation
- RAID 1 setup with two Samsung NVMe drives
- Standard partition layout:
- 4GB swap partition
- 1024MB /boot partition (ext3)
- Remaining space for root filesystem (ext4)
- Network and hostname configuration examples
- Comments explaining all configuration options
Usage: This file serves as a template and reference for creating custom installimage configurations. Copy and modify as needed for specific server setups.
Directory Structure
itenv_tools/tools/
├── readme.md # This documentation file
├── erase.sh # Disk erasure utility
├── git_checkout.sh # Git repository management
├── git_push.sh # Quick git commit/push
├── ubuntu_install.sh # Ubuntu installation script
└── example_autoconfig/ # Example configurations
└── autoconfig # Sample installimage config
Security Considerations
- erase.sh: Requires root privileges and permanently destroys data
- git_checkout.sh: Requires SSH key access to private repositories
- ubuntu_install.sh: Must be run in Hetzner rescue environment
- All scripts include error handling and safety checks where appropriate
Prerequisites
System Requirements
- Linux environment (tested on Ubuntu/Debian)
- Bash shell
- Root access for disk operations
- Git for repository management
- SSH access for private repositories
For Hetzner Operations
- Hetzner rescue system access
- installimage utility
- Minimum 2 NVMe drives for RAID setup
Support
These tools are designed for infrastructure automation and server management. Ensure you understand the implications of each script before execution, especially those involving disk operations or system installation.