- Add production setup scripts for automated deployment - Include monitoring setup and configuration validation - Add legacy setup scripts for various Linux distributions - Implement Bitwarden integration for secure credential management - Add development and production environment setup - Include comprehensive management tools and utilities - Add shell script library with common functions Provides complete automation for setup, deployment, and management of FetchML platform in development and production environments.
2.7 KiB
2.7 KiB
Scripts Directory
This directory contains setup and utility scripts for FetchML.
Production Scripts
setup-prod.sh
Purpose: Automated production setup for Rocky Linux bare metal deployment
Usage: sudo ./scripts/setup-prod.sh [base_path] [user] [group]
What it does:
- Creates system user and groups
- Sets up directory structure (
/data/ml-experiments/*) - Installs dependencies (Go, Podman, Redis)
- Configures GPU support for Podman
- Creates systemd service files
- Sets up log rotation
Example:
sudo ./scripts/setup-prod.sh /data/ml-experiments ml-user ml-group
validate-prod-config.sh
Purpose: Validates production configuration files
Usage: ./scripts/validate-prod-config.sh [api-config] [worker-config]
What it does:
- Checks config file syntax
- Verifies base_path consistency
- Tests Redis connectivity
- Validates Podman setup
- Checks directory permissions
Example:
./scripts/validate-prod-config.sh configs/config-prod.yaml configs/worker-prod.toml
Legacy Setup Scripts (Deprecated)
The following scripts are from earlier iterations and are deprecated in favor of setup-prod.sh:
setup_rocky.sh- Usesetup-prod.shinsteadsetup_ubuntu.sh- Ubuntu support (not primary target)auto_setup.sh- Old automated setup (superseded)setup_common.sh- Common functions (integrated into setup-prod.sh)quick_start.sh- Quick dev setup (use docker-compose on macOS instead)test_tools.sh- Tool testing (integrated into validate-prod-config.sh)
Cleanup Recommendation
These legacy scripts can be removed or archived. The current production setup only needs:
setup-prod.shvalidate-prod-config.sh
Usage Workflow
First-Time Production Setup
# 1. Run production setup
sudo ./scripts/setup-prod.sh
# 2. Copy and configure
sudo cp configs/config-prod.yaml /etc/fetch_ml/config.yaml
sudo cp configs/worker-prod.toml /etc/fetch_ml/worker.toml
sudo vim /etc/fetch_ml/config.yaml # Update API keys, etc.
# 3. Build and install
make prod
sudo make install
# 4. Validate
./scripts/validate-prod-config.sh /etc/fetch_ml/config.yaml /etc/fetch_ml/worker.toml
# 5. Start services
sudo systemctl start fetchml-api fetchml-worker
sudo systemctl enable fetchml-api fetchml-worker
Development Setup (macOS)
# Use docker-compose for local development
docker-compose up -d
# Or run components directly
make dev
./bin/api-server -config configs/config-local.yaml
Script Maintenance
When adding new scripts:
- Add executable permission:
chmod +x scripts/new-script.sh - Add header comment with purpose and usage
- Update this README
- Use consistent error handling and logging