Automate Dify deployment using Ansible for reproducible, scalable installations.
git clone https://github.com/langgenius/dify.git
cd dify/ansible
Create inventory file inventory.ini:
[dify_servers]
dify-server-01 ansible_host=192.168.1.100 ansible_user=ubuntu
[dify_servers:vars]
ansible_python_interpreter=/usr/bin/python3
Edit group_vars/all.yml:
# Domain configuration
dify_domain: "dify.example.com"
dify_console_url: "https://dify.example.com"
# Database credentials
db_username: "dify"
db_password: "your-secure-password"
db_database: "dify"
# Redis credentials
redis_password: "your-secure-password"
# LLM Provider Keys
openai_api_key: "sk-..."
anthropic_api_key: "sk-ant-..."
# Resource limits
api_cpu_limit: "2"
api_memory_limit: "4G"
# Run the deployment playbook
ansible-playbook -i inventory.ini playbook.yml
# With verbose output
ansible-playbook -i inventory.ini playbook.yml -vv
The Ansible playbook performs:
# environments/production.yml
dify_replicas: 3
db_backup_enabled: true
monitoring_enabled: true
# environments/staging.yml
dify_replicas: 1
db_backup_enabled: false
monitoring_enabled: false
# Use external storage
storage_type: "s3"
s3_bucket: "dify-storage"
s3_region: "us-east-1"
s3_access_key: "..."
s3_secret_key: "..."
After deployment, verify services:
# Check service status
ansible dify_servers -a "docker compose ps"
# Check API health
ansible dify_servers -a "curl -s http://localhost:5001/health"
Configure automated backups:
backup_enabled: true
backup_schedule: "0 2 * * *" # Daily at 2 AM
backup_retention_days: 7
backup_destination: "/backup/dify"
Enable monitoring:
monitoring_enabled: true
prometheus_scrape: true
grafana_dashboard: true
alertmanager_enabled: true
ansible-playbook -i inventory.ini playbook.yml --check
ansible-playbook -i inventory.ini playbook.yml --start-at-task="Deploy Services"
# Rollback to previous version
ansible-playbook -i inventory.ini rollback.yml
Any questions?
Feel free to contact us. Find all contact information on our contact page.